Данные вашего примера:
df = structure(list(bweight = c(2974L, 3270L, 2620L, 3751L, 3200L,
3673L), gestwks = c(38.5200004577637, NA, 38.1500015258789, 39.7999992370605,
38.8899993896484, 40.9700012207031), hyp = c(0L, 0L, 0L, 0L,
1L, 0L), sex = structure(c(1L, 2L, 1L, 2L, 2L, 1L), .Label = c("female",
"male"), class = "factor"), male = c(0, 1, 0, 1, 1, 0)), row.names = c("1",
"2", "3", "4", "5", "6"), class = "data.frame")
df$male = as.numeric(df$sex=="male")
lm2 = lm(bweight ~ gestwks + hyp + male,data=df)
Вам нужна матрица дисперсии-ковариации:
vcov(lm2)
(Intercept) gestwks hyp male
(Intercept) 8615153.6 -219476.110 -199723.227 119995.418
gestwks -219476.1 5596.976 5093.248 -3283.549
hyp -199723.2 5093.248 57215.841 -29278.523
male 119995.4 -3283.549 -29278.523 36980.334
Диагональ - это дисперсия каждой оценки, и если вы возьмете квадрат root, вы получите стандартную ошибку, показанную с краткой информацией:
sqrt(diag(vcov(lm2)))
(Intercept) gestwks hyp male
2935.15819 74.81294 239.19833 192.30271
summary(lm2)
Call:
lm(formula = bweight ~ gestwks + hyp + male, data = df)
Residuals:
1 3 4 5 6
1.218e+02 -1.058e+02 0.000e+00 7.105e-15 -1.598e+01
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -10304.13 2935.16 -3.511 0.177
gestwks 341.55 74.81 4.565 0.137
hyp -240.19 239.20 -1.004 0.499
male 461.63 192.30 2.401 0.251