Inferencia básica aplicada a la IM

Author

Roberto Gil-Saura

Published

December 12, 2023

Modified

December 14, 2023

Introducción

Para la lectura de este documento, asumimos que se maneja el concepto y la estructura de una tabla de contingencia cuyo objetivo “es estudiar la relación entre dos o más variables de tipo nominal u ordinal”(Carrión 1989). Usaremos el barómetro sanitario del CIS de 2017 de donde obtendremos todas las tablas. Del mismo modo, usaremos el software R (R Core Team 2023) para realizar las pruebas pertinentes que serán documentadas.

# cargamos los paquetes necesarios ...
pacman::p_load(expss
               ,rstatix)

Análisis de la dependencia entre categorías

La prueba Chi2 de Pearson o también llamado test de independencia se utiliza para analizar la tabla de frecuencias (es decir, tabla de contingencia) formada por dos variables con nivel de media nominal o también llamado categórico. La prueba de Chi2 evalúa si existe asociación significativa entre las categorías de las dos variables, si su relación en la tabla puede no considerarse aleatoria y por extensión que exista cierta relación (dependencia) entre las categorías que lleve a la ordenación de las distribución de frecuencias que se observan.

¿Qué significa dependencia en este contexto? pues imaginemos que tenemos una tabla de contigencia de este tipo …

#P31 SEXO - P33 ESTADO - P38 CONSUMO TABACO - P37 SALUD PROBLEMA CRONICO - P36 ESTADO SALUD GENERAL
data <- suppressMessages(
     read_spss("https://drive.google.com/uc?export=download&id=11q4pg2iWwWdV9mk5P44ejoAcj5CJEfJM")
     )
table(Sexo=data$P33, Estado=data$P31)
Table 1: Tabla Sexo * Estado civil (frecuencias observadas)
              Estado
Sexo           Hombre Mujer
  Casado/a        677   711
  Soltero/a       455   362
  Viudo/a          41   149
  Separado/a       24    33
  Divorciado/a     55    42
  N.C.              4     4

Esta tabla, muestra que dos categorías de la variable género del entrevistado (hombre / mujer) y hasta cinco posibles estados civiles de la persona entrevistada. A simple vista, podemos observar una distribución natural de los datos, pero si usamos el análisis estadístico de los datos veremos más cosas.

El fundamento de la prueba implica que establezcamos un hipótesis nula (Ho) en la que indicamos que no existe dependencia entre las diferentes categorías de la variable en cabecera (columnas) y la de las filas. Si así fuera debería existir aproximadamente la misma proporción de casos en ambas columnas (según distribución marginal) y los hombres no deberían ser diferentes de las mujeres en esta relación.

Sin embargo, si lanzamos el test Chi2 de Pearson y recordando que en una inferencia buscamos que el valor de p sea menor que un valor crítico determinado (nuestro 5% o 0,05), obtenemos el siguiente resultado:

chisq.test(table(Sexo=data$P33, Estado=data$P31))
Table 2: Prueba Chi2

    Pearson's Chi-squared test

data:  table(Sexo = data$P33, Estado = data$P31)
X-squared = 75.203, df = 5, p-value = 8.437e-15

Podemos observar que la probabilidad es baja (p-value) casi cercana a 0. La implicación de este valor tan bajo (por debajo de 0,05) del p-value, nos obliga a rechazar la Ho y por tanto estimar una relación de dependencia entre las categorías. Muy bien, pero ¿dónde se materializa esa relación? analicemos los porcentajes de columna…

round(prop.table(table(Sexo=data$P33, Estado=data$P31),2)*100,1)
Table 3: Tabla Sexo * Estado civil (porcentajes de columna)
              Estado
Sexo           Hombre Mujer
  Casado/a       53.9  54.7
  Soltero/a      36.2  27.8
  Viudo/a         3.3  11.5
  Separado/a      1.9   2.5
  Divorciado/a    4.4   3.2
  N.C.            0.3   0.3

Visualmente, vemos porcentajes muy parejos, pero hay dos categorías que ofrecen una relación diferente de varios puntos (solteros y viudos). A nadie se le escapa que esto es transversal a todas las sociedades, las mujeres mueren después que los hombres y el estado de soltería ha sido tradicionalmente más habitual en los hombres que en las mujeres. por tanto, eso implica una fuerte relación entre categorías.

¿Pero hay algún dato más que nos acerque a esta conclusión? Chi2 se basa en la relación entre las frecuencias observadas, las que vemos en la Table 1. Sin embargo hay otro dato, denominado frecuencia esperada que se puede calcular también rápidamente que nos indica la frecuencia que cabría esperara a cada perfil 8columna) si no se produjeran esas relaciones de dependencia entre las categorías. La frecuencia esperada de cada celda se obtiene de la siguiente forma:

\[ f = \frac{total.columna * total.fila}{total.tabla} \]

chisq <- chisq.test(table(data$P33, data$P31))
chisq$expected
Table 4: Tabla Sexo * Estado civil (frecuencias esperadas)
              
                   Hombre      Mujer
  Casado/a     681.786469 706.213531
  Soltero/a    401.310911 415.689089
  Viudo/a       93.328119  96.671881
  Separado/a    27.998436  29.001564
  Divorciado/a  47.646461  49.353539
  N.C.           3.929605   4.070395

Comparar por diferencia la Table 1 y la Table 4, nos llevaría al concepto de residuo. Un residuo, no es más que la diferencia de lo observado menos lo esperado. Si calculamos el residuo directo (observada - esperada)

chisq$observed-chisq$expected
Table 5: Tabla Sexo * Estado civil (frecuencias observadas - frecuencias esperadas)
              
                     Hombre        Mujer
  Casado/a      -4.78646852   4.78646852
  Soltero/a     53.68908878 -53.68908878
  Viudo/a      -52.32811889  52.32811889
  Separado/a    -3.99843567   3.99843567
  Divorciado/a   7.35353930  -7.35353930
  N.C.           0.07039499  -0.07039499

Pero mejor, para trabajar con ellos los podemos estandarizar.

\[ res = \frac{(freq.ob - freq.ex)} {\sqrt{freq.ex}} \]

chisq$residuals
Table 6: Tabla Sexo * Estado civil (residuos)
              
                    Hombre       Mujer
  Casado/a     -0.18331205  0.18011388
  Soltero/a     2.68006637 -2.63330838
  Viudo/a      -5.41662621  5.32212460
  Separado/a   -0.75565442  0.74247084
  Divorciado/a  1.06532249 -1.04673625
  N.C.          0.03551136 -0.03489181

Y si además de estandarizarlos, los ajustamos y corregimos …

chisq$stdres
Table 7: Tabla Sexo * Estado civil (residuos std)
              
                    Hombre       Mujer
  Casado/a     -0.38008072  0.38008072
  Soltero/a     4.55473385 -4.55473385
  Viudo/a      -7.89263134  7.89263134
  Separado/a   -1.07138437  1.07138437
  Divorciado/a  1.52266940 -1.52266940
  N.C.          0.04986255 -0.04986255

Cuando vemos esta tabla, cualquier celda que tenga en valor absoluto un valor mayor que 1.96, se considera una celda que está aportando significativamente esa relación de dependencia. Fíjate que coinciden con las dos categorías que visualmente indicábamos que eran las más llamativas.

Pues bien, Chi2 se basa en este cálculo para todas y cada una de las celdas de la tabla y el valor resultante de la suma de todas las celdas, es el valor de Chi2de Pearson. Este es un método de saber qué resultados son los verdaderamente significativos en una tabla de contingencia y que debemos en el informe reseñar.

Este mismo ejercicio realizado con el paquete expss nos arroja la siguiente salida.

data %>% 
  tab_cols('|'=unvr(P31)) %>% 
  tab_cells('|'=unvr(P33)) %>% 
  tab_stat_cases() %>% 
  tab_last_sig_cases() %>% 
  tab_pivot()
Table 8: Tabla Sexo * Estado civil (con expss)
 Hombre   Mujer 
 Casado/a  677.0  711.0 
 Soltero/a  455.0  362.0 
 Viudo/a  41.0  149.0 
 Separado/a  24.0  33.0 
 Divorciado/a  55.0  42.0 
 N.C.  4.0  4.0 
 #Chi-squared p-value  <0.05 (warn.)
 #Total cases  1256.0  1301.0 

En esta tabla, la aparición de | #Chi-squared p-value | <0.05 | nos indica que se está realizando el contraste al 0.05 y que aparezca detrás el texto (warn.) nos indica que la prueba ha resultado significativa.

Bondad de ajuste Chi2 en una distribución de frecuencias

Una segunda prueba inferencial bastante característica es la prueba de bondad de ajuste de Chi2 se utiliza para comparar la distribución observada con una distribución esperada, en una situación en la que tenemos dos o más categorías en datos discretos. En otras palabras, compara múltiples proporciones observadas con las probabilidades esperadas. Es diferente de la anterior prueba porque no se busca observar una relación entre categorías de una tabla, sino que se busca comparar la distribución completa de frecuencias.

En este caso, nuestra Ho sería que no hay diferencia significativa entre la distribución observada y la teórica.

table(data$P38, data$P31)
Table 9: Tabla Sexo * Situación ante tabaco (bondad ajuste)
                                               
                                                Hombre Mujer
  Sí, fuma a diario                                363   250
  Sí fuma, pero no a diario                         51    45
  No fuma actualmente pero ha fumado antes         404   287
  No fuma ni ha fumado antes de manera habitual    433   718
  N.C.                                               5     1

Si ahora calculamos la misma tabla, pero en proporciones verticales (respecto a la variable de columnas)

prop.table(table(data$P38, data$P31),2)
Table 10: Proporciones Sexo * Situación ante tabaco (proporciones)
                                               
                                                      Hombre        Mujer
  Sí, fuma a diario                             0.2890127389 0.1921598770
  Sí fuma, pero no a diario                     0.0406050955 0.0345887779
  No fuma actualmente pero ha fumado antes      0.3216560510 0.2205995388
  No fuma ni ha fumado antes de manera habitual 0.3447452229 0.5518831668
  N.C.                                          0.0039808917 0.0007686395

Nuestra idea sería comparar la columna 1 (hombres) y la columna 2 (mujeres) con una distribución teórica, que podría sr por ejemplo la igualdad de proporciones. Por ejemplo, el 25% en cada aseveración acerca del tabaco.

Table 11: Proporciones Sexo * Situación ante tabaco (test vs proporción teórica)
props.hombre <- prop.table(table(data$P38, data$P31),2)[,1]
props.mujer  <- prop.table(table(data$P38, data$P31),2)[,2]
chisq.hombre <- chisq.test(as.numeric(props.hombre), p=c(0.25, 0.25, 0.25, 0.25, 0.0))
chisq.mujer  <- chisq.test(as.numeric(props.mujer) , p=c(0.25, 0.25, 0.25, 0.25, 0.0))

Tanto en el primer test (hombres) como en el segundo test (mujeres) vemos que debemos rechazar la Ho los p-value son respectivamente 0 para los hombres y 0 para las mujeres, por tanto, ambos menores que 0.05.

Test de proporciones en muestras independientes

Por otro lado, podemos tener también el interés en comparar si dos perfiles, presentan diferencias en sus porcentajes contra una misma pregunta. En nuestro caso, sería ver si en cada actitud ante el tabaco, existe una diferencia porcentual entre los hombres y las mujeres, es decir si la proporción de hombres y la de mujeres ante una misma situación fuera estadísticamente significativa en la población de la cual se ha extraído la muestra.

Dicho esto, podemos aplicar la función prop.test de R base o alguna de las muchas variantes disponibles (por ejemplo prop_test() del paquete rstatix.

Con rstatix haríamos:

xtab <- table(data$P38, data$P31)
row_wise_prop_test(xtab, p.adjust.method = "bonferroni", conf.level=0.95)
Table 12: Sexo * Situación ante tabaco
# A tibble: 5 × 7
  group                         n statistic    df        p    p.adj p.adj.signif
* <chr>                     <int>     <dbl> <dbl>    <dbl>    <dbl> <chr>       
1 Sí, fuma a diario          2557    32.4       1 1.28e- 8 6.40e- 8 ****        
2 Sí fuma, pero no a diario  2557     0.484     1 4.86e- 1 1   e+ 0 ns          
3 No fuma actualmente pero…  2557    32.6       1 1.14e- 8 5.7 e- 8 ****        
4 No fuma ni ha fumado ant…  2557   110.        1 1.01e-25 5.05e-25 ****        
5 N.C.                       2557     1.61      1 2.04e- 1 1   e+ 0 ns          

Nos está indicando que existen diferencias significativas en las filas 1, 3 y 4 de la tabla. No obstante, en nuestro caso, como el paquete que habitualmente utilizamos es el expss, vamos a seguir con él, implementando directamente el análisis sobre la tabla de contingencia.

Como en nuestro caso, el paquete que habitualmente utilizamos es el expss vamos a seguir con él. Nótese como, al solicitar la prueba de significación, surgen unas letras en el perfil de columna; esas letras sirven para ilustrar el resultado de la prueba. La tabla sería ésta…

data %>% 
  tab_cols('|'=unvr(P31)) %>% 
  tab_cells('|'=unvr(P38)) %>% 
  tab_stat_cpct() %>% 
  tab_last_sig_cpct() %>% 
  tab_pivot
Table 13: Sexo * Situación ante tabaco (expss)
 Hombre     Mujer 
 A     B 
 Sí, fuma a diario  28.9 B   19.2  
 Sí fuma, pero no a diario  4.1     3.5  
 No fuma actualmente pero ha fumado antes  32.2 B   22.1  
 No fuma ni ha fumado antes de manera habitual  34.5     55.2 A
 N.C.  0.4     0.1  
 #Total cases  1256     1301  

Al igual que con el paquete rstatix, expss también muestra que hay hasta 3 diferencias significativas:

  • Los hombres que sí fuman a diario, presentan una proporción significativamente diferente que en las mujeres, y además esa proporción es más alta en los hombres, y por eso pone una B en la celda correspondiente de la columna A.
  • Los hombres que no fuman actualmente, presentan una proporción significativamente diferente que en las mujeres, y además esa proporción es más alta en los hombres, y por eso pone una B en la celda correspondiente de la columna A.
  • Las mujeres que no fuman ni han fumado antes de manera habitual, presentan una proporción significativamente diferente que en los hombres, y además esa proporción es más alta en las mujeres, y por eso pone una A en la celda correspondiente de la columna B.

Parece evidente una extensión y se deduce que si A es significativamente diferente de B, B también lo es de A pero en sentido inverso; por eso en cada par de comparaciones la letra siempre aparece en aquella celda de la columna donde esa celda es mayor. De esta forma la tabla se presenta más limpia y más entendible.

Test de medias en muestras independientes

Al igual que en el apartado anterior el objetivo es determinar si existen o no diferencias entre los grupos que se están testando, teniendo como hipótesis nula (Ho) que las medias de los grupos son iguales. En nuestro ejemplo, hemos tomado el campo que indica el sexo del entrevistado y dos variables diferentes, el Estado de salud en general (P36) y también Tenencia de algún problema de salud crónico (P37). Sobre esta relación se calculan las medias y se le indica que requerimos el test. Se asume que los grupos son independientes, que existe normalidad y que las varianzas de los grupos son iguales.

Si este ejercicio lo realizamos con el paquete rstatix el resultado es…

data %>% t_test(P36 ~ P31)
data %>% t_test(P37 ~ P31)
Table 14: Sexo * Estado de salud y Enfermedad crónica (rstatix)
# A tibble: 1 × 8
  .y.   group1 group2    n1    n2 statistic    df        p
* <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>    <dbl>
1 P36   Hombre Mujer   1256  1301     -3.49 2550. 0.000488
# A tibble: 1 × 8
  .y.   group1 group2    n1    n2 statistic    df     p
* <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl>
1 P37   Hombre Mujer   1256  1301      1.49 2550. 0.137

Para hacerlo con expsscreamos la tabla y en ella solicitamos la realización del test t de medias.

data %>% 
  tab_cols('|'=unvr(P31)) %>% 
  tab_cells('|'=unvr(P36)) %>% 
  tab_stat_mean_sd_n(label=var_lab(data$P36)) %>% 
  tab_last_sig_means(keep='means') %>% 
  tab_cells('|'=unvr(P37)) %>% 
  tab_stat_mean_sd_n(label=var_lab(data$P37)) %>% 
  tab_last_sig_means(keep='means') %>% 
  tab_pivot
Table 15: Sexo * Estado de salud y Enfermedad crónica (expss)
 Hombre     Mujer 
 A     B 
 Mean 
   Estado de salud en general  2.1    2.2 A
   Tenencia de algún problema de salud crónico  1.7    1.7 

Se puede observar que la salida es igual a la de la prueba Z en cuanto a estructura y composición, lo que hace muy sencilla su lectura e interpretación. Se rotulan las columnas con las letras A, B … y las que sean necesarias, y posteriormente se muestra (por defecto) la letra de la columna con la que la media de la columna en la que se ubica la media presenta diferencias positivas (es mayor). Podemos por tanto observar, que en la población de la que se ha extraído la muestra, se puede afirmar que la percepción acerca del Estado de salud en general es mejor en las mujeres que en los hombres. Del mismo modo, esta diferencia no se hace evidente cuando analizamos la Tenencia de algún problema de salud crónico.

Conclusión

Cerramos aquí este documento, básico, muy básico, donde se explican los fundamentos de la inferencia básica paramétrica realizada en las tablas de contingencia que se obtienen de la explotación de datos provenientes de encuesta. Son pruebas inferenciales, sencillas y muy explicativas de la relación que se expresa por la distribución de resultados en las tablas de contingencia.

Y hasta aquí este documento, que espero sea de utilidad para aquellos que os enfrentéis a la tarea de explotación de datos de encuesta.

References

Carrión, Juan Javier Sánchez. 1989. Análisis de Tablas de Contingencia: El Uso de Los Porcentajes En Las Ciencias Sociales. 105. CIS.
R Core Team. 2023. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.