Je cherche à expliquer (visuellement) la corrélation linéaire simple aux étudiants de première année.
La manière classique de visualiser serait de donner un nuage de points Y ~ X avec une droite de régression.
Récemment, j'ai eu l'idée d'étendre ce type de graphisme en ajoutant à l'intrigue 3 images supplémentaires, me laissant avec: l'intrigue de y ~ 1, puis de y ~ x, resid (y ~ x) ~ x et enfin des résidus (y ~ x) ~ 1 (centré sur la moyenne)
Voici un exemple d'une telle visualisation:
Et le code R pour le produire:
set.seed(345)
x <- runif(50) * 10
y <- x +rnorm(50)
layout(matrix(c(1,2,2,2,2,3 ,3,3,3,4), 1,10))
plot(y~rep(1, length(y)), axes = F, xlab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)
plot(y~x, ylab = "", )
abline(lm(y~x), col = 2, lwd = 2)
plot(c(residuals(lm(y~x)) + mean(y))~x, ylab = "", ylim = range(y))
abline(h =mean(y), col = 2, lwd = 2)
plot(c(residuals(lm(y~x)) + mean(y))~rep(1, length(y)), axes = F, xlab = "", ylab = "", ylim = range(y))
points(1,mean(y), col = 2, pch = 19, cex = 2)
Ce qui m'amène à ma question: j'apprécierais toute suggestion sur la façon dont ce graphique peut être amélioré (soit avec du texte, des marques ou tout autre type de visualisations pertinentes). Ajouter du code R pertinent sera également une bonne chose.
Une direction consiste à ajouter des informations sur le R ^ 2 (soit par texte, soit en ajoutant des lignes présentant l'ampleur de la variance avant et après l'introduction de x) Une autre option consiste à mettre en évidence un point et à montrer comment il est "meilleur expliqué "grâce à la droite de régression. Toute contribution sera appréciée.
la source
require(mlbench) ; cor( mlbench.smiley()$x ); plot(mlbench.smiley()$x)
Réponses:
Voici quelques suggestions (sur votre intrigue, pas sur la façon dont j'illustrerais l'analyse de corrélation / régression):
rug()
;À noter, ce graphique suppose que X et Y sont des données non appariées, sinon je m'en tiendrai à un tracé de Bland-Altman ( contre ), en plus du nuage de points.( X + Y ) / 2(X−Y) (X+Y)/2
la source
Ne répondant pas à votre question exacte, mais les éléments suivants pourraient être intéressants en visualisant un écueil possible de corrélations linéaires basé sur une réponse de stackoveflow :
La réponse de @Gavin Simpson et @ bill_080 comprend également de jolis tracés de corrélation dans le même sujet.
la source
J'aurais deux graphiques à deux panneaux, les deux ont le graphique xy à gauche et un histogramme à droite. Dans le premier tracé, une ligne horizontale est placée à la moyenne de y et les lignes s'étendent de ce point à chaque point, représentant les résidus des valeurs y de la moyenne. L'histogramme avec cela trace simplement ces résidus. Ensuite, dans la paire suivante, le tracé xy contient une ligne représentant l'ajustement linéaire et à nouveau des lignes verticales représentant les résidus, qui sont représentés dans un histogramme à droite. Gardez l'axe x des histogrammes constant pour mettre en évidence le passage à des valeurs inférieures dans l'ajustement linéaire par rapport à l'ajustement moyen.
la source
Je pense que ce que vous proposez est bon, mais je le ferais dans trois exemples différents
1) X et Y sont complètement indépendants. Supprimez simplement "x" du code r qui génère y (y1 <-rnorm (50))
2) L'exemple que vous avez publié (y2 <- x + rnorm (50))
3) Les X sont Y sont la même variable. Supprimez simplement "rnorm (50)" du code r qui génère y (y3 <-x)
Cela montrerait plus explicitement comment l'augmentation de la corrélation diminue la variabilité des résidus. Il vous suffit de vous assurer que l'axe vertical ne change pas avec chaque tracé, ce qui peut se produire si vous utilisez la mise à l'échelle par défaut.
Vous pouvez donc comparer trois graphiques r1 vs x, r2 vs x et r3 vs x. J'utilise "r" pour indiquer les résidus de l'ajustement en utilisant respectivement y1, y2 et y3.
Mes compétences R en traçage sont assez désespérées, donc je ne peux pas offrir beaucoup d'aide ici.
la source