我想知道如何手动计算当我在 lm 对象上调用 R 中的 vcov() 函数时返回的内容,即方差-协方差矩阵。
对角线条目非常简单,只需取 st。每个参数的误差并将其平方。例如,对于下面的估计,方差-协方差矩阵的条目 (z,z) 只需通过取 z 的估计系数的标准误差 (0.1096658) 并将其平方来计算。但是非对角线条目呢?有人可以提供代码来手动计算这些吗?
# Minimal working example code
library(data.table)
df <- data.table(y = runif(100, 0, 100),
x = runif(100, 0, 100),
z = runif(100, 0, 100))
coef(lm(y ~ x + z, df)) # coefficients
coef(summary(lm(y ~ x + z, df)))[,2] # standard errors
vcov(lm(y ~ x + z, df)) # variance-covariance matrix
# Example result
coef(lm(y ~ x + z, df))
(Intercept) x z
54.44460066 0.03052479 -0.11197309
coef(summary(lm(y ~ x + z, df)))[,2]
(Intercept) x z
8.4668880 0.1077858 0.1096658
vcov(lm(y ~ x + z, df))
(Intercept) x z
(Intercept) 71.6881931 -0.576781121 -0.585380616
x -0.5767811 0.011617776 -0.001059506
z -0.5853806 -0.001059506 0.012026594