当我使用R运行lm()回归时,我从summary()获得“残差标准误差”。为什么每个观察值只有一个残留标准误差值而不是残留标准误差列表?
summary()中显示的该值的含义是什么?summary()中显示的“残留标准误差”是否为每个观察值的残留标准误差列表的平均值?谢谢。
Residual standard error: 0.8498 on 44848 degrees of freedom
(7940 observations deleted due to missingness)
Multiple R-squared: 0.4377, Adjusted R-squared: 0.4375
Run Code Online (Sandbox Code Playgroud)
残差标准误差是线性模型残差变异性的度量。它的平方用于F检验的分母,用于评估模型的拟合度。可以使用直接检索sigma
fm <- lm(mpg ~., mtcars)
sigma(fm)
## [1] 2.650197
Run Code Online (Sandbox Code Playgroud)
或按以下方式得出(假设所有系数都不为NA):
sqrt(deviance(fm) / (nobs(fm) - length(coef(fm))))
## [1] 2.650197
Run Code Online (Sandbox Code Playgroud)
这里deviance(fm)给出了残差的平方和:
deviance(fm)
## [1] 147.4944
sum(resid(fm)^2) # same
## [1] 147.4944
Run Code Online (Sandbox Code Playgroud)
残留标准误差还显示在summary:
summary(fm)
# ...snip...
## Residual standard error: 2.65 on 21 degrees of freedom
## Multiple R-squared: 0.869, Adjusted R-squared: 0.8066
## F-statistic: 13.93 on 10 and 21 DF, p-value: 3.793e-07
Run Code Online (Sandbox Code Playgroud)
F统计量将拟合值(在分子中)的变异性与残差(在分母中)的变异性进行比较。对于残差部分的可变性,它使用残差标准误差sigma(fm)平方。对于具有截距的模型,可以如下计算。
# F value shown in summary
num <- sum( (fitted(fm) - mean(fitted(fm)))^2 ) / (length(coef(fm)) - 1)
den <- sigma(fm)^2
num / den
# [1] 13.93246
Run Code Online (Sandbox Code Playgroud)
在仅截距模型的特殊情况下,残差标准误差等于残差的标准偏差,但通常这些不相等。
# for intercept only model residual standard error equals sd(residuals)
fm0 <- lm(mpg ~ 1, mtcars)
sigma(fm0)
## [1] 6.026948
sd(resid(fm0))
## [1] 6.026948
Run Code Online (Sandbox Code Playgroud)