Estoy buscando cómo (visualmente) explicar una correlación lineal simple a los estudiantes de primer año.
La forma clásica de visualizar sería dar un diagrama de dispersión Y ~ X con una línea de regresión recta.
Recientemente, tuve la idea de extender este tipo de gráficos agregando al gráfico 3 imágenes más, dejándome con: el diagrama de dispersión de y ~ 1, luego de y ~ x, resid (y ~ x) ~ x y finalmente de residuos (y ~ x) ~ 1 (centrado en la media)
Aquí hay un ejemplo de tal visualización:
Y el código R para producirlo:
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)
Lo que me lleva a mi pregunta: agradecería cualquier sugerencia sobre cómo se puede mejorar este gráfico (ya sea con texto, marcas o cualquier otro tipo de visualizaciones relevantes). Agregar código R relevante también será bueno.
Una dirección es agregar alguna información de R ^ 2 (ya sea por texto o de alguna manera agregando líneas que presenten la magnitud de la varianza antes y después de la introducción de x) Otra opción es resaltar un punto y mostrar cómo es "mejor" explicó "gracias a la línea de regresión. Cualquier contribucion sera apreciada.
fuente
require(mlbench) ; cor( mlbench.smiley()$x ); plot(mlbench.smiley()$x)
Respuestas:
Aquí hay algunas sugerencias (sobre su trama, no sobre cómo ilustraría el análisis de correlación / regresión):
rug()
;Cabe destacar que este gráfico asume que X e Y son datos no emparejados, de lo contrario me quedaría con un gráfico de Bland-Altman ( contra ), además del diagrama de dispersión.( X + Y ) / 2(X−Y) (X+Y)/2
fuente
No responde a su pregunta exacta, pero los siguientes podrían ser interesantes al visualizar una posible trampa de correlaciones lineales basadas en una respuesta de stackoveflow :
La respuesta de @Gavin Simpson y @ bill_080 también incluye buenas tramas de correlación en el mismo tema.
fuente
Tendría dos diagramas de dos paneles, ambos tienen el diagrama xy a la izquierda y un histograma a la derecha. En la primera gráfica, se coloca una línea horizontal en la media de y y las líneas se extienden desde este a cada punto, representando los residuos de los valores de y de la media. El histograma con esto simplemente traza estos residuos. Luego, en el siguiente par, el gráfico xy contiene una línea que representa el ajuste lineal y nuevamente líneas verticales que representan los residuos, que se representan en un histograma a la derecha. Mantenga constante el eje x de los histogramas para resaltar el desplazamiento a valores más bajos en el ajuste lineal en relación con el "ajuste" medio.
fuente
Creo que lo que propones es bueno, pero lo haría en tres ejemplos diferentes
1) X e Y no tienen relación alguna. Simplemente elimine "x" del código r que genera y (y1 <-rnorm (50))
2) El ejemplo que publicó (y2 <- x + rnorm (50))
3) Las X son Y son la misma variable. Simplemente elimine "rnorm (50)" del código r que genera y (y3 <-x)
Esto mostraría más explícitamente cómo al aumentar la correlación disminuye la variabilidad en los residuos. Solo debe asegurarse de que el eje vertical no cambie con cada gráfico, lo que puede suceder si está utilizando la escala predeterminada.
Entonces, podrías comparar tres gráficos r1 vs x, r2 vs x y r3 vs x. Estoy usando "r" para indicar los residuos del ajuste usando y1, y2 e y3 respectivamente.
Mis habilidades de R para trazar son bastante inútiles, por lo que no puedo ofrecer mucha ayuda aquí.
fuente