¿Cómo presentar la ganancia en la varianza explicada gracias a la correlación de Y y X?

11

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: texto alternativo

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.

Tal Galili
fuente
1
Al mismo tiempo que muestra cuán buena puede ser la regresión lineal, también muestre a su audiencia cómo falla en situaciones donde las relaciones no están bien descritas por líneas rectas:require(mlbench) ; cor( mlbench.smiley()$x ); plot(mlbench.smiley()$x)
DWin
Will Dwin ... :-)
Tal Galili

Respuestas:

4

Aquí hay algunas sugerencias (sobre su trama, no sobre cómo ilustraría el análisis de correlación / regresión):

  • Las dos parcelas univariadas que muestra en los márgenes derecho e izquierdo pueden simplificarse con una llamada a rug();
  • Encuentro más informativo para mostrar una gráfica de densidad de e o una gráfica de caja, con el riesgo de evocar la idea de un supuesto de bi-normalidad que no tiene sentido en este contexto;YXY
  • Además de la línea de regresión, vale la pena mostrar una estimación no paramétrica de la tendencia, como un loess (esta es una buena práctica y altamente informativa sobre posibles no linealidades locales);
  • Los puntos pueden resaltarse (con diferentes colores o tamaños) de acuerdo con el efecto de apalancamiento o las distancias de cocción, es decir, cualquiera de esas medidas que muestran la influencia de los valores individuales en la línea de regresión estimada. Respaldaré el comentario de @ DWin y creo que es mejor destacar cómo los puntos individuales "degradan" la bondad de ajuste o inducen algún tipo de desviación del supuesto de linealidad.

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(XY)(X+Y)/2

chl
fuente
1

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 :

par(mfrow=c(2,1))

set.seed(1)
x <- rnorm(1000)
y <- rnorm(1000)
plot(y~x, ylab = "", main=paste('1000 random values (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

x <- c(x, 500)
y <- c(y, 500)
cor(x,y)
plot(y~x, ylab = "", main=paste('1000 random values and (500, 500) (r=', round(cor(x,y), 4), ')',  sep=''))
abline(lm(y~x), col = 2, lwd = 2)

texto alternativo

La respuesta de @Gavin Simpson y @ bill_080 también incluye buenas tramas de correlación en el mismo tema.

daroczig
fuente
1

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.

Mike Lawrence
fuente
1

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í.

probabilidadislogica
fuente