Beginnen Sie mit der Grundidee der Variation. Ihr Anfangsmodell ist die Summe der quadratischen Abweichungen vom Mittelwert. Der R ^ 2-Wert ist der Anteil dieser Variation, der durch die Verwendung eines alternativen Modells berücksichtigt wird. Beispielsweise gibt R-Quadrat an, wie viel von der Variation in Y Sie durch Aufsummieren der quadratischen Abstände von einer Regressionslinie anstelle des Mittelwerts entfernen können.
Ich denke, dies ist vollkommen klar, wenn wir an das einfache Regressionsproblem denken, das herausgearbeitet wurde. Stellen Sie sich ein typisches Streudiagramm vor, in dem Sie einen Prädiktor X entlang der horizontalen Achse und eine Antwort Y entlang der vertikalen Achse haben.
Der Mittelwert ist eine horizontale Linie auf dem Plot, bei der Y konstant ist. Die Gesamtvariation in Y ist die Summe der quadratischen Differenzen zwischen dem Mittelwert von Y und jedem einzelnen Datenpunkt. Es ist der Abstand zwischen der Mittellinie und jedem einzelnen Punkt, der quadriert und aufsummiert wird.
Sie können auch ein anderes Maß für die Variabilität berechnen, nachdem Sie die Regressionsgerade aus dem Modell erhalten haben. Dies ist der Unterschied zwischen jedem Y-Punkt und der Regressionsgeraden. Anstatt jedes Quadrat (Y - der Mittelwert) erhalten wir ein Quadrat (Y - der Punkt auf der Regressionsgeraden).
Wenn die Regressionslinie alles andere als horizontal ist, erhalten wir weniger Gesamtentfernung, wenn wir diese angepasste Regressionslinie anstelle des Mittelwerts verwenden - das heißt, es gibt weniger ungeklärte Abweichungen. Das Verhältnis zwischen der erklärten zusätzlichen Variante und der ursprünglichen Variante ist Ihr R ^ 2. Es ist der Anteil der ursprünglichen Variation in Ihrer Antwort, der durch Anpassen dieser Regressionslinie erklärt wird.
Hier ist ein R-Code für ein Diagramm mit dem Mittelwert, der Regressionslinie und Segmenten von der Regressionslinie zu jedem Punkt, um die Visualisierung zu erleichtern:
library(ggplot2)
data(faithful)
plotdata <- aggregate( eruptions ~ waiting , data = faithful, FUN = mean)
linefit1 <- lm(eruptions ~ waiting, data = plotdata)
plotdata$expected <- predict(linefit1)
plotdata$sign <- residuals(linefit1) > 0
p <- ggplot(plotdata, aes(y=eruptions, x=waiting, xend=waiting, yend=expected) )
p + geom_point(shape = 1, size = 3) +
geom_smooth(method=lm, se=FALSE) +
geom_segment(aes(y=eruptions, x=waiting, xend=waiting, yend=expected, colour = sign),
data = plotdata) +
theme(legend.position="none") +
geom_hline(yintercept = mean(plotdata$eruptions), size = 1)