R

时间:2019-12-11 01:04:38

标签: r

我有下面的数据框,然后从这里根据线性回归模型的系数的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)

1 个答案:

答案 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