web-dev-qa-db-fra.com

Comment obtenir RMSE sur le résultat lm?

Je sais qu'il y a une petite différence entre $sigma et le concept de erreur moyenne au carré . Donc, je me demande quel est le moyen le plus simple d’obtenir RMSE à partir de lm fonctionne dansR?

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))

contient 24 coefficient, et je ne peux plus faire mon modèle manuellement ..__ Alors, comment puis-je évaluer le RMSE sur la base de coefficients drived de lm

6
Kamyar Parastesh

Somme résiduelle de carrés:

RSS <- c(crossprod(res$residuals))

Erreur quadratique moyenne:

MSE <- RSS / length(res$residuals)

Racine MSE:

RMSE <- sqrt(MSE)

Variance résiduelle estimée de Pearson (telle que renvoyée par summary.lm):

sig2 <- RSS / res$df.residual

Statistiquement, la MSE est l’estimateur du maximum de vraisemblance de la variance résiduelle, mais elle est biaisée (à la baisse). Celui de Pearson est l’estimateur restreint du maximum de vraisemblance de la variance résiduelle, qui est non biaisé.


Remarque

  • Étant donné deux vecteurs x et y, c(crossprod(x, y)) est équivalent à sum(x * y) mais beaucoup plus rapide . c(crossprod(x)) est également plus rapide que sum(x ^ 2).
  • sum(x) / length(x) est également plus rapide que mean(x).
16
李哲源

Pour obtenir le RMSE sur une seule ligne, avec uniquement les fonctions de base, j'utiliserais:

sqrt(mean(res$residuals^2))
4
comshak

Je pense que les autres réponses pourraient être incorrectes. Le MSE de régression est le SSE divisé par (n - k - 1), où n est le nombre de points de données et k est le nombre de paramètres du modèle. 

Prendre simplement la moyenne des résidus au carré (comme d'autres réponses l'ont suggéré) équivaut à diviser par n au lieu de (n - k - 1). 

Je calculerais RMSE par sqrt(sum(res$residuals^2) / res$df)

La quantité dans le dénominateur res$df vous donne les degrés de liberté, qui sont les mêmes que (n - k - 1). Jetez un oeil à ceci pour référence: https://www3.nd.edu/~rwilliam/stats2/l02.pdf

1
Arthur