wake-up-neo.net

Suche nach dem mittleren quadratischen Fehler?

Ich habe einen linearen Datensatz erstellt und lm() verwendet, um ein Modell an diesen Datensatz anzupassen. Ich versuche jetzt, die MSE mithilfe von mse() zu finden.

Ich kenne die Formel für MSE, aber ich versuche, diese Funktion zu verwenden. Was wäre der richtige Weg, dies zu tun? Ich habe mir die Dokumentation angesehen, aber ich bin entweder dumm oder nur für Leute, die wissen, was sie tun.

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() benötigt zwei Datenrahmen. Ich bin nicht sicher, wie man einen Datenrahmen aus lm() bekommt. Bin ich sogar auf dem richtigen Weg, um eine korrekte MSE für meine Daten zu finden?

4
KingDan

Versuche dies: 

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

Sie können auch den unten genannten Code verwenden, der sehr sauber ist, um einen mittleren quadratischen Fehler zu erhalten 

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

Der erste Datensatz, für den es sich um einen tatsächlichen Datensatz handelt, ist training.data Das zweite Argument ist das, das Sie wie folgt vorhersagen werden: 

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

Anscheinend haben Sie noch keine Prognose erstellt, also prognostizieren Sie zuerst die Daten basierend auf Ihrem Modell und berechnen Sie dann mse

4
Vineet

Sie können die Komponente residual aus der Modellausgabe von lm verwenden, um mse auf folgende Weise zu finden:

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

Hinweis: Wenn Sie aus einem anderen Programm stammen (wie SAS ), wird der Mittelwert aus der Summe und den Freiheitsgraden des Rests berechnet. Ich empfehle dasselbe zu tun, wenn Sie eine genauere Schätzung des Fehlers wünschen.

mse = sum(training.model$residuals^2)/training.model$df.residual

Ich fand dies, als ich versuchte herauszufinden, warum mean(my_model$residuals^2) in R anders war als das MSE in SAS .

0
Carlos Mercado