Comment faire pour obtenir RMSE de lm résultat?
Je sais qu'il y a une petite différence entre $sigma
et le concept de racine de l'erreur quadratique moyenne. Donc, je me demande quelle est la manière la plus simple d'obtenir RMSE de lm
fonction dans R?
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 pas faire mon modèle manuellement plus.
Alors, comment puis-je évaluer les RMSE basée sur les coefficients dérivés de lm
?
- vous recommandons fortement de
lm(price ~ carat + color + ..., data=randomData)
: plus facile à lire, travaille avec l'aval des méthodes telles quepredict()
.
Vous devez vous connecter pour publier un commentaire.
Somme résiduelle des carrés:
L'erreur quadratique moyenne:
Racine MSE:
Pearson résiduelle estimée de la variance (retourné par
summary.lm
):Statistiquement, MSE est l'estimateur du maximum de vraisemblance de la variance résiduelle, mais est biaisée (à la baisse). Pearson est le maximum de vraisemblance restreint estimateur de la variance résiduelle, qui est impartiale.
Remarque
x
ety
,c(crossprod(x, y))
est équivalent àsum(x * y)
mais beaucoup plus rapide.c(crossprod(x))
est même plus rapide quesum(x ^ 2)
.sum(x) /length(x)
est également plus rapide quemean(x)
.c
fonction dans votre R session (qui est une mauvaise idée), masquagebase::c
vecteur de concaténation. Voici comment j'ai reproduire ton erreur:c <- function () NULL
et puisc(crossprod(1:10))
drop(crossprd(1:10))
. Ah, désolé pour ça. Peut-être que cette personne est aussi prononcé sur l'autre réponse ici 🙂Pour obtenir la RMSE en une seule ligne, avec juste les fonctions de
base
, je voudrais utiliser:Je pense que les autres réponses sont peut-être incorrects. Le MSE de régression de l'ESS, 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.
Simplement en prenant la moyenne des résidus au carré (comme d'autres réponses ont suggéré) est l'équivalent de la division par n au lieu de (n - k - 1).
Je voudrais calculer 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 est la même que (n - k - 1). Jetez un oeil à cette référence: https://www3.nd.edu/~rwilliam/stats2/l02.pdf