$sigma
と二乗平均平方根誤差の概念にはわずかな違いがあることは知っています。したがって、_[〜#〜] r [〜#〜]でlm
関数からRMSEを取得する最も簡単な方法は何ですか?
res<-lm(randomData$price ~randomData$carat+
randomData$cut+randomData$color+
randomData$clarity+randomData$depth+
randomData$table+randomData$x+
randomData$y+randomData$z)
length(coefficients(res))
には24個の係数が含まれており、手動でモデルを作成することはできなくなりました。では、lm
から導出された係数に基づいてRMSEを評価するにはどうすればよいですか?
残差平方和:
_RSS <- c(crossprod(res$residuals))
_
平均二乗誤差:
_MSE <- RSS / length(res$residuals)
_
ルートMSE:
_RMSE <- sqrt(MSE)
_
ピアソンは、残差分散を推定しました(_summary.lm
_によって返されます):
_sig2 <- RSS / res$df.residual
_
統計的に、MSEは残差分散の最尤推定量ですが、バイアスされています(下向き)。ピアソンのものは、偏りのない残差分散の制限付き最尤推定量です。
備考
RMSEを1行で取得するには、base
の関数のみを使用して、次のようにします。
sqrt(mean(res$residuals^2))
他の答えは間違っているかもしれません。回帰のMSEは、SSEを(n-k-1)で割ったものです。ここでnはデータポイントの数であり、 kはモデルパラメータの数です。
(他の回答が示唆しているように)残差の二乗の平均を取ることは、(n-k-1)ではなくnで除算することと同じです。
RMSEはsqrt(sum(res$residuals^2) / res$df)
で計算します。
分母の数量res$df
は自由度を与えます。これは(n-k-1)と同じです。参照のためにこれを見てください: https://www3.nd.edu/~rwilliam/stats2/l02.pdf
するだけ
sigma(res)
あなたはそれを手に入れました