Durante este módulo vamos a trabajar con el dataset diamonds que viene como parte de la instalación de tidyverse
Para cargar un librería utilizamos:
install.packages('tidyverse')
require(tidyverse)
Para ver los primeros 10 renglones del dataset utilizamos la función head(datos, 10)
#Cargamos la libreria
require(tidyverse)
## Loading required package: tidyverse
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.3 v purrr 0.3.4
## v tibble 3.1.0 v dplyr 1.0.2
## v tidyr 1.1.2 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.0
## Warning: package 'ggplot2' was built under R version 4.0.3
## Warning: package 'tibble' was built under R version 4.0.4
## Warning: package 'readr' was built under R version 4.0.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
head(diamonds, 10)
Para obtener información descriptiva de todo el dataset usamos summary()
summary(diamonds)
## carat cut color clarity depth
## Min. :0.2000 Fair : 1610 D: 6775 SI1 :13065 Min. :43.00
## 1st Qu.:0.4000 Good : 4906 E: 9797 VS2 :12258 1st Qu.:61.00
## Median :0.7000 Very Good:12082 F: 9542 SI2 : 9194 Median :61.80
## Mean :0.7979 Premium :13791 G:11292 VS1 : 8171 Mean :61.75
## 3rd Qu.:1.0400 Ideal :21551 H: 8304 VVS2 : 5066 3rd Qu.:62.50
## Max. :5.0100 I: 5422 VVS1 : 3655 Max. :79.00
## J: 2808 (Other): 2531
## table price x y
## Min. :43.00 Min. : 326 Min. : 0.000 Min. : 0.000
## 1st Qu.:56.00 1st Qu.: 950 1st Qu.: 4.710 1st Qu.: 4.720
## Median :57.00 Median : 2401 Median : 5.700 Median : 5.710
## Mean :57.46 Mean : 3933 Mean : 5.731 Mean : 5.735
## 3rd Qu.:59.00 3rd Qu.: 5324 3rd Qu.: 6.540 3rd Qu.: 6.540
## Max. :95.00 Max. :18823 Max. :10.740 Max. :58.900
##
## z
## Min. : 0.000
## 1st Qu.: 2.910
## Median : 3.530
## Mean : 3.539
## 3rd Qu.: 4.040
## Max. :31.800
##
La primer medida de tendencia central es la media o promedio aritmético:
\(\hat{x} = \frac{1}{n} \sum_{i=1}^n x_i\)
El comando mean() recibe como argumentos la columna numerica de un dataset. Para referirnos a una columna en especial, podemos hacer uso del operador $ con datos$columna. Tambie
Por ejemplo, para computar la media de la columna price hacemos:
mean(diamonds$price)
## [1] 3932.8
Si queremos computar el promedio de varias columnas hacemos:
sapply(diamonds[, 7:10], mean)
## price x y z
## 3932.799722 5.731157 5.734526 3.538734
La función sapply aplica una función como sum() o mean() a las columnas seleccionadas
La segunda medida para medir la centralidad es la mediana
Cuando el tamaño de la muestra \(n\) es par:
\(med(x) = Z[\frac{n}{2}]\)
En donde \(Z\) es una lista ordenada de valores de menor a mayor y \(n/2\) es la posición en donde se encuentra la mediana dentro de \(Z\).
Cuando el tamaño de la muetra \(n\) es impar la mediana es:
\(med(x) = \frac{Z[\frac{n-1}{2}] + Z[\frac{n+1}{2}]}{2}\)
La mediana de la variable price es:
median(diamonds$price)
## [1] 2401
Cuando queremos aplicar a multiples columnas, hacemos igual que con la media:
sapply(diamonds[, 7:10], median)
## price x y z
## 2401.00 5.70 5.71 3.53
La medida de dispersión más elemental es el rango que se define como:
\(rango = max(x) - min(x)\)
Para calcular el valor máximo y el mínimo lo hacemos con max(x)y min(x) respectivamente:
rango = max(diamonds$price) - min(diamonds$price)
rango
## [1] 18497
Podemos hacer una función que se llame rango y que tome como una entrada la columna de referencia:
rango = function(x){
r = max(x) - min(x)
return(r)
}
Vamos a usar nuestra nueva función para computar el rango de varias variables:
sapply(diamonds[, 7:10], rango)
## price x y z
## 18497.00 10.74 58.90 31.80
La segunda medida de dispersión es la Varianza y la Desviación Estandar que es simplemente la raíz cuadrada de la varianza:
\(Var(x) = \frac{1}{n-1}\sum_{i=1}^2 (x_i - \hat{x}) ^2\)
\(std(x) = \sqrt{Var[x]}\)
Para calcular la varianza y la desviación estándar utilizamos las funciones var(x) y sd(x)
varianza = var(diamonds$price)
desv_est = sd(diamonds$price)
print(paste('La Varianza y la desviación estándar es: ', varianza, 'y ', desv_est))
## [1] "La Varianza y la desviación estándar es: 15915629.4243014 y 3989.43973814638"
Tambien podemos aplicar sapply:
sapply(diamonds[, 7:10], sd)
## price x y z
## 3989.4397381 1.1217607 1.1421347 0.7056988
Si queremos obtener los estadísticos descriptivos de múltiples variables, tendriamos que hacer una función y luego aplicar sapply como en los ejemplos anteriores.
Vamos a definir una función que compute la media, la mediana, el rango y la desviación estándar:
my_decriptives = function(x){
list(mean(x), median(x), max(x) - min(x), sd(x))
}
sapply(diamonds[, 7:10], my_decriptives)
## price x y z
## [1,] 3932.8 5.731157 5.734526 3.538734
## [2,] 2401 5.7 5.71 3.53
## [3,] 18497 10.74 58.9 31.8
## [4,] 3989.44 1.121761 1.142135 0.7056988
El primer renglón es la media, el segundo la mediana, el tercero el rango y finalmente tenemos la desviación estándar.
Por fortuna podemos usar el poder colaborativo de R. Existe una libreria que no ayuda a facilitar la tarea: la librería pastecs. Primero necesitamos instalar la librería install.packages("pastecs"). Después usamos el comando stat.desc(datos)
require(pastecs)
## Loading required package: pastecs
## Warning: package 'pastecs' was built under R version 4.0.4
##
## Attaching package: 'pastecs'
## The following objects are masked from 'package:dplyr':
##
## first, last
## The following object is masked from 'package:tidyr':
##
## extract
options(width = 300)
estadisticos = stat.desc(diamonds)
#Todas las columnas que no son numericas apareceran con NA´s. Primero eliminamos las columnas con NA´s utilizando un truco
#que consiste en aplicar el operador transpuesta 2 veces en conjunto con na.omit. El primer operador traspuesto
#convierte las columnas en renglones una vez que esto sucede eliminamos los renglones con NAs. El segundo
#Operador transpuesto, convierte los renglones en columnas
estadisticos = t(na.omit(t(estadisticos)))
#Rendondeamos para poder imprimir en la consola
round(estadisticos, 2)
## carat depth table price x y z
## nbr.val 53940.00 53940.00 53940.00 53940.00 53940.00 53940.00 53940.00
## nbr.null 0.00 0.00 0.00 0.00 8.00 7.00 20.00
## nbr.na 0.00 0.00 0.00 0.00 0.00 0.00 0.00
## min 0.20 43.00 43.00 326.00 0.00 0.00 0.00
## max 5.01 79.00 95.00 18823.00 10.74 58.90 31.80
## range 4.81 36.00 52.00 18497.00 10.74 58.90 31.80
## sum 43040.87 3330762.90 3099240.50 212135217.00 309138.62 309320.33 190879.30
## median 0.70 61.80 57.00 2401.00 5.70 5.71 3.53
## mean 0.80 61.75 57.46 3932.80 5.73 5.73 3.54
## SE.mean 0.00 0.01 0.01 17.18 0.00 0.00 0.00
## CI.mean.0.95 0.00 0.01 0.02 33.67 0.01 0.01 0.01
## var 0.22 2.05 4.99 15915629.42 1.26 1.30 0.50
## std.dev 0.47 1.43 2.23 3989.44 1.12 1.14 0.71
## coef.var 0.59 0.02 0.04 1.01 0.20 0.20 0.20
## attr(,"na.action")
## cut color clarity
## 2 3 4
## attr(,"class")
## [1] "omit"
Veamos ahora qué tipo de datos tenemos. Para esto podemos utilizar el comando glimpse(datos)
glimpse(diamonds, width = 100)
## Rows: 53,940
## Columns: 10
## $ carat <dbl> 0.23, 0.21, 0.23, 0.29, 0.31, 0.24, 0.24, 0.26, 0.22, 0.23, 0.30, 0.23, 0.22, 0.31~
## $ cut <ord> Ideal, Premium, Good, Premium, Good, Very Good, Very Good, Very Good, Fair, Very G~
## $ color <ord> E, E, E, I, J, J, I, H, E, H, J, J, F, J, E, E, I, J, J, J, I, E, H, J, J, G, I, J~
## $ clarity <ord> SI2, SI1, VS1, VS2, SI2, VVS2, VVS1, SI1, VS2, VS1, SI1, VS1, SI1, SI2, SI2, I1, S~
## $ depth <dbl> 61.5, 59.8, 56.9, 62.4, 63.3, 62.8, 62.3, 61.9, 65.1, 59.4, 64.0, 62.8, 60.4, 62.2~
## $ table <dbl> 55, 61, 65, 58, 58, 57, 57, 55, 61, 61, 55, 56, 61, 54, 62, 58, 54, 54, 56, 59, 56~
## $ price <int> 326, 326, 327, 334, 335, 336, 336, 337, 337, 338, 339, 340, 342, 344, 345, 345, 34~
## $ x <dbl> 3.95, 3.89, 4.05, 4.20, 4.34, 3.94, 3.95, 4.07, 3.87, 4.00, 4.25, 3.93, 3.88, 4.35~
## $ y <dbl> 3.98, 3.84, 4.07, 4.23, 4.35, 3.96, 3.98, 4.11, 3.78, 4.05, 4.28, 3.90, 3.84, 4.37~
## $ z <dbl> 2.43, 2.31, 2.31, 2.63, 2.75, 2.48, 2.47, 2.53, 2.49, 2.39, 2.73, 2.46, 2.33, 2.71~
Observando el dataset, nos interesaría obtener las estadísticas descriptivas de la variable price por el color del diamante.
R cuenta con una librería llamada psych que hace esta tarea. Recuerda que para instalar la librería hacemos install.packages('psych')
require(psych)
## Loading required package: psych
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
options(width = 300)
describeBy(diamonds$price, group = diamonds$color, mat = T, digits = 2)
La opción mat = TRUE imprime una matriz en lugar de una lista. Esto para lograr una mejor comprensión en la consola. La opción digits = 2 redondea las cifras a 2 decimales.
El output es una matriz que consta de 7 renglones, 1 renglón para cada valor de color. Así por por ejemplo, el renglón 1 que está tipificado como X11 quiere decir que para el precio de diamantes cuando el color = D tenemos n = 6775 observaciones, el promedio del precio es mean = 3169 y la desviación estándar es 3356
El Análisis Exploratorio de Datos o EDA se utiliza para representar un conjunto de datos y sus relaciones en forma visual y gráfica de tal forma que los datos cuenten alguna historia. El principio es que para nuestro cerebro es más fácil entender una imagen que una tabla con números.
En esta sección usaremos ggplot con el conjunto de datos diamonds que es parte del ecosistema tidyverse
ggplot funciona con “capas” que se van agregando de tal forma que cada una de ellas contiene algún elemento visual de la gráfica. Estas capas operan en jerarquías de importancia:
- Primero tenemos los aesteticos o
aes(). El más importate es el primer aestetico que se refiere a los datos que vamos a utilizar para graficar.
- En segundo lugar, están los elementos geométricos o
geom_xyz()que describen las geometrías que componen las gráficas.
- En tercer lugar, están otros elementos como los temas, colores, titulos y leyendas
ggplot opera bajo el principio de que todo lo que esté en un aes() opera sobre toda la gráfica o bien sobre todo el elemento geométrico. Por ejemplo, si definimos que el eje \(x\) contiene la variable precio todos los elementos geométricos asumen que x = precio.
Para comenzar con ggplot debemos definir la primera capa:
ggplot(data, aes(x = x, y = y, color = z, size = w, alpha = 0.6))
en este ejemplo, todos los parámetros dentro de aes() aplicarán para **toda* la gráfica. Por ejemplo, si queremos hacer una gráfica de puntos, el tamaño del punto estará dado por la variable w. Si queremos agregar el valor del punto en la gráfica, el tamaño del texto también estará dado por la variable w.
Una fuente de inspiración podemos encontrarla en https://www.r-graph-gallery.com/
El histograma visualiza la distribución de frecuencias de los datos. En ggplot existe la forma geométrica geom_histogram:
require(tidyverse)
ggplot(diamonds, aes(x = price)) +
geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Sobre el histograma básico, podemos cambiar el color de las lineas, el color del relleno, el número de intervalos de clase, el tema, etc.
ggplot(diamonds, aes(x = price)) +
geom_histogram(fill = 'red', color = 'white')
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Este es el mismo histograma con relleno rojo y color de líneas blancas.
También podemos hacer un histograma por la variable color. Para lograr esto, podemos hacer uso de un facet. Los facets permiten hacer un corte en los datos para visualizarlos por grupos. Mi favorito es el facet_wrap().
ggplot(diamonds, aes(x = price, fill = color, color = 'white')) +
geom_histogram() +
facet_wrap(~color, scales = 'free', nrow = 2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Para simplificar la gráfica, vamos a eliminar las leyendas, agregar un título y un subtitulo
ggplot(diamonds, aes(x = price, fill = color)) +
geom_histogram(color = 'white') +
facet_wrap(~color, scales = 'free', nrow = 2) +
theme(legend.position = 'none') +
labs(title = 'Dataset diamonds',
subtitle = 'Histogram by color')
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
En este ejemplo hemos puesto en el primer aestético, aes(x = price, fill = color) indicando que para todos los elementos geométricos, el relleno será de color definido por la variable color (R asigna una paleta de colores con un color para cada nivel de la variable color).
Un density plot es similar a un histograma solo que utiliza una estimación no paramétrica de la distribución de probabilidades de los datos. El objeto geométrico es geom_density
ggplot(diamonds, aes(x = price)) +
geom_density()
Al igual que en el histograma también podemos agregar capas. Por ejemplo, vamos a graficar la distribución de frecuencias por color:
ggplot(diamonds, aes(x = price, fill = color)) +
geom_density(alpha = 0.4)
En este caso hemos agregado una transparencia a través del parámetro
alpha = 0.4 para poder visualizar la distribución por color. si te parece que la imagen no es muy clara, podemos aplicar un facet_wrap
ggplot(diamonds, aes(x = price, fill = color)) +
geom_density(alpha = 0.4) +
facet_wrap(~color, scales = 'free', nrow = 2) +
theme(legend.position = 'none') +
labs(title = 'Dataset diamonds',
subtitle = 'Density Plot by color')
La gráfica de cajas es otra forma de visualizar la distribución de los datos. La geometría que la define es geom_boxplot() y son muy buenas para visualizar la dispersión por grupos de datos.
ggplot(diamonds, aes(y = price, x = color, fill = color)) +
geom_boxplot()
Las gráficas de caja o box plots nos permiten agregar una 3er variable para visualizar los datos. Supongamos que queremos ver las diferencias entre la pureza del diamante y el precio y el color. Entonces, agregaremos un facet por la variable clarity
ggplot(diamonds, aes(y = price, x = color, fill = color)) +
geom_boxplot() +
facet_wrap(~clarity, scales = 'free', nrow = 2) +
theme(legend.position = 'none') +
labs(title = 'Dataset diamonds',
subtitle = 'Box Plot by color and by clarity')
Una característica interesante de ggplot es que también podemos agregar elementos gráficos que se computan por medio de estadísticos. Supongamos que queremos agregar un punto en cada caja que represente el promedio por grupo. Esto se logra con el elemento stat_summary()
ggplot(diamonds, aes(y = price, x = color, fill = color)) +
geom_boxplot(alpha = 0.6) +
facet_wrap(~clarity, scales = 'free', nrow = 2) +
theme(legend.position = 'none') +
stat_summary(fun=mean, geom = "point", shape = 16, size = 1, color="red", fill = "red") +
labs(title = 'Dataset diamonds',
subtitle = 'Box Plot by color and by clarity')
Los argumentos de stat_summary() toman la función a computar fun = mean , la geometría geom = 'point', la forma de la geometría que para que el punto sea circular es shape = 16, el tamaño del punto size = 1, el color de relleno y de la línea.
Es una variante del gráfico de caja que muestra de una forma mas clara la distribución de los datos en cuanto al sesgo y la kurtosis de la distribución de frecuencias.
ggplot(diamonds, aes(y = price, x = color, fill = color)) +
geom_violin()
Las gráficas QQ-Plots se utilizan para revisar si la distribución de frecuencias de una variable se parece a una distribución teórica hipotética (usualmente la distribución Normal). Esto es importante porque muchos algoritmos asumen que la distribución de frecuencias es Normal.
El objeto geométrico es geom_qq() que grafica los datos sobre un papel probabilístico y geom_qq_line() que dibuja una línea recta con la distibución acumulada de frecuencias linealizada. Si los datos (puntos) siguen un comportamiento lineal, entonces, se puede asumir que a distribución de los datos podría provenir de una distribución de probabilidades teórica dada (usualmente la normal)
La distribución de probabilidades asumiendo Normalidad es:
\(f(x) = \frac{e^{-(x - \mu)^{2}/(2\sigma^{2}) }} {\sigma\sqrt{2\pi}}\)
Para explicar la herramienta, vamos a simular 1000 datos de una distribución normal y vamos a gráfica el qq-plot
#simulacion de 1000 datos normalmente distribuidos
simulacion = rnorm(n = 1000, mean = 0, sd = 1)
qqnorm(simulacion)
En la gráfica se aprecia como nuestra simulación se aproxima a una línea recta indicando que los datos simulados sí se aproximan a una distribución normal.
Regresando al ejemplo, queremos saber si la variable carat está distribuida normalmente:
ggplot(diamonds, aes(sample = carat)) +
geom_qq(color = 'blue') +
geom_qq_line(color = 'red') +
labs(title = 'Diamonds Data set',
subtitle = 'QQ-Plot for cust') +
theme_bw()
En este pedazo de código, hemos integrado un nuevo elemento: theme_bw(). Los temas o “themes” son formatos predeterminados para la estética de las gráficas. En este caso, decidí cambiar el tema que hemos estado utilizando para ver con más claridad el qq-plot. Al igual que en el caso de histograma o del boxplot, también podemos aplicar un facet_wrap()con la variable color
ggplot(diamonds, aes(sample = carat)) +
geom_qq(color = 'blue') +
geom_qq_line(color = 'red') +
labs(title = 'Diamonds Data set',
subtitle = 'QQ-Plot for cust by Color') +
theme_bw() +
facet_wrap(~color, nrow = 2, scales = 'free')
DataExplorerExiste una forma sencilla de obtener visualizaciones con la finalidad de entender el dataset más que para hacer una presentación o contar una historia. La librería Dataexplorer nos permite crear un reporte con una análisis básico de todo el data set utilizando la función. Recuerda instalar antes la librería con install.packages('DataExplorer')
La función create_report() recibe como input el dataset y si existiera alguna variable dependiente de interés tendríamos que poner el nombre.
Prueba poner en la consola la siguiente línea de comando create_report(diamonds)
Si quieres saber más sobre DataExplorer puedes visitar la página web [DataExplorer] (https://cran.r-project.org/web/packages/DataExplorer/vignettes/dataexplorer-intro.html)
En estadística estamos interesados en estudiar relaciones causales y una forma de hacerlo es a través del concepto de correlación. La correlación mide el grado de asociación entre dos variables y se computa de la siguiente manera:
\(\rho = \frac{\text{cov}(x,y)}{\sigma_x \sigma_y}\)
Para computar este ratio podemos usar formulas de R:
cov(x, y) para la covarianzasd() para la desviación estándarx = diamonds$carat
y = diamonds$price
#Calculando la covarianza
covarianza = cov(x, y)
#Calculando la desviacion estandar
sx = sd(x)
sy = sd(y)
#computamos el indice de correlación
rho = covarianza / (sx * sy)
rho
## [1] 0.9215913
El indice de correlación se encuentra en el intervalo \(-1<\rho<1\). Si \(\rho > 0\) y cercano a 1 se dice que la relación \(x,y\) es positiva (a medida que \(x\) incrementa, \(y\) también incrementa). Si \(\rho < 0\) se dice que la relación entre \(x,y\) es inversa (a medida que la \(x\) se incrementa, la \(y\) tiende a disminuir). Si \(|\rho| \rightarrow 1\) se dice que la relación es fuerte.
Podemos ahorrarnos unas cuantas líneas de código y computar el indice de correlaciones con la función cor(x, y):
cor(x, y)
## [1] 0.9215913
Un scatter plot ayuda a visualizar la relación entre 2 variables típicamente continuas. En ggplot el objeto geométrico es geom_point()
ggplot(diamonds, aes(x = carat, y = price)) +
geom_point()
Tal cual lo que nos dice esta gráfica es que a medida que el valor de carat se incrementa, la variable price también se incrementa. Tal como lo dice el índice de correlaciones \(\rho = 0.92\) la relación entre ambas variables es alta.
Podemos agregar otros objetos geométricos tales como geom_smooth() que agregan una línea de tendencia. El default es una línea “smooth” que intenta capturar comportamientos que pudieran no ser lineales:
ggplot(diamonds, aes(x = carat, y = price)) +
geom_point() +
geom_smooth()
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
Pero tambien podemos forzar una línea recta:
ggplot(diamonds, aes(x = carat, y = price)) +
geom_point() +
geom_smooth(method = 'lm')
## `geom_smooth()` using formula 'y ~ x'
También podemos utilizar transparencias con alpha y separar por color con un facet_wrap()
ggplot(diamonds, aes(x = carat, y = price, alpha = 0.4)) +
geom_point() +
facet_wrap(~color, scales = 'free', nrow = 2)
Podemos colorear los puntos por alguna otra variable como el corte
cut y cambiar la intensidad del brillo con el operador I()
ggplot(diamonds, aes(x = carat, y = price, alpha = I(1/2), color = cut)) +
geom_point(alpha = 0.4) +
facet_wrap(~color, scales = 'free', nrow = 2) +
theme(legend.position = 'bottom') +
labs(title = 'Diamonds Data set',
subtitle = 'Scatter plot for Precio, x = carat, color = cut')
Cuando tenemos múltiples variables, nos interesa ver la correlación que existe entre cada una de ellas. Si hay 4 variables continuas existen 6 pares de correlaciones distintas y con 5 tendríamos 10 (en ambos casos eliminando la correlación de cada variable con ella misma que por definición siempre es 1). En genera existirán \(N(N-1)/2\) pares únicos.
La función cor()también puede computar la matriz de correlaciones. Antes de poder usarlas, debemos quedarnos solo con las variables numéricas del data set y asegurar que el tipo de datos es numérico-matricial.
Para filtrar grupos de columnas que cumplan con características iguales usamos la función select_if() con la condición is.numeric y después aplicamos la función cor()
#Solo variables numéricas
data = select_if(diamonds, is.numeric)
#Matriz de Correlación
data = as.matrix(data)
rho = cor(data)
rho
## carat depth table price x y z
## carat 1.00000000 0.02822431 0.1816175 0.9215913 0.97509423 0.95172220 0.95338738
## depth 0.02822431 1.00000000 -0.2957785 -0.0106474 -0.02528925 -0.02934067 0.09492388
## table 0.18161755 -0.29577852 1.0000000 0.1271339 0.19534428 0.18376015 0.15092869
## price 0.92159130 -0.01064740 0.1271339 1.0000000 0.88443516 0.86542090 0.86124944
## x 0.97509423 -0.02528925 0.1953443 0.8844352 1.00000000 0.97470148 0.97077180
## y 0.95172220 -0.02934067 0.1837601 0.8654209 0.97470148 1.00000000 0.95200572
## z 0.95338738 0.09492388 0.1509287 0.8612494 0.97077180 0.95200572 1.00000000
El correlograma es la representación gráfica de la matriz de correlaciones. La librería corrplot proporciona un método simple para visualizar correlaciones. Para más detalles puedes consultar el sitio https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html
No olvides instalar la libreria usando `install.packages(‘corrplot’)
El input de corrplot() es la matriz de correlaciones. En nuestro ejemplo la he nombrado rho
require(corrplot)
## Loading required package: corrplot
## corrplot 0.84 loaded
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(rho, method = "color", col = col(200),
type = "lower", order = "hclust", number.cex = .7,
addCoef.col = "black", # Add coefficient of correlation
tl.col = "black", tl.srt = 90, # Text label color and rotation
# hide correlation coefficient on the principal diagonal
diag = FALSE)
Para mejora la apariencia de la gráfica se declaró una paleta de colores con el comando colorRampPalette que como argumento utiliza una lista de colores https://www.rdocumentation.org/packages/dichromat/versions/1.1/topics/colorRampPalette
El argumento col = col(200) toma como input la paleta que hicimos, type = 'lower' genera una matriz inferior triangular. También puedes probar con 'upper'. El argumento order = 'hclust' ordena en clusters la matriz de correlaciones y el argumento addCoef.col = 'black' agrega el valor de la correlación en color negro.