Rの線形回帰で平均二乗誤差の値を取得する方法


20

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 2乗は合計2乗誤差ですか?答えが「いいえ」の場合、複数のR 2乗と複数のR 2乗の意味を説明できます

回答:


25

Rが報告する複数のRの2乗は、決定係数であり、式で与えられます

R2=1SSresSStot.

二乗誤差の合計は(前の回答のおかげで)によって与えられsum(sm$residuals^2)ます。

平均二乗誤差はで与えられmean(sm$residuals^2)ます。これを計算する関数を書くことができます、例えば:

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

5
+1。出力表示されるもののみに基づく別のソリューションはsm$sigma^2 * sm$fstatistic[3]/(1+sum(sm$fstatistic[2:3]))です。つまり、最後から2番目の行からおよび df を読み取り、最後の行でパラメーターの数()をカウントし、ます。58 1 + 18.173581+18.1732×58/(1+1+58)=64.57
whuber

6
最後から2番目は素晴らしい言葉です。
fbt 14

1
いつものように、非常にすっきりする方法は、書き込みにあるmse <- function(sm) mean(sm$residuals^2)
マリウスHofert

4
>平均二乗誤差は、mean(residuals ^ 2)の代わりにANOVAテーブルの残差^ 2 /誤差dfによって与えられるのではありません。後者は平均予測誤差二乗です。理解が不足しているかどうかはわかりません。申し訳ありませんが、コメントを投稿するのに十分な評判ポイントがありません。
SrikanthRaja

1
しかし、user45409が言ったことに同意します。私が学んだことによると、MSE =残差^ 2 /エラーdf。
vtshen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.