web-dev-qa-db-fra.com

Trouver l'erreur quadratique moyenne?

J'ai produit un jeu de données linéaire et utilisé lm() pour adapter un modèle à ce jeu de données. J'essaie maintenant de trouver le MSE en utilisant mse()

Je connais la formule pour MSE mais j'essaie d'utiliser cette fonction. Quelle serait la bonne façon de le faire? J'ai jeté un œil à la documentation, mais je suis soit idiote, soit simplement destinée aux personnes qui savent réellement ce qu'elles font.

library(hydroGOF)

x.linear <- seq(0, 200, by=1) # x data
error.linear <- rnorm(n=length(x.linear), mean=0, sd=1) # Error (0, 1)
y.linear <- x.linear + error.linear  # y data

training.data <- data.frame(x.linear, y.linear)
training.model <- lm(training.data)
training.mse <- mse(training.model, training.data)

plot(training.data)

mse() a besoin de deux trames de données. Je ne suis pas sûr de savoir comment obtenir une trame de données à partir de lm(). Suis-je même sur la bonne voie pour trouver un MSE approprié pour mes données?

4
KingDan

Essaye ça: 

mean((training.data - predict(training.model))^2)
#[1] 0.4467098
9
Sandipan Dey

Vous pouvez également utiliser le code mentionné ci-dessous qui est très propre pour obtenir une erreur quadratique moyenne 

install.packages("Metrics")
library(Metrics)
mse(actual, predicted)

Le premier ensemble de données qui est réel: training.data Le deuxième argument est celui que vous prédisez comme: 

pd <- predict(training.model , training.data) mse(training.data$,pd)

On dirait que vous n’avez pas encore fait de prédiction, alors commencez par prédire les données en fonction de votre modèle, puis calculez mse.

4
Vineet

Vous pouvez utiliser le composant residu composant de la sortie du modèle lm pour trouver mse de cette manière:

mse = mean(training.model$residuals^2)
3
Namrata Tolani