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?
Essaye ça:
mean((training.data - predict(training.model))^2)
#[1] 0.4467098
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.
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)