class: front <!--- Para correr en ATOM - open terminal, abrir R (simplemente, R y enter) - rmarkdown::render('static/docpres/07_interacciones/7interacciones.Rmd', 'xaringan::moon_reader') About macros.js: permite escalar las imágenes como [scale 50%](path to image), hay si que grabar ese archivo js en el directorio. ---> .pull-left[ # Estadística Multivariada ## Juan Carlos Castillo ## Sociología FACSO - UChile ## 1er Sem 2020 ## [multivariada.netlify.com](https://multivariada.netlify.com) ] .pull-right[ .right[ ![:scale 70%](https://multivariada.netlify.com/img/hex_multiva.png) <br> <br> <br> ## Sesión 12: Pendientes y complementos ] ] --- layout: true class: animated, fadeIn --- class: inverse ## Temas varios pendientes & complementos *1. Variables* - Valores perdidos - Estandarización - Índices *2. Presentación modelos* *3. Correlaciones categóricas* --- class: inverse ## Temas varios pendientes & complementos *1. Variables* - **Valores perdidos** - Estandarización - Índices *2. Presentación modelos* *3. Correlaciones categóricas* --- ## Valores perdidos - la proporción de valores perdidos no es trivial para la estimación, principalmente si estos perdidos no son aleatorios - atender siempre al N de los modelos, no debería presentar una proporción de perdidos > 30% (app) - ante alta proporción de valores perdidos, análizar causas e intentar rescatar la mayor cantidad de casos posibles --- ## Rescatando valores perdidos: variable dependiente - descriptivos y cruces, buscar el origen de los perdidos -- - descartar posibles preguntas filtro en el instrumento -- - evaluar si cambiar de base de datos -- - evaluar alternativa a OLS que permita integrar perdidos como categoría luego de transformación (ej: regresión logistica multinomial) --- ## Rescatando valores perdidos: variable(s) independiente(s) - establecer origen de la pérdida de datos - procedimientos de imputación (avanzado) - alternativa simple: transformar a categórica e incluir un nivel/categoría de perdidos --- ## Rescatando perdidos: ingreso - caso típico de presencia de valores perdidos - pasar a categorías (ej: deciles/quintiles) y agregar categoría con missings - Detalles en [Práctica 11](https://multivariada.netlify.app/assignment/11-code/#recuperar-casos-perdidos-1) --- ## Ejemplo: variable autoubicación izquierda-derecha Datos ELSOC 2016 .tiny[ ``` ## ## Autoubicacion escala izquierda-derecha (x) <numeric> ## # total N=2927 valid N=2927 mean=-13.20 sd=139.05 ## ## Value | Label | N | Raw % | Valid % | Cum. % ## -------------------------------------------------------------------- ## -999 | No Responde (no leer) | 23 | 0.79 | 0.79 | 0.79 ## -888 | No Sabe (no leer) | 43 | 1.47 | 1.47 | 2.25 ## 0 | 0 Izquierda | 122 | 4.17 | 4.17 | 6.42 ## 1 | 1 | 58 | 1.98 | 1.98 | 8.40 ## 2 | 2 | 111 | 3.79 | 3.79 | 12.20 ## 3 | 3 | 135 | 4.61 | 4.61 | 16.81 ## 4 | 4 | 157 | 5.36 | 5.36 | 22.17 ## 5 | 5 Centro | 604 | 20.64 | 20.64 | 42.81 ## 6 | 6 | 98 | 3.35 | 3.35 | 46.16 ## 7 | 7 | 94 | 3.21 | 3.21 | 49.37 ## 8 | 8 | 84 | 2.87 | 2.87 | 52.24 ## 9 | 9 | 23 | 0.79 | 0.79 | 53.02 ## 10 | 10 Derecha | 110 | 3.76 | 3.76 | 56.78 ## 11 | 11 Independiente (no leer) | 200 | 6.83 | 6.83 | 63.61 ## 12 | 12 Ninguno (no leer) | 1065 | 36.39 | 36.39 | 100.00 ## <NA> | <NA> | 0 | 0.00 | <NA> | <NA> ``` ] --- ## Ejemplo: variable autoubicación izquierda-derecha - Definir categorías, ejemplo: Ninguno, Izquierda, Centro, Derecha, Independiente - Decidir sobre valores que se asocian a cada categoría - Recodificar - Re-etiquetar --- ## Ejemplo: variable autoubicación izquierda-derecha .medium[ ```r # Recodificar elsoc_2016$c15_cat <- car::recode(elsoc_2016$c15, "c(-888,-999,12)=1; c(0,1,2,3)=2; c(4,5,6)=3; c(7,8,9,10)=4; 11=5") # Re-etiquetar elsoc_2016$c15_cat <- set_labels(elsoc_2016$c15_cat, labels= c("Ninguno"=1, "Izquierda"=2, "Centro"=3, "Derecha"=4, "Independiente"=5)) ``` ] --- ## Ejemplo: variable autoubicación izquierda-derecha .medium[ ``` ## ## Autoubicacion escala izquierda-derecha (x) <numeric> ## # total N=2927 valid N=2927 mean=2.32 sd=1.27 ## ## Value | Label | N | Raw % | Valid % | Cum. % ## ------------------------------------------------------- ## 1 | Ninguno | 1131 | 38.64 | 38.64 | 38.64 ## 2 | Izquierda | 426 | 14.55 | 14.55 | 53.19 ## 3 | Centro | 859 | 29.35 | 29.35 | 82.54 ## 4 | Derecha | 311 | 10.63 | 10.63 | 93.17 ## 5 | Independiente | 200 | 6.83 | 6.83 | 100.00 ## <NA> | <NA> | 0 | 0.00 | <NA> | <NA> ``` ] --- class: inverse middle center # Recordar reportar el proceso de transformación en la sección de variables --- class: inverse ## Temas varios pendientes & complementos *1. Variables* - Valores perdidos - **Estandarización** - Índices *2. Presentación modelos* *3. Correlaciones categóricas* --- # Estandarización ## ¿Qué coeficiente es mayor que otro? - usualmente, los coeficientes se encuentran en escalas diferentes - para poder comparar la magnitud de un coeficiente en relación a los otros se requiere pasar a una escala común - esto se efectúa mediante el proceso de **estandarización** --- ## Estandarización de Coeficientes - Para poder expresar las variables en escalas comparables, sus valores se ponderan respecto de su desviación estándar. - Para ello, a cada valor de la variable se le resta el promedio y se divide por su desviación estándar, lo que se conoce como **puntaje Z**: `$$z_x=\frac{x-\bar{x}}{sd(x)}$$` - Este procedimiento se aplica tanto a la dependiente como a las independientes --- ## Estandarización: interpretación - al estandarizar, los coeficientes de regresión reflejan cuantas **desviaciones estándar** cambia _Y_ como consecuencia del cambio en **una desviación estándar** _X_. - los coeficientes ahora son comparables entre sí en base a su magnitud --- ## Estandarización de Coeficientes De la [Práctica 6 - regresión multiple 2](https://multivariada.netlify.app/assignment/06-code/): - *colGPA*: promedio general de calificaciones de la universidad, en escala de 0 a 4 puntos. - *hsGPA*: promedio general de calificaciones en la enseñanza media, en escala de 0 a 4 puntos - *ACT* : puntaje en el examen de admisión a la universidad, que va de 16 a 33 puntos --- ## Estandarización de Coeficientes Función `scale` ```r library(wooldridge) data('gpa1') # Cargar base de datos gpa1 <- dplyr::select(gpa1, colGPA, hsGPA, ACT) col_model <- lm(colGPA ~ ACT + hsGPA, data = gpa1) *gpa1_std = data.frame(scale(gpa1)) col_model_std <- lm(colGPA ~ ACT + hsGPA, data = gpa1_std) ``` --- ## Estandarización de Coeficientes <br> <table style="border-collapse:collapse; border:none;"> <tr> <th style="border-top: double; text-align:center; font-style:normal; font-weight:bold; padding:0.2cm; text-align:left; "> </th> <th colspan="2" style="border-top: double; text-align:center; font-style:normal; font-weight:bold; padding:0.2cm; ">Modelo 1</th> <th colspan="2" style="border-top: double; text-align:center; font-style:normal; font-weight:bold; padding:0.2cm; ">Modelo 2 (std)</th> </tr> <tr> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; text-align:left; ">Predictores</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">β</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">std. Error</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">β</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">std. Error</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">(Intercept)</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">1.286 <sup>***</sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.341</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.000 <sup></sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.077</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">ACT</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.009 <sup></sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.011</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.072 <sup></sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.082</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">hsGPA</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.453 <sup>***</sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.096</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.390 <sup>***</sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.082</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; padding-top:0.1cm; padding-bottom:0.1cm; border-top:1px solid;">Observations</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left; border-top:1px solid;" colspan="2">141</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left; border-top:1px solid;" colspan="2">141</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; padding-top:0.1cm; padding-bottom:0.1cm;">R<sup>2</sup> / R<sup>2</sup> adjusted</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left;" colspan="2">0.176 / 0.164</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left;" colspan="2">0.176 / 0.164</td> </tr> <tr> <td colspan="5" style="font-style:italic; border-top:double black; text-align:right;">* p<0.05 ** p<0.01 *** p<0.001</td> </tr> </table> --- ## Estandarización de Coeficientes En este caso se puede observar que por el aumento en **una desviación estándar** en las calificaciones de enseñanza media (hsGPA), el promedio de notas en la universidad (colGPA) aumenta **0.39 desviaciones estándar**. Al estar en una misma unidad de medida, podemos comparar los coeficientes en términos de su tamaño. --- class: inverse ## Temas varios pendientes & complementos *1. Variables* - Valores perdidos - Estandarización - **Índices** *2. Presentación modelos* *3. Correlaciones categóricas* --- .pull-left-narrow[ # Índices Algunos conceptos o atributos pueden estar medidos por indicadores múltiples ] -- .pull-right-wide[ ![](bateria.png) ] --- # Índices - la presencia de indicadores múltiples para medir un mismo atributo/constructo se relaciona con la noción de **variable latente** - latente: subyace a los indicadores múltiples - para poder dar una métrica/puntaje a lo latente existen métodos como análisis factorial o construcción de índices --- # Índices - la forma más usual de construir un índice es mediante una suma o un promedio de los indicadores que (aparentemente) están midiendo lo mismo - Ejemplo: base de datos con indicadores c1 a c5, 4 casos: ``` ## c1 c2 c3 c4 c5 ## 1 1 NA NA 2 1 ## 2 2 2 4 3 7 ## 3 NA NA NA 7 5 ## 4 4 5 NA 8 3 ``` --- # Índice promedio ```r sjmisc::row_means(dat, n=5) ``` ``` ## c1 c2 c3 c4 c5 rowmeans ## 1 1 NA NA 2 1 NA ## 2 2 2 4 3 7 3.6 ## 3 NA NA NA 7 5 NA ## 4 4 5 NA 8 3 NA ``` La opción `n=x` indica la cantidad de información completa requerida para poder calcular el índice; en este caso, solo casos que tengan toda la información (5 indicadores) --- # Índices ```r sjmisc::row_means(dat, n=1) ``` ``` ## c1 c2 c3 c4 c5 rowmeans ## 1 1 NA NA 2 1 1.333333 ## 2 2 2 4 3 7 3.600000 ## 3 NA NA NA 7 5 6.000000 ## 4 4 5 NA 8 3 5.000000 ``` .medium[ - En este caso, basta con que tenga información en **un solo indicador** (`n=1`) para poder calcular el promedio. - Recomendación general: al menos la mitad de los indicadores] --- # Consistencia interna del índice ## ¿Qué tan bien representa el índice el atributo latente? - el supuesto detrás de la construcción del índice es que los indicadores estarían (co)relacionados entre sí. - una forma de dar cuenta del grado de asociación entre indicadores múltiples es el **Alfa de Cronbach** - El Alfa de Cronbach es a grandes rasgos un indicador de la magnitud promedio del tamaño de las correlaciones entre los indicadores. --- # Consistencia interna del índice .medium[ ```r alpha <-psych::alpha(dat) ``` ``` ## Some items ( c5 ) were negatively correlated with the total scale and ## probably should be reversed. ## To do this, run the function again with the 'check.keys=TRUE' option ``` ```r alpha$total ``` ``` ## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd ## 0.6538953 0.7221169 0.5415877 0.3938141 2.598635 0.3087548 3.958333 2.029299 ## median_r ## 0.5474255 ``` ] --- # Consistencia interna del índice El alpha que corresponde reportar es el `raw_alpha`=0.65 En general un alpha igual o mayor a **0.7** es considerado aceptable para poder utilizar el índice --- class: inverse ## Temas varios pendientes & complementos *1. Variables* - Valores perdidos - Estandarización - Índices **2. Presentación modelos** *3. Correlaciones categóricas* --- # Lógica de presentación de modelos - En general la presentación de los modelos de regresión debe permitir un buen análisis y discusión de los resultados. - Recomendaciones: modelos que vayan incorporando los predictores en orden de relevancia en la argumentación --- # Lógica de presentación de modelos - Esquema de tabla de tres modelos: - Modelo 1: predictor asociado a hipótesis principal - Modelo 2: + otros predictores relevantes asociados a hipótesis - Modelo 3: + controles --- # Fijar N modelos para comparación - recordar que los distintos modelos de una misma tabla de regresión deben tener el **mismo N** - el N puede variar ya que predictores adicionales pueden agregar casos perdidos - por lo tanto, se debe **fijar el N** al del modelo final (=con todas las variables) --- # Fijar N modelos para comparación - genear nueva base de datos solamente las variables que van a aparecer en el modelo de regresión con `select` (dplyr) - luego de esta base con variables seleccionadas eliminar los casos perdidos: `base_seleccionada <-na.omit(base_seleccionada)` - detalle aparece en [Nota sobre casos perdidos (NAs)](https://multivariada.netlify.app/assignment/02-code/#nota-sobre-casos-perdidos-nas-na-omit-data), práctica 2. --- # Considerar en el análisis de la tabla de modelos - coeficientes - significación estadística - control estadístico - ajuste general (R2, deviance) - comparación de modelos --- # Otras consideraciones: transformaciones - recordar posibilidades de transformación de variables por supuestos de linealidad, como polinomios y logaritmos ([Sesión 11 - Supuestos](https://multivariada.netlify.app/class/11-class/)) - otras transformaciones para facilitar la interpretación - ejemplo: dividir variables con un amplio rango de valores, como ingreso, por ejemplo por 100.000. Esto permite reflejar mejor el cambio en la dependiente (cambio cada 100.000 en lugar de cambio por cada peso) --- class: inverse ## Temas varios pendientes & complementos *1. Variables* - Valores perdidos - Estandarización - Índices *2. Presentación modelos* **3. Correlaciones categóricas** --- # Sobre correlaciones con variables categóricas .medium[ - el método de correlación de **Pearson** (que se utiliza muchas veces como sinónimo de correlación) esta diseñado en principio para variables continuas - sin embargo, sus coeficientes pueden ser también interpretados para el caso de una variable dicotómica con una continua (correlación punto biserial) o entre dos dicotómicas (coeficiente phi) - para correlación entre variables ordinales es más apropiado otras estimaciones como **Spearman**, que no hace supuestos distribucionales y ordena las observaciones en base a un ranking.] --- # Sobre correlaciones con variables categóricas Recumendación general: - si el contraste de hipótesis no se basa en las correlaciones sino en regresión, una matriz con base Pearson es aceptable. - también se puede utilizar una matriz de correlaciones **policóricas**, que permite ajustar el cálculo de correlaciones a variables categóricas (avanzado). - implementación en R vía librería [`psych`](https://personality-project.org/r/psych/help/tetrachor.html) --- class: inverse ## Resumen *1. Variables* - Valores perdidos - Estandarización - Índices *2. Presentación modelos* **3. Correlaciones categóricas** --- class: front .pull-left[ # Estadística Multivariada ## Juan Carlos Castillo ## Sociología FACSO - UChile ## 1er Sem 2020 ## [multivariada.netlify.com](https://multivariada.netlify.com) ] .pull-right[ .right[ <br> ![:scale 80%](https://multivariada.netlify.com/img/hex_multiva.png) ] ]