library(tidyverse)
library(openintro)
#install.packages("GGally")
library(GGally)
library(corrr)
library(knitr)
library(kableExtra)
options(knitr.table.format = "html")
En estas notas de clase veremos el concepto de correlación:
\[\rho_{x,y}=\frac{cov(x,y)}{\sigma_x \sigma_y}\]
primero, veamos de qué se trata el dataset. Para esto, hacemos un head()
de la tabla. Aprovechamos para usar la librería knitr
, cuya función kable()
permite realizar mejores presentaciones de resultados. Con kable_styling()
podemos modificar algunas características de la tabla
mtcars %>%
head() %>%
kable() %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
---|---|---|---|---|---|---|---|---|---|---|---|
Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
Con ggpairs()
, podemos graficar todas las variables, y buscar las correlaciones
Coloreamos por:
-\(am\): Tipo de transmisión: automatico (am=0) o manual (am=1)
mtcars %>%
select(-carb,-vs) %>%
mutate(cyl = factor(cyl),
am = factor(am)) %>%
ggpairs(.,
title = "Matriz de correlaciones",
mapping = aes(colour= am))
Esta librería pertenece al entorno de tidymodels
mtcars %>%
correlate() %>%
shave() %>%
fashion()
Correlation method: 'pearson'
Missing treated using: 'pairwise.complete.obs'
mtcars %>%
correlate() %>%
network_plot(min_cor = 0.7)
Correlation method: 'pearson'
Missing treated using: 'pairwise.complete.obs'
mtcars %>%
correlate() %>%
rplot()
Correlation method: 'pearson'
Missing treated using: 'pairwise.complete.obs'
Veamos la correlación entre:
Miramos el scatter plot y pareciera haber una relación negativa.
La mitad superior de la matriz muestra la estimación puntual de la correlación, para todos los datos y considerando cada conjunto por separado. Recordemos que la fórmula para calcular ese estimador es:
\[ r = \frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n(x_i-\bar{x})^2} \sqrt{\sum_{i=1}^n(y_i-\bar{y})^2}} \]
Si quisieramos testear la significatividad de este estimador:
\(H_0\) : ρ =0
\(H_1\) : ρ \(\neq\) 0
cor.test(mtcars$mpg,mtcars$hp)
Pearson's product-moment correlation
data: mtcars$mpg and mtcars$hp
t = -6.7424, df = 30, p-value = 1.788e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.8852686 -0.5860994
sample estimates:
cor
-0.7761684
Con este p-value rechazamos \(H_0\)
¿y si queremos comparar la relación entre \(drat\) y \(gear\)?
Con ggpairs()
ya habíamos visto que la relación era diferente entre los automáticos y con transmisión manual. Sabiendo esto, volvamos a calcular los estimadores puntuales de cada grupo
mtcars %>%
group_by(am) %>%
summarise(cor = cor(drat, gear))
La correlación para los autos automáticos da súper alto! quedemosnos con ese grupo
mtcars2 <- mtcars %>% filter(am==0)
ggplot(mtcars2, aes(gear,drat, group=gear, fill = factor(gear)))+
geom_boxplot(alpha= 0.75)
No parece muy correcto hacer un test de correlación de pearson, es decir buscar una relación lineal, con una variable que sólo toma dos valores.
Usemos el test de correlación de Spearman
cor.test(mtcars2$gear,mtcars2$drat, method = "pearson")
Pearson's product-moment correlation
data: mtcars2$gear and mtcars2$drat
t = 5.1262, df = 17, p-value = 8.421e-05
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.5030694 0.9110028
sample estimates:
cor
0.7792264
cor.test(mtcars2$gear,mtcars2$drat, method = "spearman")
Cannot compute exact p-value with ties
Spearman's rank correlation rho
data: mtcars2$gear and mtcars2$drat
S = 383.98, p-value = 0.001968
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.6631736
Noten que el test de Spearman ya no da tan significativo como el de Pearson