forked from ousuga/Manual-de-R
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path14_Med_Cor.Rmd
107 lines (74 loc) · 6.44 KB
/
14_Med_Cor.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Medidas de correlación {#correl}
En este capítulo se mostrará cómo obtener el coeficiente de correlación lineal para variables cuantitativas.
## Función `cor` \index{cor} \index{correlación}
La función `cor` permite calcular el coeficiente de correlación de Pearson, Kendall o Spearman para dos variables cuantitativas. La estructura de la función es la siguiente.
```{r, eval=F}
cor(x, y, use="everything",
method=c("pearson", "kendall", "spearman"))
```
Los parámetos de la función son:
- `x, y`: vectores cuantitativos.
- `use`: parámetro que indica lo que se debe hacer cuando se presenten registros `NA` en alguno de los vectores. Las diferentes posibilidades son: `everything`, `all.obs`, `complete.obs`, `na.or.complete` y `pairwise.complete.obs`, el valor por defecto es `everything`.
- `method`: tipo de coeficiente de correlación a calcular, por defecto es `pearson`, otros valores posibles son `kendall` y `spearman`.
### Ejemplo {-}
Calcular el coeficiente de correlación de Pearson para las variables área y precio de la base de datos sobre apartamentos usados.
Lo primero que se debe hacer es cargar la base de datos usando la url apropiada. Luego de esto se usa la función `cor` sobre las variables de interés. A continuación se muestra el código necesario.
```{r}
url <- 'https://raw.githubusercontent.com/fhernanb/datos/master/aptos2015'
datos <- read.table(file=url, header=T)
cor(x=datos$mt2, y=datos$precio)
```
Del resultado anterior vemos que existe una correlación de `r cor(x=datos$mt2, y=datos$precio)` entre las dos variables, eso significa que apartamentos de mayor área tienden a tener precios de venta más alto. Este resultado se ilustra en la Figura \@ref(fig:disp), se nota claramente que la nube de puntos tiene un pendiente positiva y por eso el signo del coeficiente de correlación.
A continuación el código para generar la Figura \@ref(fig:disp).
```{r disp, fig.cap='Diagrama de dispersión para precio versus área de los apartamentos usados.', fig.asp=0.6, fig.width =10}
with(datos, plot(x=mt2, y=precio, pch=20, col='blue',
xlab='Área del apartamento', las=1,
ylab='Precio del apartamento (millones COP)'))
```
### Ejemplo {-}
Para las mismas variables del ejemplo anterior calcular los coeficientes de correlación Kendall y Spearman.
A continuación el código para obtener lo solicitado.
```{r}
cor(x=datos$mt2, y=datos$precio, method='pearson')
cor(x=datos$mt2, y=datos$precio, method='kendall')
cor(x=datos$mt2, y=datos$precio, method='spearman')
```
### Ejemplo {-}
Para la base de datos de apartamentos usados, ¿cuáles de las variables cuantitativas tienen mayor correlación?
Lo primero que debemos hacer es determinar cuáles son las cuantitativas de la base de datos. Para obtener información de las variables que están almacenadas en el marco de datos llamado `datos` usamos la función `str` que muestra la estructura interna de objeto.
```{r}
str(datos)
```
Del anterior resultado vemos que las variables precio, mt2, alcobas, banos, administracion y avaluo son las variables cuantitativas, las restantes son cualitativas (nominal u ordinal). Las posiciones de las variables cuantitativas en el objeto `datos` son 1, 2, 5, 6, 9, 10, así podemos construir un marco de datos sólo con la información cuantitativa, a continuación el código usado.
```{r}
datos.cuanti <- datos[, c(1, 2, 5, 6, 9, 10)]
# La siguiente instrucción para editar los nombres de la variables
colnames(datos.cuanti) <- c('Precio', 'Área', 'Alcobas',
'Baños', 'Admon', 'Avaluo')
M <- round(cor(datos.cuanti), digits=2)
M
```
El anterior resultado representa la matriz de correlaciones entre las variables cuantitativas, se observa que la mayor correlación es entre las variables precio y área del apartamento.
Es posible representar gráficamente la matriz de correlaciones `M` por medio de la función `corrplot` del paquete **corrplot**\index{corrplot} [@R-corrplot], a continuación el código para obtener su representación gráfica.
```{r corplot, fig.cap='Matriz de coeficientes de correlación.', fig.asp=0.6, fig.width=6}
library('corrplot') # Para cargar el paquete corrplot
corrplot.mixed(M)
```
En la Figura \@ref(fig:corplot) se muestra la matriz con los coeficientes de correlación. En la diagonal de la Figura \@ref(fig:corplot) están las variables, por encima están unos círculos de colores, entre más intensidad del color, ya sea azul o rojo, mayor es la correlación, colores ténues significan correlación baja; el tamaño de los círculos está asociado al valor absoluto de correlación. Por debajo de la diagonal se observan los valores exactos de correlación en colores.
```{block2, type='rmdtip'}
La función `corrplot` es muy versátil, se pueden obtener diferentes representaciones gráficas de la matriz de correlaciones, para conocer las diferentes posibilidades recomendamos consultar este enlace: https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html.
```
### Ejemplo {-}
Construya dos vectores hipotéticos con el gasto y ahorro de un grupo de 7 familias, incluya dos `NA`. Calcule el coeficiente de correlación entre `ahorro` y `gasto`, use el parámetro `use` para manejar los `NA`.
A continuación se presenta el código para crear los objetos `ahorro` y `gasto` con datos ficticios. Observe que en el primer caso donde se calcula la correlación no es posible obtener un resultado debido a que por defecto `use='everything'` y por lo tanto usa todas las observaciones incluyendo los `NA`. En el segundo caso si se obtiene un valor para la correlación debido a que se usó `use='complete.obs'`.
```{r}
gasto <- c(170, 230, 120, 156, 256, NA, 352)
ahorro <- c(45, 30, NA, 35, 15, 65, 15)
cor(gasto, ahorro)
cor(gasto, ahorro, use='complete.obs')
```
## EJERCICIOS {-}
Use funciones o procedimientos (varias líneas) de R para responder cada una de las siguientes preguntas.
1. Para cada uno de los estratos socioeconómicos, calcular el coeficiente de correlación lineal de Pearson para las variables precio y área de la base de datos de los apartamentos usados.
2. Calcular los coeficientes de correlación Pearson, Kendall y Spearman para las variables cuantitativas de la base de datos sobre medidas del cuerpo explicada en el Capítulo \@ref(central). La url con la información es la siguiente: https://raw.githubusercontent.com/fhernanb/datos/master/medidas_cuerpo
3. Represente gráficamente las matrices de correlación obtenidas en el ejercicio anterior.