Sesión 8 Asociación de dos factores

8.1 Base de datos: LAPOP

El Proyecto de Opinión Pública de América Latina (LAPOP) es un proyecto de investigación multinacional especializando en el desarrollo, implementación y análisis de encuestas de opinión pública.

La encuesta mide los valores y comportamientos democráticos en el continente americano usando muestras probabilísticas nacionales de la población adulta en edad de votar.

Puede visualizar el cuestionario de la encuesta 2018 aqui

Puedes descargar la data aqui

library(haven)
library(kableExtra)
library(tidyverse)
lapop<-read_dta("https://github.com/ChristianChiroqueR/banco_de_datos/raw/main/DATA_Peru/PERU_LAPOP__2018.dta")

8.2 Pregunta de investigaciòn

El presente estudio tiene como objetivo investigar la posible asociación entre el ámbito de residencia (urbano, rural) y la asistencia a manifestaciones. Las manifestaciones públicas son eventos que reflejan la participación activa de la población en la expresión de demandas, opiniones o protestas sobre temas sociales, políticos o económicos.

Las brechas entre los contextos urbanos y rurales podría influir en la participación y la motivación de las personas para asistir a manifestaciones. Se plantea la hipótesis de que existe una asociación entre el ámbito de residencia y la asistencia a manifestaciones.

8.3 Preprocesamiento

  1. Identifique la variable prot3 “En los últimos 12 meses ha participado en una manifestación o protesta pública” y configure adecuadamente.

table(lapop$prot3)
## 
##    1    2 
##  217 1303
lapop$prot3<-factor(lapop$prot3, # Nombre de la variable a convertir
                     levels=1:2, # Definimos los niveles (esta variable sólo tenía 2 niveles)
                     labels=c("Sí participó", "No participó")) #Colocamos sus etiquetas
table(lapop$prot3)
## 
## Sí participó No participó 
##          217         1303
  1. Configure adecuadamente la variable TAMANO a fin de que existan dos grupos (cree una copia que se llame “AMBITO”):

  • 1: Zona urbana (Capital Nacional/Ciudad Grande/Ciudad mediana/ Ciudad pequeña)

  • 2: Zona rural (Área rural)

lapop<-lapop |> 
  mutate(ambito=case_when(tamano<5~ 1,
                          tamano==5~2,
                          TRUE~NA_real_))

Convertimos a factor y asignamos niveles:

table(lapop$ambito)
## 
##    1    2 
## 1165  356
lapop$ambito<-factor(lapop$ambito, # Nombre de la variable a convertir
                     levels=1:2, # Definimos los niveles (esta variable sólo tenía 2 niveles)
                     labels=c("Urbano", "Rural")) #Colocamos sus etiquetas
table(lapop$ambito)
## 
## Urbano  Rural 
##   1165    356

8.4 Comparación clave

Recuerdas nuestra pregunta de investigación?

Queremos saber si existe una asociación entre el ámbito de residencia y la asistencia a manifestaciones.

Dicho de otra forma:

prop.table(table(lapop$prot3))
## 
## Sí participó No participó 
##    0.1427632    0.8572368

A nivel de toda la muestra vemos que el 14.3% asistió a una manifestación y el 85.7% no. Estos porcentajes se replicaran también en el ámbito rural y en el ámbito urbano?

8.5 Tablas de contingencia

Una tabla de contingencia, también conocida como tabla de frecuencia cruzada, es una forma de organizar y resumir datos en el contexto de un estudio o investigación. Se utiliza para analizar la relación entre dos o más variables categóricas y mostrar cómo se distribuyen las observaciones en cada combinación de categorías.

En una tabla de contingencia, las variables de interés se representan en filas y columnas, y se registran las frecuencias o recuentos de las observaciones que caen en cada combinación de categorías. Esto permite visualizar de manera clara y estructurada cómo se relacionan las variables y si existe alguna asociación o dependencia entre ellas.

Las tablas de contingencia son especialmente útiles cuando se quiere examinar la relación entre variables categóricas, como género y preferencia política, ubicación geográfica y nivel educativo, o, como en este caso, el ámbito y si asiste a manifestaciones o no.

Ahora bien, estas tablas pueden contener recuentos absolutos o frecuencias relativas, y a menudo se incluyen totales marginales que muestran las frecuencias totales de cada variable.

Vamos por partes utilizando el ejemplo que hemos presentado en este ejercicio.

8.5.1 TC de frecuencias

Esta tabla se compone de filas y columnas que representan las categorías de las dos variables en estudio. En cada celda de la tabla se registra la frecuencia o recuento de observaciones que pertenecen a una combinación específica de categorías.

tabla_simple<-table(lapop$prot3, lapop$ambito)
tabla_simple
##               
##                Urbano Rural
##   Sí participó    157    60
##   No participó   1008   295

Palabra clave: FRECUENCIA!

A esta tabla simple se le puede agregar los totales marginales agregando addmargins.

Podemos agregar ambos, tanto los marginales de columnas como filas.

tabla_simple |> 
addmargins()
##               
##                Urbano Rural  Sum
##   Sí participó    157    60  217
##   No participó   1008   295 1303
##   Sum            1165   355 1520

O sólo uno de estos:

tabla_simple |> 
addmargins(1) 
##               
##                Urbano Rural
##   Sí participó    157    60
##   No participó   1008   295
##   Sum            1165   355

RECUERDA: 1 para filas y 2 para columnas!!

8.5.2 TC de proporciones

Para nuestros fines, esta tabla de contingencia es la más importante.

En una tabla de contingencia de proporciones, en lugar de mostrar los recuentos absolutos de observaciones en cada casilla, se presentan las proporciones o porcentajes de cada categoría en relación al total de observaciones.

Esta tabla de contingencia de proporciones proporciona una visión relativa de la distribución de las categorías y permite comparar las proporciones entre diferentes grupos o categorías.

El uso de la tabla de contingencia de proporciones puede ser útil para identificar patrones o tendencias en los datos y facilita la interpretación de los resultados en términos de porcentajes relativos.

Ahora bien, debemos tener cuidado cuando solicitemos los porcentajes porque debemos indicar si los porcentajes se calculan por columna o filas.

Al utilizar la funciónprop.table() en R, el argumento margin se utiliza para especificar si se deben calcular las proporciones por filas o por columnas en una tabla de contingencia.

La elección de este argumento es importante en el marco de un análisis de asociación de variables categóricas, ya que determina cómo se calcularán las proporciones y cómo se interpretarán los resultados.

Si se selecciona margin = 1, se calcularán las proporciones por filas, lo que significa que las proporciones se calcularán dentro de cada fila de la tabla. En este caso, las proporciones se interpretan como la frecuencia de una categoría en relación con el total de observaciones en esa fila.

tabla_simple |> 
  prop.table(1)
##               
##                   Urbano     Rural
##   Sí participó 0.7235023 0.2764977
##   No participó 0.7735994 0.2264006

Por otro lado, si se selecciona margin = 2, se calcularán las proporciones por columnas, lo que implica que las proporciones se calcularán dentro de cada columna de la tabla. En este caso, las proporciones se interpretan como la frecuencia de una categoría en relación con el total de observaciones en esa columna.

tabla_simple |> 
  prop.table(2)
##               
##                   Urbano     Rural
##   Sí participó 0.1347639 0.1690141
##   No participó 0.8652361 0.8309859

La elección adecuada del argumento margin depende del objetivo del análisis y las preguntas de investigación que se deseen responder. Es importante tener claridad sobre qué aspecto de la asociación entre las variables categóricas se quiere resaltar y qué interpretación es más relevante en el contexto del análisis.

8.5.3 Variable independiente y dependiente?

En una tabla de contingencia, ambas variables se consideran igualmente importantes y no se establece una relación de dependencia o causalidad entre ellas.

Sin embargo, el investigador normalmente desea investigar la distribución de una variable categórica particular (FILAS) en una variable de grupo (COLUMNAS). En nuestro caso, la primera sería “prot3” y la de grupo “ámbito”.

Por ello, se recomienda utilizar la siguiente tabla:

tabla_simple |> 
  prop.table(2) |> 
  addmargins(1)
##               
##                   Urbano     Rural
##   Sí participó 0.1347639 0.1690141
##   No participó 0.8652361 0.8309859
##   Sum          1.0000000 1.0000000

CONSIDERACIONES PARA LA LECTURA:

  1. Leer fila por fila y de derecha a izquierda, y se interpretan los porcentajes.

  2. Comenzamos por la primera fila de respuestas y analizamos si varían los porcentajes entre las categorías de la variable de grupo (la que está en columnas). En este caso vemos el porcentaje de personas que sí participó en manifestaciones es de 16.9% en el ámbito rural y de 13.47% en el ámbito urbano.

  3. Más diferencia de porcentajes en cada fila (entre las categorías de la variable en columnas), más fuerte es la relación entre las variables.

  4. Si no hay diferencias de respuestas, es decir, si los porcentajes en una misma fila son muy similares es que no hay relación entre las variables

  5. En este caso vemos una ligera asociación. Ahora la siguiente pregunta que debemos hacernos es si esa diferencia es estadísticamente significativa.

Además de proporcionar un resumen descriptivo de los datos, las tablas de contingencia también son la base para realizar pruebas estadísticas como la prueba de chi cuadrado.

En resumen, una tabla de contingencia es una herramienta que permite organizar y resumir los datos de variables categóricas, facilitando el análisis de la relación entre ellas y la realización de pruebas estadísticas para evaluar la asociación o dependencia.

8.6 Gráficando: Barras y barras apiladas

Ahora bien, siempre es mejor contar con un gráfico. Para ello, convertimos nuestra tabla (de proporciones por columna) en un data frame (es la manera más simple).

tabla_simple_p<-tabla_simple |> 
                  prop.table(2) |> 
                  round(2)
df <- as.data.frame(tabla_simple_p)

Calculamos el gráfico de barras simple.

df |> 
  ggplot()+
  aes(x=Var2, y=Freq, fill=Var1)+
  geom_bar(position = "dodge", stat="identity") +
  geom_text(aes(label=Freq), 
            position = position_dodge(width = 0.9), vjust=0, size = 3)+
  labs(x="Ámbito", y="Proporción", fill="Asistió a una protesta")

Sin embargo, es mejor visualizar a través de barras apiladas.

barras_apiladas<-df |> 
  ggplot()+
  aes(x=Var2, y=Freq, fill=Var1) +
  geom_bar(position="stack", stat="identity")+
  geom_text(aes(label=Freq), 
            position = position_stack(), vjust=1, size = 3)+
  labs(x="Ámbito", y="Porcentaje", fill="Asistió a una protesta")
barras_apiladas

Las ventajas son las siguientes:

  • Las barras apiladas son un tipo de gráfico en el cual se representan las proporciones de distintas categorías en forma de barras que se apilan una encima de la otra. En lugar de mostrar los valores absolutos, se muestran los valores relativos en forma de porcentajes.

  • La importancia de utilizar barras apiladas de porcentaje en la comparación y determinación de asociación de dos variables categóricas radica en que permite visualizar de manera clara las proporciones o frecuencias relativas de cada categoría en relación con la variable “independiente” (grupo) y si existe asociación.

  • Al mostrar los valores en forma de porcentajes, se elimina la influencia del tamaño de la muestra, lo que facilita la comparación entre diferentes grupos o subgrupos, incluso si tienen tamaños de muestra diferentes.

  • Si no se identifica asociación se ven barras muy similares.

8.7 Prueba χ²

La prueba chi-cuadrado (χ²) es una prueba estadística utilizada para determinar si existe una asociación entre dos variables categóricas en una población.

Recuerda:

ASOCIACIÓN
Indica si la distribución de frecuencias de una variable está relacionada de alguna manera con la distribución de frecuencias de la otra variable.

El objetivo de la prueba chi-cuadrado (χ²) es evaluar si las diferencias observadas en la distribución de frecuencias entre las categorías de las variables son significativas o podrían haber ocurrido por azar.

La prueba chi-cuadrado se basa en comparar las frecuencias observadas en una tabla de contingencia con las frecuencias que se esperarían si no hubiera ninguna asociación entre las variables. La idea es calcular un estadístico chi-cuadrado, el cual mide la discrepancia entre las frecuencias observadas y las esperadas bajo la hipótesis nula de independencia.

Es una prueba ampliamente utilizada y de fácil interpretación, lo que la convierte en una herramienta valiosa en el análisis de datos categóricos.

8.7.1 Paso 0: Análisis exploratorio

En este paso realizamos la configuración y exploración que ya hemos realizado líneas arriba. Es decir, configuración de cada variable, exploración y cálculo de las tablas de contingencia, tanto de frecuencias absolutas como de proporciones.

tabla_simple_p |> 
  kbl() |>        
  kable_styling()
Urbano Rural
Sí participó 0.13 0.17
No participó 0.87 0.83

Así como el gráfico:

barras_apiladas

De forma preliminar vemos grandes diferencias? Podríamos coincidir que no es mucho. Por ello, hace falta un análisis más riguroso con un método inferencial.

8.7.2 Paso 1: Establecer hipótesis

Debemos plantear las hipótesis nula y alternativa.

Hipótesis Descripción
Hipótesis nula No existe asociación
Hipótesis alterna Sí existe asociación.

Estas son las hipótesis que vamos a validar con nuestra prueba.

8.7.3 Paso 2: Verificar supuestos

Para analizar asociación se requiere que el número de observaciones esperadas en cada celda de la tabla de contingencia debe ser suficientemente grande.

Para fines de este curso, al menos cada celda de la TC de frecuencias esperadas debe ser de 5.

Ten en cuenta que si estas condiciones no se cumplen, entonces la prueba podría no funcionar adecuadamente y los resultados de la prueba podrían no ser válidos. Si es que encuentran que no se cumple este supuesto:

Repórtalo!

En nuestro caso sí pasamos este requisito.

chisq.test(tabla_simple)$expected
##               
##                  Urbano     Rural
##   Sí participó 166.3191  50.68092
##   No participó 998.6809 304.31908

8.7.4 Paso 3: Establecer nivel de significancia

Estamos trabajando a un 95% de confianza, por lo que nuestro nivel de significancia será 0.05.

\[\alpha = 0.05\]

8.7.5 Paso 4: Calcular estadístico de prueba y p-valor

Para calcular la prueba de hipótesis utilizamos la función chisq.test:

prueba <- chisq.test(tabla_simple) # Colocamos la tabla con las frecuencias simples
prueba
## 
##  Pearson's Chi-squared test with Yates' continuity
##  correction
## 
## data:  tabla_simple
## X-squared = 2.3357, df = 1, p-value = 0.1264

En este caso calculamos que el estadístico de prueba. Recuerda que como vimos en el Anova, lo que hacemos es comparar un indicador (estadístico de prueba) calculado con la variabilidad de nuestra muestra con un valor teórico.

Cuáles son los valores teóricos (frecuencias esperadas) con lo que se compara los valores observados?

prueba$expected
##               
##                  Urbano     Rural
##   Sí participó 166.3191  50.68092
##   No participó 998.6809 304.31908

Y cómo sabemos que estos valores son los que se esperaría si no existe asociación? Porque si calculamos los porcentajes por columna nos indica que no hay diferencia en la distribución según la variable de grupo:

prop.table(prueba$expected,2)
##               
##                   Urbano     Rural
##   Sí participó 0.1427632 0.1427632
##   No participó 0.8572368 0.8572368

Fruto de esa comparación se calcula el χ² el cual es 2.3357. Ahora bien el pvalor obtenido es 0.1264.

8.7.6 Paso 5: Tomar una decisión

Tenemos los siguientes escenarios

Resultado Decisión
\(p-value <=\alpha\) Rechazamos la hipótesis nula.
\(p-value >\alpha\) No rechazamos la hipótesis nula.

Habíamos escogido un \(\alpha = 0.05\) por lo que al obtener un p-valor de 0.1264 no podemos rechazar la hipótesis nula de que no existe asociación en las variables elegidas.

Vemos que a pesar de que visualizamos una diferencia en nuestra muestra, esta no es estadísticamente significativa.

8.7.7 Paso 6: Interpretación

Ahora bien, al finalizar este proceso debemos interpretar nuestros resultados:

Luego de realizar una prueba chi cuadrado, a un 95% de confianza, obtuvimos un p-valor de 0.1264, por lo que no podemos rechazar la hipótesis nula de que existe asociación entre la asistencia a manifestaciones y la procedencia de la persona. Por ello, concluimos que no existen asociación estadísticamente significativas en los grupos poblacionales indicados.

8.8 Ahora hazlo tú!

Ahora realiza la comparación de la misma variable prot3 (En los últimos 12 meses ha participado en una manifestación o protesta pública) pero considerando como grupo la posición ideológica de la persona

Para ello, utiliza la variable l1.

Recodifique a fin de que los valores 1-4 sea “Izquierda”, 5-6 “Centro” y 7-10 “Derecha”. Siga cada uno de los pasos indicados y concluya si ambas variables están asociadas o no en la población.