标准误差方程

Equation for Standard Error

全部,

我正在尝试找出计算以下回归因子的 std.error 的公式,以及如何使用 mean 和 sd 函数计算它。 (std.error=2.015)。请帮忙。

谢谢。 瑞克

k=5;n=4;
s1=4;s2=8;mu1=75
factor1=as.factor(rep(1:k,n))
sim1=rep(rnorm(k,mu1,s2),n)
sim2=rep(rnorm(k*n,0,s1))
sim=sim1+sim2
options(contrasts=c("contr.sum","contr.poly"))
lm1=lm(sim~factor1)
> summary(lm1)

Call:
lm(formula = sim ~ factor1)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.2234 -2.3561  0.7269  2.9855  7.9084 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   79.513      1.007  78.923  < 2e-16 ***
factor11       6.216      2.015   3.085 0.007545 ** 
factor12      -1.051      2.015  -0.522 0.609399    
factor13       9.101      2.015   4.517 0.000409 ***
factor14      -4.543      2.015  -2.255 0.039534 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.506 on 15 degrees of freedom
Multiple R-squared:  0.7575,    Adjusted R-squared:  0.6928 
F-statistic: 11.71 on 4 and 15 DF,  p-value: 0.0001624

尝试其中任何一个来获取标准错误:

sqrt(sum(resid(lm1)^2)/(length(factor1) - nlevels(factor1)))

sqrt(deviance(lm1)/(length(factor1) - nlevels(factor1)))

summary.lm(lm1)$sigma

library(broom); glance(lm1)$sigma

如果你想要系数的标准误差,那么如果 se 是以上任何一个,那么:

sqrt(diag(vcov(lm1)))

se * sqrt(diag(solve(crossprod(model.matrix(lm1)))))

se * sqrt(diag(summary.lm(lm1)$cov))

coef(summary(lm1))[, 2]

library(broom); tidy(lm1)$std.error

请注意,(1) 由于问题未使用 set.seed 将随机数生成器设置为已知状态,因此数据不可重现,并且 (2) 如评论中所述 summary.lm源代码将详细说明它是如何做到的,这可能与我们在这里展示的不完全相同,但除了数字错误外是等效的。