我有下面的数据框,然后从这里根据线性回归模型的系数的beta计算矩阵b。如何在R或s^2_b
中创建方差-协方差矩阵?
y <- c(42, 33, 75, 28, 91, 55)
int <- c(1, 1, 1, 1, 1, 1)
x1 <- c(7, 4, 16, 3, 21, 8)
x2 <- c(33, 41, 7, 49, 5, 31)
df <- data.frame(y, x1, x2)
mod1 <- lm(y ~ x1 + x2, data = df)
# b
iint <- summary(mod1)$coefficients[[1]]
xx1 <- summary(mod1)$coefficients[[2]]
xx2 <- summary(mod1)$coefficients[[3]]
b <- matrix(c(iint, xx1, xx2), nrow=3)
# matrices of x and y
Y <- matrix(df$y)
X <- matrix(c(1, 1, 1, 1, 1, 1, 7, 4, 16, 3, 21, 8, 33, 41, 7, 49, 5, 31), nrow=6)
答案 0 :(得分:2)
我们可以使用vcov
来获取方差-协方差矩阵
vcov(mod1)
也可以手动计算
all.equal(vcov(mod1),
solve(t(X) %*% X) * sum(mod1$residuals^2)/(nrow(df) - ncol(df) + 1 -1),
check.attributes = FALSE)
# [1] TRUE