我想知道如何实际计算估计系数的协方差矩阵。该代码使用某种 QR 分解和反转。我有一个想法,它会是这样的:
有人可以解释代码吗?
p <- object$rank
p1 <- 1L:p
Qr <- qr.lm(object)
covmat.unscaled <- chol2inv(Qr$qr[p1, p1, drop = FALSE])
covmat <- dispersion * covmat.unscaled
我想知道如何实际计算估计系数的协方差矩阵。该代码使用某种 QR 分解和反转。我有一个想法,它会是这样的:
有人可以解释代码吗?
p <- object$rank
p1 <- 1L:p
Qr <- qr.lm(object)
covmat.unscaled <- chol2inv(Qr$qr[p1, p1, drop = FALSE])
covmat <- dispersion * covmat.unscaled
?chol2inv
说:
从 Choleski 分解中反转对称的正定方阵。等效地,从 X 的 QR 分解的 (R 部分) 计算 (X'X)^(-1)。
如果您想更深入地研究数字:
这是 LAPACK 例程“DPOTRI”的接口
DPOTRI的文档说:
DPOTRI 使用 Cholesky 分解或由 DPOTRF 计算的
A = U**T*U
A =计算实对称正定矩阵 A 的逆。L*L**T
[这里**T
表示转置]
关键是一旦你有了分量,你就不需要取叉积然后反演——你可以更容易地直接计算反演。
因此,chol2inv(Qr$qr[p1, p1, drop = FALSE])
计算,其中是来自 QR 分解的上三角矩阵.