webentwicklung-frage-antwort-db.com.de

Wie erhält man RMSE aus lm Ergebnis?

Ich weiß, dass es einen kleinen Unterschied zwischen $sigma und dem Konzept von root mean squared error gibt. Ich frage mich also, was ist der beste Weg, um RMSE aus lm-Funktion inRzu erhalten?

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

enthält 24 Koeffizienten, und ich kann mein Modell nicht mehr manuell erstellen. __ Wie kann ich die RMSE basierend auf den Koeffizienten von lm bewerten? 

6

Restsumme der Quadrate:

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

Mittlere quadratische Fehler:

MSE <- RSS / length(res$residuals)

Wurzel-MSE:

RMSE <- sqrt(MSE)

Pearson geschätzte Residualvarianz (wie von summary.lm zurückgegeben):

sig2 <- RSS / res$df.residual

Statistisch gesehen ist MSE der Maximalwahrscheinlichkeitsschätzer für die Restvarianz, ist jedoch voreingenommen (nach unten). Der Pearson-Wert ist der eingeschränkte Maximalwahrscheinlichkeitsschätzer der Restvarianz, der unverzerrt ist.


Anmerkung

  • Wenn zwei Vektoren x und y gegeben sind, entspricht c(crossprod(x, y))sum(x * y), aber viel schneller . c(crossprod(x)) ist ebenfalls schneller als sum(x ^ 2).
  • sum(x) / length(x) ist auch schneller als mean(x).
16
李哲源

Um die RMSE in einer Zeile mit Funktionen von base zu erhalten, würde ich Folgendes verwenden:

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

Ich denke, die anderen Antworten könnten falsch sein. Die MSE der Regression ist die SSE geteilt durch (n - k - 1), wobei n die Anzahl der Datenpunkte und k die Anzahl der Modellparameter ist. 

Wenn Sie einfach den Mittelwert der Residuen im Quadrat (wie andere Antworten vorgeschlagen haben) verwenden, entspricht dies der Division durch n anstelle von (n - k - 1). 

Ich würde RMSE von sqrt(sum(res$residuals^2) / res$df) berechnen. 

Die Menge im Nenner res$df gibt Ihnen die Freiheitsgrade an, die gleich sind wie (n - k - 1). Schauen Sie sich dies als Referenz an: https://www3.nd.edu/~rwilliam/stats2/l02.pdf

1
Arthur