井出草平の研究ノート

Rで平均二乗誤差(MSE)を計算する方法[R]

www.statology.org

モデルの予測精度を測定するために使用される最も一般的な測定基準の1つはMSEで、平均二乗誤差の略だ。次のように計算される:

 \operatorname{MSE}=\frac{1}{n} \sum_{i=1}^n \left(Y_i-\hat{Y_i}\right)^{2}

  • Σ - "合計 "を意味する記号
  • n - サンプルサイズ
  •  Y_i - 実際のデータ値
  •  \hat{Y}_i - 予測データ値

MSEの値が小さいほど、モデルはより正確に値を予測できる。

RでMSEを計算する方法 データの形式にもよるが、Rで回帰モデルのMSEを計算するには、2つの簡単な方法がある。

方法1: 回帰モデルからMSEを計算する

あるシナリオでは、適合された回帰モデルがあって、単純にそのモデルのMSEを計算したいかもしれない。たとえば、次のような回帰モデルがあるとする:

#mtcarsデータセットをロードする
data(mtcars)

#回帰モデルのフィット
model <- lm(mpg~disp+hp, data=mtcars)

#モデルの要約を得る
model_summ <-summary(model)

このモデルのMSEを計算するには、以下の式を使用する:

#MSE を計算する
mean(model_summ$residuals^2)

[1] 8.85917

これにより、MSEは8.85917であることがわかる。

方法2:予測値と実績値のリストからMSEを計算する

別のシナリオでは、単純に予測値と実際値のリストがあるかもしれない。例えば:

#実績値の列と予測値の列を持つデータフレームを作成する。
data <- data.frame(pred = predict(model), actual = mtcars$mpg)

#最初の6行のデータを見る
head(data)

結果。

                      pred actual
Mazda RX4         23.14809   21.0
Mazda RX4 Wag     23.14809   21.0
Datsun 710        25.14838   22.8
Hornet 4 Drive    20.17416   21.4
Hornet Sportabout 15.46423   18.7
Valiant           21.29978   18.1

この場合、以下の式を使ってMSEを計算することができる:

#MSEを計算する
mean((data$actual - data$pred)^2)

[1] 8.85917

この結果、MSEは8.85917となり、前の方法で計算したMSEと一致した。