使用奇异值分解从线性回归模型计算方差协方差矩阵

机器算法验证 r 回归
2022-03-16 11:42:00

我有一个 p 回归量、n 个观察值的设计矩阵,并且我正在尝试计算参数的样本方差 - 协方差矩阵。我正在尝试使用 svd 直接计算它。

我正在使用 R,当我采用设计矩阵的 svd 时,我得到三个组件:一个矩阵U这是n×p, 一个矩阵D这是1×3(可能是特征值)和一个矩阵V这是3×3. 我对角化了D,使其成为3×3非对角线为 0 的矩阵。

假设协方差的公式是:VD2V,但是,矩阵不匹配,甚至不接近 R 的内置函数,vcov有没有人有任何建议/参考?我承认我在这方面有点不熟练。

1个回答

首先,回想一下,在线性回归模型的多元正态性假设下,我们有

β^N(β,σ2(XTX)1).

现在,如果X=UDVT其中右侧是 X 的 SVD,那么我们得到XTX=VDUTUDV=VD2VT. 因此,

(XTX)1=VD2VT.

我们仍然缺少方差的估计,即

σ^2=1np(yTyβ^TXTy).

虽然我还没有检查,但希望vcov返回σ^2VD2VT.

注意:你写的VD2VT,即XTX,但我们需要方差-协方差矩阵的逆矩阵。另请注意,在R, 做这个计算你需要做

vcov.matrix <- var.est * (v %*% d^(-2) %*% t(v))

观察到我们使用矩阵乘法%*%而不是*. var.est以上是噪声方差的估计。

(另外,我做了以下假设X是满秩和np自始至终。如果不是这种情况,则必须对上述内容进行少量修改。)