En este taller vamos a revisar un código fuente Rmd que sirve de base a un documento publicado en la web en html. Este documento es una de las guías prácticas del curso de estadística multivariada, publicada completa aquí.
Esta segunda práctica tiene por objetivo repasar algunos conceptos básicos de los cursos anteriores de Estadística Descriptiva y Estadística Correlacional. Asume como base el desarrollo de la Práctica 1, a la cual se hará referencia permanente.
En la Práctica 1 se desarrolló un código de preparación de datos que generó una base de datos procesada para el análisis. En esta Práctica 2 comenzamos con el segundo momento de procesamiento de datos, que es el análisis propiamente tal. El análisis se divide en descripción de variables y contraste de hipótesis. En esta práctica nos enfocaremos en la primera fase, que llega hasta el punto 3 del código de análisis:
Al igual que el Código de Preparación, el Código de Análisis posee una estructura definida. En este caso son 4 partes, donde las primeras son similares al código de preparación:
Al final de esta práctica la idea es que cada un_ pueda avanzar hasta el punto 3 del Código de Análisis. El punto 4 (contraste de hipótesis) se desarrollará más adelante en este curso con énfasis en la técnica de regresión.
La explicación de esta parte del código se encuentra en la sección correspondiente de la práctica 1.
::p_load(dplyr, #Manipulacion de datos
pacman#Tablas
stargazer, # Tablas
sjmisc, # Tablas
summarytools, #Tablas
kableExtra, #Tablas y gráficos
sjPlot, # Correlaciones
corrplot, # Información de la sesión de trabajo sessioninfo)
Vamos a cargar la base de datos ELSOC_ess_merit2016.Rproc_elsoc, que generamos durante la práctica 1. Se puede llamar desde el directorio en que la guardaron dando la ruta completa, o también para esta práctica la podemos llamar directamente desde nuestro sitio web:
load(url("https://multivariada.netlify.app/assignment/data/proc/ELSOC_ess_merit2016.RData")) #Cargar base de datos
names(proc_elsoc) # Muestra los nombres de las variables de la base de datos
## [1] "mesfuerzo" "mtalento" "ess" "edcine" "sexo"
## [6] "edad" "pmerit" "sum_merit" "mean_merit" "pt_merit"
dim(proc_elsoc) # Dimensiones
## [1] 2927 10
En el caso de esta base, 2927 casos y 10 variables
Recordando el contenido de cada variable preparada en la práctica 1:
[merit
] = Indice promedio de percepción de meritocracia.
[ess
] = Estatus Social Subjetivo: Donde se ubicaria ud. en la sociedad chilena” (0 = el nivel mas bajo; 10 = el nivel mas alto)
[edcine
] = Nivel educacional(1 = Primaria incompleta menos, 2 = Primaria y secundaria baja, 3 = Secundaria alta, 4 = Terciaria ciclo corto, 5 = Terciaria y Postgrado)
[sexo
] = Sexo (O = Hombre; 1 = Mujer)
[edad
] = ¿Cuáles su edad? (años cumplidos)
Los resultados referidos a descripción de variables se presentan en dos momentos del reporte de investigación:
en la sección de metodología, cuando se presentan las variables del estudio en una tabla descriptiva de variables.
en la sección de análisis, que en general comienza con una exploración de asociaciones entre variables, también conocido como análisis descriptivo.
A continuación se presentan dos opciones de generar esta tabla descriptiva de variables con distintas librerías de R.
a. Tabla descriptiva con stargazer
stargazer
La función stargazer
(de la librería del mismo nombre) permitirá mostrar los principales estadísticos descriptivos univariados de las variables: medidas de tendencia central (media), de dispersión (desviación estándar) y posición (mínimo, máximo, percentiles).
stargazer(proc_elsoc,type = "text")
##
## ===================================================
## Statistic N Mean St. Dev. Min Pctl(25) Pctl(75) Max
## ===================================================
Algunas observaciones sobre esta tabla:
La opción type="text"
permite que podamos ver los resultados directamente en la consola, de manera bastante rudimentaria. Con otras opciones que veremos más adelante se puede estilizar para su publicación.
Una distinción relevante a considerar cuando se describen variables es si estas son categóricas o continuas. La definición de si una variables es tratada como categórica o continua es algo que hace el/la autor/a del reporte, sin embargo hay variables nominales como sexo que claramente corresponden a categóricas, y por lo tanto no corresponde hacer un promedio entre ambas. Sin embargo, como esta variable está codificada 0 (hombre) y 1 (mujer), en este caso lo que indica el valor de la columna promedio (Mean=0.60) es la proporción de mujeres vs hombres. En otras palabras, hay un 60% de mujeres y 40% de hombres en la muestra.
b. Tablas descriptivas con descr
, librería sjmiscsjmisc::descr
La opción básica de descr
es la siguiente:
::descr(proc_elsoc) sjmisc
##
## ## Basic descriptive statistics
##
## var type label n NA.prc mean sd se md
## mesfuerzo numeric Recompensa: esfuerzo 2909 0.61 2.57 1.05 0.02 2.0
## mtalento numeric Recompensa: talento 2907 0.68 2.74 1.06 0.02 3.0
## ess numeric Estatus Social Subjetivo 2915 0.41 4.33 1.57 0.03 5.0
## edcine numeric Educación 2925 0.07 3.18 1.21 0.02 3.0
## sexo numeric Sexo 2927 0.00 0.60 0.49 0.01 1.0
## edad numeric Edad 2927 0.00 46.09 15.29 0.28 46.0
## pmerit numeric Meritocracia promedio 2898 0.99 2.65 0.97 0.02 2.5
## sum_merit numeric sum_merit 2927 0.00 5.28 1.96 0.04 5.0
## mean_merit numeric mean_merit 2918 0.31 2.66 0.97 0.02 2.5
## pt_merit numeric pt_merit 2918 0.31 5.29 1.94 0.04 5.0
## trimmed range iqr skew
## 2.56 4 (1-5) 1.0 0.42
## 2.76 4 (1-5) 2.0 0.18
## 4.36 10 (0-10) 2.0 -0.01
## 3.23 4 (1-5) 1.0 -0.15
## 0.63 1 (0-1) 1.0 -0.42
## 45.90 70 (18-88) 25.0 0.07
## 2.66 4 (1-5) 1.5 0.26
## 5.29 10 (0-10) 3.0 0.22
## 2.66 4 (1-5) 1.5 0.26
## 5.30 9 (1-10) 3.0 0.26
En este caso utilizamos la forma librería::función
(sjmisc::descr
), ya que la función descr
también existe en otras librerías y así nos aseguramos que la función utilizada es de esa librería específica.
Seleccionamos algunas columnas específicas con información más relevante con la opción show
. Además, agregamos la función kable
para obtener una tabla que luego sea fácilmente publicable en distintos formatos (a profundizar en una práctica posterior):
::descr(proc_elsoc,
sjmiscshow = c("label","range", "mean", "sd", "NA.prc", "n"))%>%
kable(.,"markdown")
var | label | n | NA.prc | mean | sd | range | |
---|---|---|---|---|---|---|---|
5 | mesfuerzo | Recompensa: esfuerzo | 2909 | 0.6149641 | 2.5727054 | 1.0466874 | 4 (1-5) |
6 | mtalento | Recompensa: talento | 2907 | 0.6832935 | 2.7389061 | 1.0596182 | 4 (1-5) |
3 | ess | Estatus Social Subjetivo | 2915 | 0.4099761 | 4.3300172 | 1.5666965 | 10 (0-10) |
2 | edcine | Educación | 2925 | 0.0683293 | 3.1839316 | 1.2066058 | 4 (1-5) |
9 | sexo | Sexo | 2927 | 0.0000000 | 0.6026648 | 0.4894300 | 1 (0-1) |
1 | edad | Edad | 2927 | 0.0000000 | 46.0908780 | 15.2867983 | 70 (18-88) |
7 | pmerit | Meritocracia promedio | 2898 | 0.9907755 | 2.6538992 | 0.9694792 | 4 (1-5) |
10 | sum_merit | sum_merit | 2927 | 0.0000000 | 5.2770755 | 1.9612002 | 10 (0-10) |
4 | mean_merit | mean_merit | 2918 | 0.3074821 | 2.6576422 | 0.9713031 | 4 (1-5) |
8 | pt_merit | pt_merit | 2918 | 0.3074821 | 5.2933516 | 1.9421608 | 9 (1-10) |
c. Tabla descriptiva con summarytools::dfSummary
summarytools::dfSummary
Esta tercera opción nos ofrece una tabla aún más detallada, con gráficos para cada variable, las frecuencias para cada valor, y las etiquetas de las variables, por lo que es muy recomendable.
Se específica de la siguiente manera:
dfSummary(proc_elsoc, plain.ascii = FALSE)
## ### Data Frame Summary
## #### proc_elsoc
## **Dimensions:** 2927 x 10
## **Duplicates:** 396
##
## -----------------------------------------------------------------------------------------------------------------------------------------------
## No Variable Label Stats / Values Freqs (% of Valid) Graph Valid Missing
## ---- ------------- -------------------------- -------------------------- -------------------- ---------------------------- ---------- ---------
## 1 mesfuerzo\ Recompensa: esfuerzo Mean (sd) : 2.6 (1)\ 1 : 357 (12.3%)\ II \ 2909\ 18\
## [numeric] min < med < max:\ 2 : 1331 (45.8%)\ IIIIIIIII \ (99.4%) (0.6%)
## 1 < 2 < 5\ 3 : 497 (17.1%)\ III \
## IQR (CV) : 1 (0.4) 4 : 646 (22.2%)\ IIII \
## 5 : 78 ( 2.7%)
##
## 2 mtalento\ Recompensa: talento Mean (sd) : 2.7 (1.1)\ 1 : 288 ( 9.9%)\ I \ 2907\ 20\
## [numeric] min < med < max:\ 2 : 1163 (40.0%)\ IIIIIIII \ (99.3%) (0.7%)
## 1 < 3 < 5\ 3 : 559 (19.2%)\ III \
## IQR (CV) : 2 (0.4) 4 : 814 (28.0%)\ IIIII \
## 5 : 83 ( 2.9%)
##
## 3 ess\ Estatus Social Subjetivo Mean (sd) : 4.3 (1.6)\ 11 distinct values \ 2915\ 12\
## [numeric] min < med < max:\ \ \ \ \ \ \ \ \ :\ (99.6%) (0.4%)
## 0 < 5 < 10\ \ \ \ \ \ \ . :\
## IQR (CV) : 2 (0.4) \ \ \ \ . : :\
## \ \ \ \ : : : .\
## . : : : : : .
##
## 4 edcine\ Educación Mean (sd) : 3.2 (1.2)\ 1 : 359 (12.3%)\ II \ 2925\ 2\
## [numeric] min < med < max:\ 2 : 297 (10.2%)\ II \ (99.9%) (0.1%)
## 1 < 3 < 5\ 3 : 1251 (42.8%)\ IIIIIIII \
## IQR (CV) : 1 (0.4) 4 : 483 (16.5%)\ III \
## 5 : 535 (18.3%) III
##
## 5 sexo\ Sexo Min : 0\ 0 : 1163 (39.7%)\ IIIIIII \ 2927\ 0\
## [numeric] Mean : 0.6\ 1 : 1764 (60.3%) IIIIIIIIIIII (100.0%) (0.0%)
## Max : 1
##
## 6 edad\ Edad Mean (sd) : 46.1 (15.3)\ 63 distinct values \ 2927\ 0\
## [numeric] min < med < max:\ \ \ . . . : :\ (100.0%) (0.0%)
## 18 < 46 < 88\ . : : : : : .\
## IQR (CV) : 25 (0.3) : : : : : : : :\
## : : : : : : : :\
## : : : : : : : : .
##
## 7 pmerit\ Meritocracia promedio Mean (sd) : 2.7 (1)\ 9 distinct values I \ 2898\ 29\
## [numeric] min < med < max:\ \ (99.0%) (1.0%)
## 1 < 2.5 < 5\ IIIIIII \
## IQR (CV) : 1.5 (0.4) I \
## III \
## I \
## III \
## \
##
## 8 sum_merit\ Mean (sd) : 5.3 (2)\ 11 distinct values \ 2927\ 0\
## [numeric] min < med < max:\ \ \ \ \ \ \ :\ (100.0%) (0.0%)
## 0 < 5 < 10\ \ \ \ \ \ \ :\
## IQR (CV) : 3 (0.4) \ \ \ \ \ \ : \ \ . \ \ .\
## \ \ \ \ \ \ : \ \ : \ \ :\
## \ \ : . : : : : :
##
## 9 mean_merit\ Mean (sd) : 2.7 (1)\ 9 distinct values I \ 2918\ 9\
## [numeric] min < med < max:\ \ (99.7%) (0.3%)
## 1 < 2.5 < 5\ IIIIIII \
## IQR (CV) : 1.5 (0.4) I \
## III \
## I \
## III \
## \
##
## 10 pt_merit\ Mean (sd) : 5.3 (1.9)\ 1 : 1 ( 0.0%)\ \ 2918\ 9\
## [numeric] min < med < max:\ 2 : 249 ( 8.5%)\ I \ (99.7%) (0.3%)
## 1 < 5 < 10\ 3 : 81 ( 2.8%)\ \
## IQR (CV) : 3 (0.4) 4 : 1051 (36.0%)\ IIIIIII \
## 5 : 223 ( 7.6%)\ I \
## 6 : 536 (18.4%)\ III \
## 7 : 169 ( 5.8%)\ I \
## 8 : 528 (18.1%)\ III \
## 9 : 38 ( 1.3%)\ \
## 10 : 42 ( 1.4%)
## -----------------------------------------------------------------------------------------------------------------------------------------------
Es muy ancha para visualizar bien en la consola de R, pero en su versión más definitiva de publicación se verá así:
view(dfSummary(proc_elsoc, headings=FALSE))
No | Variable | Label | Stats / Values | Freqs (% of Valid) | Graph | Valid | Missing | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | mesfuerzo [numeric] | Recompensa: esfuerzo | Mean (sd) : 2.6 (1) min < med < max: 1 < 2 < 5 IQR (CV) : 1 (0.4) |
|
2909 (99.4%) | 18 (0.6%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | mtalento [numeric] | Recompensa: talento | Mean (sd) : 2.7 (1.1) min < med < max: 1 < 3 < 5 IQR (CV) : 2 (0.4) |
|
2907 (99.3%) | 20 (0.7%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | ess [numeric] | Estatus Social Subjetivo | Mean (sd) : 4.3 (1.6) min < med < max: 0 < 5 < 10 IQR (CV) : 2 (0.4) | 11 distinct values | 2915 (99.6%) | 12 (0.4%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | edcine [numeric] | Educación | Mean (sd) : 3.2 (1.2) min < med < max: 1 < 3 < 5 IQR (CV) : 1 (0.4) |
|
2925 (99.9%) | 2 (0.1%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | sexo [numeric] | Sexo | Min : 0 Mean : 0.6 Max : 1 |
|
2927 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | edad [numeric] | Edad | Mean (sd) : 46.1 (15.3) min < med < max: 18 < 46 < 88 IQR (CV) : 25 (0.3) | 63 distinct values | 2927 (100.0%) | 0 (0.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | pmerit [numeric] | Meritocracia promedio | Mean (sd) : 2.7 (1) min < med < max: 1 < 2.5 < 5 IQR (CV) : 1.5 (0.4) | 9 distinct values | 2898 (99.0%) | 29 (1.0%) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | sum_merit [numeric] | Mean (sd) : 5.3 (2) min < med < max: 0 < 5 < 10 IQR (CV) : 3 (0.4) | 11 distinct values | 2927 (100.0%) | 0 (0.0%) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 | mean_merit [numeric] | Mean (sd) : 2.7 (1) min < med < max: 1 < 2.5 < 5 IQR (CV) : 1.5 (0.4) | 9 distinct values | 2918 (99.7%) | 9 (0.3%) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | pt_merit [numeric] | Mean (sd) : 5.3 (1.9) min < med < max: 1 < 5 < 10 IQR (CV) : 3 (0.4) |
|
2918 (99.7%) | 9 (0.3%) |
Generated by summarytools 0.9.9 (R version 4.0.3)
2021-09-21
Nota sobre casos perdidos (NAs)na.omit(data)
Hasta ahora hemos mantenido los casos perdidos en la base de datos, ya que son importantes de reportar en la tabla general de variables. Sin embargo, de aquí en adelante se recomienda trabajar solo con casos completos, es decir, sacar los casos perdidos. El quitar los casos perdidos de una base de datos es muy simple con la función na.omit
, pero para tomar precauciones y asegurarse que funciona se recomienda el siguiente procedimiento:
dim
sum(is.na(proc_elsoc))
proc_elsoc <-na.omit(proc_elsoc)
dim
para asegurarnos que se borraroncopy_labels
, de la librería sjlabelled
.<-proc_elsoc
proc_elsoc_original dim(proc_elsoc)
## [1] 2927 10
sum(is.na(proc_elsoc))
## [1] 99
<-na.omit(proc_elsoc)
proc_elsoc dim(proc_elsoc)
## [1] 2887 10
<-sjlabelled::copy_labels(proc_elsoc,proc_elsoc_original) proc_elsoc
Dado que las hipótesis de investigación corresponden a asociación entre variables, antes de realizar el contraste de hipótesis se suele presentar un análisis descriptivio que explora las asociaciones entre variables.
La forma de explorar las asociaciones entre variables dependen de la naturaleza de las variables que se asocian:
En esta sección también es muy relevante la visualización de datos mediante gráficos, por lo que incluiremos algunos.
El uso tanto de tablas como de gráficos en el reporte queda a discreción del/a autor/a. La pregunta que orienta esta decisión es: ¿Me permite enriquecer la discusión de los resultados en relación a las hipótesis planteadas?
Para tablas de contingencia categóricas utilizaremos la función sjt.xtab, de la librería sjPlot
. Veamos primero una especificación simple:
sjt.xtab(proc_elsoc$edcine, proc_elsoc$sexo)
Educación | Sexo | Total | |
---|---|---|---|
Hombre | Mujer | ||
Primaria incompleta menos |
102 | 247 | 349 |
Primaria y secundaria baja |
105 | 186 | 291 |
Secundaria alta | 511 | 727 | 1238 |
Terciaria ciclo corto |
186 | 292 | 478 |
Terciaria y Postgrado |
245 | 286 | 531 |
Total | 1149 | 1738 | 2887 | χ2=28.154 · df=4 · Cramer’s V=0.099 · p=0.000 |
Al ejecutar el comando, el resultado aparece automáticamente en el visor de RStudio. A esta tabla podemos también agregar porcentajes de filas y/o columnas, según sea lo más relevante analizar. En general se recomienda agregar solo un porcentaje, de otra manera la tabla se satura de información. Además, vamos a quitar el pie de la tabla (conviene dejarlo solo si hay hipótesis asociadas al cruce simple entre las dos variables).
sjt.xtab(proc_elsoc$edcine, proc_elsoc$sexo,
show.col.prc=TRUE,
show.summary=FALSE
)
Educación | Sexo | Total | |
---|---|---|---|
Hombre | Mujer | ||
Primaria incompleta menos |
102 8.9 % |
247 14.2 % |
349 12.1 % |
Primaria y secundaria baja |
105 9.1 % |
186 10.7 % |
291 10.1 % |
Secundaria alta |
511 44.5 % |
727 41.8 % |
1238 42.9 % |
Terciaria ciclo corto |
186 16.2 % |
292 16.8 % |
478 16.6 % |
Terciaria y Postgrado |
245 21.3 % |
286 16.5 % |
531 18.4 % |
Total |
1149 100 % |
1738 100 % |
2887 100 % |
En ejemplo vamos a explorar datos de nuestra variable de percepción de meritocracia pmerit por los niveles educacionales edcine.
Una forma rápida de explorar esto es mediante la función tapply
, que nos entrega de manera simple el promedio de una variable por otra:
tapply(proc_elsoc$pmerit, proc_elsoc$edcine, mean)
## 1 2 3 4 5
## 2.968481 2.697595 2.662763 2.479079 2.559322
Aquí vemos en promedio de pmerit para cada uno de los 5 niveles de la variable educación edcine. Si se estima conveniente este tipo de cruces se puede representar también en una tabla con más opciones de información y también de publicación. Para esto utilizaremos una función algo más compleja de la librería dplyr
.dplyr Esta librería permite aplicar una serie de funciones concatenadas y enlazadas mediante el operador %>%
. El sentido de cada función aparece comentado abajo:
%>% # se especifica la base de datos
proc_elsoc select(pmerit,edcine) %>% # se seleccionan las variables
::group_by(Educación=sjlabelled::as_label(edcine)) %>% # se agrupan por la variable categórica y se usan sus etiquetas con as_label
dplyr::summarise(Obs.=n(),Promedio=mean(pmerit),SD=sd(pmerit)) %>% # se agregan las operaciones a presentar en la tabla
dplyrkable(, format = "markdown") # se genera la tabla
Educación | Obs. | Promedio | SD |
---|---|---|---|
Primaria incompleta menos | 349 | 2.968481 | 0.9828315 |
Primaria y secundaria baja | 291 | 2.697595 | 1.0041093 |
Secundaria alta | 1238 | 2.662762 | 0.9685655 |
Terciaria ciclo corto | 478 | 2.479080 | 0.9431323 |
Terciaria y Postgrado | 531 | 2.559322 | 0.9223446 |
Esta asocación también se puede representar de manera más simple con un gráfico, en este caso de cajas o boxplot mediante la función plot_grpfrq
de sjPlot
:sjPlot::plot_grpfrq
plot_grpfrq(proc_elsoc$pmerit,proc_elsoc$edcine,
type = "box")
Algunas notas sobre correlación:
El coeficiente de correlación mide la fuerza de la relación lineal entre dos variable continuas. Esta puede ser:
El rango de variación del coeficiente de correlación va desde -1 (correlación negativa perfecta) y 1 (correlación positiva perfecta).
Existen diferentes formas de cálculo del coeficiente de correlación (Spearman, Kendall, Pearson).
En el coeficiente de correlación se analiza tanto su tamaño como su significación estadística.
En lo que sigue nos concentraremos en el coeficiente de correlación más utilizado que es el de Pearson, que se aplica cuando las variables son de naturaleza continua.
Tablas/matrices de correlación
Las correlaciones entre variables se presentan en general en modo de matrices, es decir, las variables se presentan en las filas y las columnas y en las celdas donde se cruzan los pares de variables se muestra su coeficiente de correlación.
En su forma simple en R se aplica la función cor
a lacor base de datos, y la guardamos en un objeto que le damos el nombre M para futuras operaciones:
<- cor(proc_elsoc)
M M
## mesfuerzo mtalento ess edcine sexo
## mesfuerzo 1.000000000 0.69768811 -0.004312135 -0.12167659 -0.04480502
## mtalento 0.697688106 1.00000000 0.018447696 -0.10582754 -0.03759340
## ess -0.004312135 0.01844770 1.000000000 0.28959248 -0.03745546
## edcine -0.121676591 -0.10582754 0.289592479 1.00000000 -0.08682644
## sexo -0.044805024 -0.03759340 -0.037455462 -0.08682644 1.00000000
## edad 0.096495547 0.07383771 -0.066031873 -0.37660283 0.06121699
## pmerit 0.920404032 0.92224547 0.007740598 -0.12341680 -0.04469515
## sum_merit 0.920404032 0.92224547 0.007740598 -0.12341680 -0.04469515
## mean_merit 0.920404032 0.92224547 0.007740598 -0.12341680 -0.04469515
## pt_merit 0.920404032 0.92224547 0.007740598 -0.12341680 -0.04469515
## edad pmerit sum_merit mean_merit pt_merit
## mesfuerzo 0.09649555 0.920404032 0.920404032 0.920404032 0.920404032
## mtalento 0.07383771 0.922245465 0.922245465 0.922245465 0.922245465
## ess -0.06603187 0.007740598 0.007740598 0.007740598 0.007740598
## edcine -0.37660283 -0.123416804 -0.123416804 -0.123416804 -0.123416804
## sexo 0.06121699 -0.044695146 -0.044695146 -0.044695146 -0.044695146
## edad 1.00000000 0.092369792 0.092369792 0.092369792 0.092369792
## pmerit 0.09236979 1.000000000 1.000000000 1.000000000 1.000000000
## sum_merit 0.09236979 1.000000000 1.000000000 1.000000000 1.000000000
## mean_merit 0.09236979 1.000000000 1.000000000 1.000000000 1.000000000
## pt_merit 0.09236979 1.000000000 1.000000000 1.000000000 1.000000000
Este es el reporte simple, pero no muy amigable a la vista. Para una versión más amable utilizamos la función sjt.corrsjPlot::sjt.corr:NOTA: sjPlot actualizó su librería a fines de Mayo (versión 2.8.4); para quienes hayan actualizado a esta versión, la función para tabla de correlaciones ahora es tab_corr
::tab_corr(proc_elsoc) sjPlot
Recompensa: esfuerzo | Recompensa: talento | Estatus Social Subjetivo | Educación | Sexo | Edad | Meritocracia promedio | sum_merit | mean_merit | pt_merit | |
---|---|---|---|---|---|---|---|---|---|---|
Recompensa: esfuerzo | 0.698*** | -0.004 | -0.122*** | -0.045* | 0.096*** | 0.920*** | 0.920*** | 0.920*** | 0.920*** | |
Recompensa: talento | 0.698*** | 0.018 | -0.106*** | -0.038* | 0.074*** | 0.922*** | 0.922*** | 0.922*** | 0.922*** | |
Estatus Social Subjetivo | -0.004 | 0.018 | 0.290*** | -0.037* | -0.066*** | 0.008 | 0.008 | 0.008 | 0.008 | |
Educación | -0.122*** | -0.106*** | 0.290*** | -0.087*** | -0.377*** | -0.123*** | -0.123*** | -0.123*** | -0.123*** | |
Sexo | -0.045* | -0.038* | -0.037* | -0.087*** | 0.061** | -0.045* | -0.045* | -0.045* | -0.045* | |
Edad | 0.096*** | 0.074*** | -0.066*** | -0.377*** | 0.061** | 0.092*** | 0.092*** | 0.092*** | 0.092*** | |
Meritocracia promedio | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | 1.000*** | 1.000*** | 1.000*** | |
sum_merit | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | 1.000*** | 1.000*** | 1.000*** | |
mean_merit | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | 1.000*** | 1.000*** | 1.000*** | |
pt_merit | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | 1.000*** | 1.000*** | 1.000*** | |
Computed correlation used pearson-method with listwise-deletion. |
Con esta mejor visualización, algunas observaciones sobre la matriz de correlaciones:
::tab_corr(proc_elsoc,
sjPlottriangle = "lower")
Recompensa: esfuerzo | Recompensa: talento | Estatus Social Subjetivo | Educación | Sexo | Edad | Meritocracia promedio | sum_merit | mean_merit | pt_merit | |
---|---|---|---|---|---|---|---|---|---|---|
Recompensa: esfuerzo | ||||||||||
Recompensa: talento | 0.698*** | |||||||||
Estatus Social Subjetivo | -0.004 | 0.018 | ||||||||
Educación | -0.122*** | -0.106*** | 0.290*** | |||||||
Sexo | -0.045* | -0.038* | -0.037* | -0.087*** | ||||||
Edad | 0.096*** | 0.074*** | -0.066*** | -0.377*** | 0.061** | |||||
Meritocracia promedio | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | ||||
sum_merit | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | 1.000*** | |||
mean_merit | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | 1.000*** | 1.000*** | ||
pt_merit | 0.920*** | 0.922*** | 0.008 | -0.123*** | -0.045* | 0.092*** | 1.000*** | 1.000*** | 1.000*** | |
Computed correlation used pearson-method with listwise-deletion. |
Una segunda forma de presentar matrices de correlaciones es de manera gráfica con la librería corrplot
, cuya función corrplot.mixed
corrplot::corrplot.mixedse aplica al objeto que generamos con la función cor
(M):
corrplot.mixed(M)
Este gráfico/matriz representa el grado de asociación entre variables mediante el tamaño de los círculos e intensidad de colores, y el signo de la asociación se representa con una gradiente de colores que va del azul (positivo) al rojo (negativo). Bajo la diagonal aparecen los indices de correlación entre pares de variables.
Finalmente, también se puede representar la correlación entre dos variables en un gráfico de nube de puntos o scatterplot:sjPlot::plot_scatter
names(proc_elsoc)
## [1] "mesfuerzo" "mtalento" "ess" "edcine" "sexo"
## [6] "edad" "pmerit" "sum_merit" "mean_merit" "pt_merit"
plot_scatter(proc_elsoc, edad, ess)