R函数summary.glm如何计算glm模型的协方差矩阵?

机器算法验证 r 回归 协方差
2022-03-28 19:49:37

我想知道如何实际计算估计系数的协方差矩阵。该代码使用某种 QR 分解和反转。我有一个想法,它会是这样的:

(XX)1=[(QR)QR]1=(RR)1=Σ

有人可以解释代码吗?

p <- object$rank    
p1 <- 1L:p
Qr <- qr.lm(object)
covmat.unscaled <- chol2inv(Qr$qr[p1, p1, drop = FALSE])
covmat <- dispersion * covmat.unscaled
2个回答

几个月前我对此感到困惑。在阅读了一些材料后,我对这个问题有所了解。但我不确定以下内容是否正确。

假设响应的分布是一个指数族, ,是规范链接,是分布的色散参数。YXTX>0p(Y|η)exp(ϕ1ηTT(Y)A(η)+B(Y))η=g(E(Y|X))=Xβgϕ

拟合 GLM 使用 MLE,我们有用于 MLE 的 Wald 型 CI。方差-协方差矩阵是这里是一个带权重的对角矩阵。方差-协方差矩阵是I(β^)1I(β^)=E(2β2logp(Y|η)|β^)=2β2A(Xβ)|β^=XT(2η2A(η)|η^)X=XTWXW(XTWX)1

编辑:更简单的方法是使用I(β)=(dηdβ)TI(η)dηdβ

参考:

指数族

费舍尔信息

?chol2inv说:

从 Choleski 分解中反转对称的正定方阵。等效地,从 X 的 QR 分解的 (R 部分) 计算 (X'X)^(-1)。

如果您想更深入地研究数字:

这是 LAPACK 例程“DPOTRI”的接口

DPOTRI的文档说:

DPOTRI 使用 Cholesky 分解或由 DPOTRF 计算的A = U**T*UA =计算实对称正定矩阵 A 的逆。L*L**T[这里**T表示转置]

关键是一旦你有了分量,你就不需要取叉积然后反演——你可以更容易地直接计算反演。R

因此,chol2inv(Qr$qr[p1, p1, drop = FALSE])计算,其中是来自 QR 分解的上三角矩阵.(RR)1=(XWX)1RQR(WX)