Commencez avec l'idée de base de la variation. Votre modèle de départ est la somme des écarts au carré de la moyenne. La valeur R ^ 2 est la proportion de cette variation qui est prise en compte en utilisant un modèle alternatif. Par exemple, le R au carré vous indique la part de la variation de Y dont vous pouvez vous débarrasser en additionnant les distances au carré d'une ligne de régression, plutôt que la moyenne.
Je pense que cela est parfaitement clair si nous pensons au problème de régression simple tracé. Considérons un nuage de points typique où vous avez un prédicteur X le long de l'axe horizontal et une réponse Y le long de l'axe vertical.
La moyenne est une ligne horizontale sur le graphique où Y est constant. La variation totale de Y est la somme des différences au carré entre la moyenne de Y et chaque point de données individuel. C'est la distance entre la ligne moyenne et chaque point individuel au carré et additionné.
Vous pouvez également calculer une autre mesure de variabilité après avoir obtenu la ligne de régression du modèle. Il s'agit de la différence entre chaque point Y et la droite de régression. Plutôt que chaque (Y - la moyenne) au carré, nous obtenons (Y - le point sur la droite de régression) au carré.
Si la ligne de régression est tout sauf horizontale, nous obtiendrons moins de distance totale lorsque nous utiliserons cette ligne de régression ajustée plutôt que la moyenne - c'est-à-dire qu'il y a moins de variation inexpliquée. Le rapport entre la variation supplémentaire expliquée et la variation d'origine est votre R ^ 2. C'est la proportion de la variation d'origine de votre réponse qui s'explique par l'ajustement de cette droite de régression.
Voici un code R pour un graphique avec la moyenne, la ligne de régression et les segments de la ligne de régression à chaque point pour aider à visualiser:
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)