Borrador
El gráfico de dispersión permite estudiar relación y dependencia entre dos variables cuantitativas. Adicionalmente, permite identificar patrones, verificar valores extremos y clusters en los datos. En la presente entrada se muestra como estimarlos en R y como realizar lecturas sobre los mismos.
En el gráfico
siguiente se muestra la relación entre el peso del auto (wt) y la cantidad de
millas por galón (mpg) que brinda el vehículo. En tal sentido el gráfico
permite caracterizar la relación entre variables a partir de: i) dirección, ii)
forma y iii) fuerza. La dirección y forma se puede verificar a partir de la línea
de regresión que mejor se ajuste a los datos, mientras la fuerza está asociada a
la dispersión de los puntos alrededor de esta línea.
library(dplyr)
library(ggplot2)
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point() +
theme_minimal()
Ahora bien, debemos
tener pendiente que correlación no implica causalidad. En caso de una
relación lineal entre las variables solo implica que el aumento (disminución)
del valor de una variable, esta correspondido con un aumento (disminución) de
la probabilidad de tener un mayor valor de la otra variable, no que está
causando este movimiento.
2. Independencia en media
La función geom_smooth se utiliza para agregar la recta de regresión, donde cada punto encima de la recta se
interpreta en términos de esperanzas
condicionales E[y|x]. Por tanto, esta permite una inspección gráfica de la independencia en media, en el sentido
de verificar si el promedio condicional de la variable y es o no constante a
partir de diversos valores de x. En caso afirmativo (de ser independiente), la pendiente de esta
recta será plana y se verifica independencia en media E[y|x]=E[y]. Otra posible
interpretación de la recta se deriva de que su pendiente es igual al coeficiente de pendiente en el modelo
de regresión lineal, por tanto, su
signo lo obtiene de la covarianza entre las variables representadas, y muestra
dirección de la relación entre las variables.
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point() +
geom_smooth(method=lm, se=FALSE) +
theme_minimal()
Este puede asumir
una relación lineal o no, pero
recuerde que el coeficiente de correlación solo captura relaciones lineales.
Aunque la función descrita puede ajustarse para capturar posibles relaciones no
lineales entre las variables.
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point() +
geom_smooth(se=FALSE) +
theme_minimal()
3. Análisis condicional por grupos de variables
Ahora bien, hemos
asumido la misma relación a lo interno de los diversos grupos de población. Sin
embargo, y atendiendo a la paradoja de Simpson, es importante siempre condicional la relación a lo interno de las
diversas características de nuestra población, esto para evitar incurrir en
un análisis erróneo de las relaciones.
Para condicional
estas relaciones en R se agregan las opciones Shape (forma del punto) y color
para modificar el color a lo interno de los diversos grupos. En el siguiente
ejemplo se condiciona la relación según la cantidad de cilindros. Note, que
ahora la relación entre variables parece más lineal que cuando hacemos la inspección
incondicional (sobre todas las observaciones).
ggplot(mtcars, aes(x=wt, y=mpg, shape=factor(cyl), color=factor(cyl))) +
geom_point() +
geom_smooth(method=lm, se=FALSE, fullrange=TRUE) +
theme_classic() +
theme(legend.position="bottom")
Hasta aquí ya tenemos
herramientas para verificar la posible asociación entre dos variables, así como
la característica de esta relación condicionada a diversos grupos de nuestra población,
en términos del análisis de regresión esta son herramientas básicas para poder
identificar formas funcionales. Llanamente, la forma asumida por el gráfico de dispersión,
especialmente cuando se ha condicionado a diversas variables, arroja luz sobre
la adecuada forma que deben incluirse o modelarse las relaciones entre variables en el modelo de regresión.
Por ejemplo, la no linealidad está sugiriendo la especificación
de modelos cuadráticos. Mientras que
los diferenciales de pendientes en las relaciones observadas a partir de las
rectas de regresión en la figura anterior, sugieren interacciones entre las
variables que deben modelarse incluyendo interacciones
en el modelo.
5. Relación por quintiles
En la parte 4 vimos que las relaciones pueden cambiar a lo interno de diverisos grupos de la poblacion, pero además estos cambios en la relación entre dos variables pueden darse en función del nivel de una misma variable.
La función
stat_ellipse permite la clasificación de grupos.
ggplot(mtcars, aes(x=wt, y=mpg, shape=factor(cyl), color=factor(cyl))) +
geom_point() +
theme_classic() +
theme(legend.position="bottom") +
stat_ellipse(type = "norm") +
scale_color_brewer(palette="Dark2")
7. Un parentesis en el caso del gráfico de dispersión en series temporales
Una nota al margen
de mucha importancia en el caso de trabajar con series temporales, es que la
correlación se hace bajo supuesto de independencia en las series (también de
normalidad), por esto, en el caso de series temporales se suelen estudiar la
asociación entre alguna transformación de las series de precio original, tal
como la data de crecimiento o la primera diferencia en logaritmo. Series que se
suponen estacionales.
library(ggfortify)
diff(log(EuStockMarkets[,"DAX"]), differences=1) %>%
autoplot() +
theme_minimal()
Nota como se obtienen
las tasas de variación de todas las variables en la data, para posteriormente
obtener el coeficiente de correlación. La función
across se explica en una entrada anterior.
library("GGally")
tasaData <- EuStockMarkets %>% as.data.frame() %>%
mutate(
across(everything(),
~((./dplyr::lag(.)-1)*100),
.names= "tc_{.col}"
)) %>%
select(starts_with("tc"))
head(tasaData)
## tc_DAX tc_SMI
tc_CAC tc_FTSE
##
1 NA NA NA NA
## 2
-0.9283193 0.6197485 -1.2578971 0.6793256
## 3
-0.4412412 -0.5863192 -1.8566124 -0.4877652
##
4 0.9044450 0.3276540 -0.5762515 0.9067887
tasaData %>%
ggpairs()
•
Balentyne, P. and Mindrila, D.
(s.f.d). Scatterplots and Correlation.
•
Sthda (s.f.d). ggplot2 scatter
plots : Quick start guide - R software and data visualization.
•
Sthda (s.f.d). GGally R
package: Extension to ggplot2 for correlation matrix and survival plots - R
software and data visualization.
•
Sthda (s.f.d). Correlation Test
Between Two Variables in R.