如何在R中的线性回归中获得均方误差的值

机器算法验证 r 回归 错误
2022-01-25 11:49:03

对于通过R函数得到的线性回归模型lm,我想知道是否可以通过命令获得均方误差。

我有一个示例的以下输出:

> lm <- lm(MuscleMAss~Age,data)
> sm<-summary(lm)
> sm

Call:
lm(formula = MuscleMAss ~ Age, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-16.1368  -6.1968  -0.5969   6.7607  23.4731 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 156.3466     5.5123   28.36   <2e-16 ***
Age          -1.1900     0.0902  -13.19   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 8.173 on 58 degrees of freedom
Multiple R-squared:  0.7501,    Adjusted R-squared:  0.7458 
F-statistic: 174.1 on 1 and 58 DF,  p-value: < 2.2e-16

多重 R 平方与误差平方和相同吗?如果答案是否定的,有人可以解释多重 R 平方的含义吗?

2个回答

R 报告的多重 R 平方是决定系数 ,由公式给出

R2=1SSresSStot.

误差平方和由 给出(感谢先前的答案sum(sm$residuals^2)

均方误差由 给出mean(sm$residuals^2)您可以编写一个函数来计算它,例如:

mse <- function(sm) 
    mean(sm$residuals^2)

另一种简单的方法是使用anova函数。

您可以通过以下方式获得 MSEanova(model)['Residuals', 'Mean Sq']

> print(sprintf("MSE=%0.2f", sum(lmfit$residuals^2)/lmfit$df.residual))
[1] "MSE=0.27"
> print(sprintf("MSE=%0.2f", anova(lmfit)['Residuals', 'Mean Sq']))
[1] "MSE=0.27"