5.4 Estimación de proporciones y tablas cruzadas
En el análisis de encuestas de hogares, una de las tareas más comunes consiste en estimar proporciones poblacionales a partir de variables categóricas. Estas estimaciones permiten cuantificar la prevalencia de una característica en la población, por ejemplo, el porcentaje de hogares con acceso a internet o la proporción de individuos ocupados.
5.4.1 Proporciones para variables binarias
La estimación de una sola proporción, \(\pi\), para una variable de respuesta binaria requiere únicamente una extensión directa del estimador de razón. Al recodificar las categorías de respuesta originales en una variable indicadora \(y\_{i}\) con valores \(1\) (presencia) y \(0\) (ausencia), el estimador de la media de la razón estima la proporción o prevalencia \(\pi\) en la población de la siguiente manera (Heeringa, S. G., 2017):
\[ \hat{p} = \frac{\sum_{h=1}^{H}\sum_{\alpha=1}^{\alpha_{h}}\sum_{i=1}^{n_{h\alpha}} \omega_{h\alpha i}I(y_{i}=1)}{\sum_{h=1}^{H}\sum_{\alpha=1}^{\alpha_{h}}\sum_{i=1}^{n_{h\alpha}} \omega_{h\alpha i}} = \frac{\hat{N}_{1}}{\hat{N}}. \]
La varianza de este estimador puede aproximarse mediante la linealización de Taylor:
\[ v(\hat{p}) \dot{=} \frac{V(\hat{N}_{1})+\hat{p}^{2}V(\hat{N})-2\hat{p}\,cov(\hat{N}_{1},\hat{N})}{\hat{N}^{2}}. \]
Cuando la proporción estimada se aproxima a 0 o 1, los intervalos de confianza estándar pueden producir límites fuera del rango \([0,1]\). Para solventar este problema, se proponen intervalos de confianza basados en transformaciones, como el Wilson modificado o el uso del logit de \(\hat{p}\):
\[ IC[\text{logit}(\hat{p})] = \left\{ \ln\left(\frac{\hat{p}}{1-\hat{p}}\right) \pm \frac{t_{1-\alpha/2,gl}\,se(\hat{p})}{\hat{p}(1-\hat{p})}\right\}, \]
cuyo resultado puede transformarse de nuevo a la escala original de proporciones.
5.4.2 Proporciones para variables multinomiales
En encuestas, es común que las variables categóricas tengan más de dos categorías (multinomiales). En este caso, la estimación de la proporción para cada categoría \(k\) sigue un esquema análogo:
\[ \hat{p}_{k} = \frac{\sum_{h=1}^{H}\sum_{\alpha=1}^{\alpha_{h}}\sum_{i=1}^{n_{h\alpha}} \omega_{h\alpha i}I(y_{i}=k)}{\sum_{h=1}^{H}\sum_{\alpha=1}^{\alpha_{h}}\sum_{i=1}^{n_{h\alpha}} \omega_{h\alpha i}} = \frac{\hat{N}_{k}}{\hat{N}}. \]
5.4.3 Tablas cruzadas o de contingencia
Cuando se analizan dos variables categóricas de manera conjunta, el objetivo es estudiar si existe asociación entre ellas. Para ello, se construyen tablas cruzadas (o tablas de contingencia), que organizan los datos en una matriz de \(R \times C\), donde \(R\) son las categorías de la variable \(x\) y \(C\) las de la variable \(y\).
A diferencia de un simple conteo de casos, en encuestas se utilizan frecuencias ponderadas que reflejan la población total representada. Cada celda \((r,c)\) contiene la frecuencia estimada:
\[ \hat{N}_{rc} = \sum_{h=1}^{H}\sum_{i \in s_{1h}}\sum_{k \in s_{hi}} w_{hik}\,I(x_{hik}=r; y_{hik}=c). \]
Los totales marginales se obtienen como:
\[ \hat{N}_{(r+)} = \sum_{c} \hat{N}_{rc}, \quad \hat{N}_{(+c)} = \sum_{r} \hat{N}_{rc}, \quad \hat{N}_{(++)} = \sum_{r}\sum_{c} \hat{N}_{rc}. \]
De estas frecuencias ponderadas se derivan proporciones conjuntas y marginales, que permiten analizar la distribución relativa de cada cruce:
\[ \hat{p}_{rc} = \frac{\hat{N}_{rc}}{\hat{N}_{++}}, \qquad \hat{p}_{r+} = \frac{\hat{N}_{r+}}{\hat{N}_{++}}, \qquad \hat{p}_{+c} = \frac{\hat{N}_{+c}}{\hat{N}_{++}}. \]
Este enfoque ofrece una visión más completa de la relación entre categorías, ya que combina la estimación de proporciones simples con el análisis conjunto de distribuciones. Por ejemplo, se puede explorar cómo se distribuye el nivel educativo (filas) según la condición laboral (columnas), identificando patrones de desigualdad o brechas estructurales.
A continuación, siguiendo con la base de ejemplo, se estima la proporción de hombres y mujeres en pobreza y no pobreza junto con su error estándar e intervalos de confianza.
prop_sexo_zona <- diseno %>%
group_by(pobreza,Sex) %>%
summarise(prop = survey_prop(vartype = c("se", "ci"))) %>%
data.frame()
prop_sexo_zona## pobreza Sex prop prop_se prop_low prop_upp
## 1 0 Female 0.5291800 0.01242026 0.5045356 0.5536829
## 2 0 Male 0.4708200 0.01242026 0.4463171 0.4954644
## 3 1 Female 0.5236123 0.01586237 0.4921512 0.5548870
## 4 1 Male 0.4763877 0.01586237 0.4451130 0.5078488
Como se puede observar, el 52.3% de las mujeres y el 47.6% son pobres. Generando intervalos de confianza al 95% de (49.2%, 55.5%) para las mujeres y (44.5%, 50.7%) para los hombres.
En la librería survey existe una alternativa para estimar tablas de contingencias y es utilizando la función svyby como se muestra a continuación:
## pobreza SexFemale SexMale se.SexFemale se.SexMale
## 0 0 0.5291800 0.4708200 0.01242026 0.01242026
## 1 1 0.5236123 0.4763877 0.01586237 0.01586237
Como se pudo observar, los argumentos que requiere la función son definir la variable a la cual se desea estimar (formula), las categorías por la cual se desea estimar (by), el diseño muestral (desing) y el parámetro que se desea estimar (FUN). Para la estimación de los intervalos de confianza se utiliza la función confint como sigue:
Para la estimación de los intervalos de confianza utilizar la función confint.
## 2.5 % 97.5 %
## 0:SexFemale 0.5048367 0.5535232
## 1:SexFemale 0.4925226 0.5547019
## 0:SexMale 0.4464768 0.4951633
## 1:SexMale 0.4452981 0.5074774
Los cuales coinciden con los generados anteriormente usando la funicón group_by.
Otro análisis de interés relacionado con tablas de doble entrada en encuestas de hogares es estimar el porcentaje de desempleados por sexo.
tab_Sex_Ocupa <- svyby(formula = ~Sex, by = ~Employment,
design = diseno, FUN = svymean)
tab_Sex_Ocupa## Employment SexFemale SexMale se.SexFemale se.SexMale
## Unemployed Unemployed 0.2726730 0.7273270 0.05351318 0.05351318
## Inactive Inactive 0.7703406 0.2296594 0.02340005 0.02340005
## Employed Employed 0.4051575 0.5948425 0.01851986 0.01851986
De la anterior salida se puede observar que, el 27.2% de las mujeres y el 72.7% de los hombres están desempleados con errores estándares para estas estimaciones de 5.3% para mujeres y hombres. cuyos intervalos de confianza se calculan a continuación:
## 2.5 % 97.5 %
## Unemployed:SexFemale 0.1677891 0.3775570
## Inactive:SexFemale 0.7244773 0.8162038
## Employed:SexFemale 0.3688592 0.4414557
## Unemployed:SexMale 0.6224430 0.8322109
## Inactive:SexMale 0.1837962 0.2755227
## Employed:SexMale 0.5585443 0.6311408
Si ahora el objetivo es estimar la pobreza, pero por las distintas regiones que se tienen en la base de datos. Primero, dado que la variable pobreza es de tipo numérica, es necesario convertirla en factor y luego realizar la estimación con la función svyby.
tab_region_pobreza <- svyby(formula = ~as.factor(pobreza), by = ~Region,
design = diseno, FUN = svymean)
tab_region_pobreza## Region as.factor(pobreza)0 as.factor(pobreza)1
## Norte Norte 0.6410318 0.3589682
## Sur Sur 0.6561536 0.3438464
## Centro Centro 0.6346152 0.3653848
## Occidente Occidente 0.5991839 0.4008161
## Oriente Oriente 0.5482079 0.4517921
## se.as.factor(pobreza)0 se.as.factor(pobreza)1
## Norte 0.05547660 0.05547660
## Sur 0.04348901 0.04348901
## Centro 0.07858599 0.07858599
## Occidente 0.04670473 0.04670473
## Oriente 0.08849644 0.08849644
De lo anterior se puede concluir que, en la región Norte, el 35% de las personas están en estado de pobreza mientras que en el sur es el 34%. La pobreza más alta se tiene en la región oriente con un 45% de pobres. Los errores estándares de las estimaciones.
5.4.4 Prueba de independencia \(\chi^{2}\)
Una prueba de hipótesis es un procedimiento estadístico que permite evaluar la validez de una afirmación sobre una población, comparando la evidencia empírica de una muestra con lo que se esperaría si dicha afirmación fuera cierta. En el caso de las pruebas de independencia, se plantea como hipótesis nula (\(H_{0}\)) que dos variables categóricas son independientes, es decir, que la distribución de una no depende de las categorías de la otra. Matemáticamente, esta hipótesis puede expresarse como:
\[ H_0: P_{rc}^0 = P_{r+} \times P_{+c}, \quad \text{para todo } r = 1,\ldots,R \text{ y } c = 1,\ldots,C \]
donde \(P_{rc}^0\) representa la proporción esperada en la celda \((r,c)\) bajo independencia, y \(P_{r+}\) y \(P_{+c}\) las proporciones marginales de las filas y columnas, respectivamente.
En consecuencia, la prueba consiste en contrastar las proporciones estimadas \(\hat{p}*{rc}\) con las esperadas \(P*{rc}^0\). Cuando las diferencias son pequeñas, los datos respaldan la hipótesis nula; en cambio, discrepancias significativas conducen al rechazo de \(H_0\).
5.4.4.1 Prueba \(\chi^{2}\) clásica
Para una tabla de \(2 \times 2\), la estadística de Pearson se define como:
\[ \chi^{2} = n_{++}\sum_{r}\sum_{c}\frac{\left(p_{rc}-\hat{\pi}_{rc}\right)^{2}}{\hat{\pi}_{rc}} \]
donde \(\hat{\pi}*{rc}=\frac{n*{r+}}{n_{++}} \cdot \frac{n_{+c}}{n_{++}}\) corresponde a las proporciones esperadas bajo independencia.
En términos prácticos, las tablas de contingencia ponderadas constituyen el insumo de la prueba, ya que cada celda \(\hat{N}_{rc}\) estima el número de personas en la población en esa combinación de categorías. A partir de ellas se calculan frecuencias relativas y se evalúa la independencia de las variables.
5.4.4.2 Ajustes para encuestas: prueba de Rao-Scott
En encuestas de hogares, el análisis es más complejo porque el diseño muestral (estratificación, conglomerados y ponderación) altera la varianza de los estimadores. Por ello, la prueba \(\chi^{2}\) debe ajustarse para reflejar estas particularidades.
El ajuste de Rao-Scott (Rao y Scott, 1984; Thomas y Rao, 1987) corrige la prueba clásica mediante el efecto de diseño generalizado (GDEFF), lo que produce un estadístico robusto:
\[ X_{RS}^2 = \frac{n_{++}}{GDEFF} \sum_r \sum_c \frac{(\hat{p}_{rc} - \hat{P}_{rc}^0)^2}{\hat{P}_{rc}^0} \]
Bajo \(H_0\), \(X_{RS}^2\) sigue aproximadamente una distribución \(\chi^2\) con \((R-1)(C-1)\) grados de libertad. En casos de muestras pequeñas, es común aplicar ajustes basados en la distribución F, que mejoran la precisión de los resultados. Actualmente, las pruebas de Rao-Scott constituyen el estándar en el análisis de datos categóricos en encuestas complejas (Heeringa, West y Berglund, 2017).
5.4.4.3 Ejemplo en R
El paquete survey en R implementa estas pruebas a través de la función svychisq(), que aplica automáticamente las correcciones de Rao-Scott. A modo de ejemplo, para evaluar si la pobreza es independiente del sexo, se ejecuta:
##
## Pearson's X^2: Rao & Scott adjustment
##
## data: NextMethod()
## F = 0.056464, ndf = 1, ddf = 119, p-value = 0.8126
- Si el p-valor es superior al 5%, no se rechaza \(H_0\), concluyendo que no existe evidencia de asociación entre pobreza y sexo.
- Si el p-valor es inferior al 5%, se rechaza \(H_0\), lo que sugiere dependencia entre las variables.
De manera similar, se pueden evaluar otras relaciones, como desempleo y sexo o pobreza y región:
##
## Pearson's X^2: Rao & Scott adjustment
##
## data: NextMethod()
## F = 62.251, ndf = 1.6865, ddf = 200.6978, p-value < 2.2e-16
##
## Pearson's X^2: Rao & Scott adjustment
##
## data: NextMethod()
## F = 0.48794, ndf = 3.0082, ddf = 357.9731, p-value = 0.6914
Para realizar la prueba de independencia \(\chi^{2}\) en R, se utilizará la función svychisq del paquete srvyr. Esta función requiere que se definan las variables de interés (formula) y requiere que se le defina el diseño muestral (desing). Ahora, para ejemplificar el uso de esta función tomaremos la base de datos de ejemplo y se probará si la pobreza es independiente del sexo.
Razón de odds
Como lo menciona Monroy, L. G. D. (2018) La traducción más aproximada del término odds es “la ventaja”, en términos de probabilidades es la posibilidad de que un evento ocurra con relación a que no ocurra, es decir, es un número que expresa cuánto más probable es que se produzca un evento frente a que no se produzca. También se puede utilizar para cuantificar la asociación entre los niveles de una variable y un factor categórico (Heeringa, S. G. 2017).
Suponga que se desea calcular la siguiente razón de odds.
\[ \frac{\frac{P(Sex = Female \mid pobreza = 0 )}{P(Sex = Female \mid pobreza = 1 )}}{ \frac{P(Sex = Male \mid pobreza = 1 )}{P(Sex = Male \mid pobreza = 0 )} } \]
El procedimiento para realizarlo en R sería, primero estimar las proporciones de la tabla cruzada entre las variables sexo y pobreza:
tab_Sex_Pobr <- svymean(x = ~interaction (Sex, pobreza), design = diseno,
se=T, na.rm=T, ci=T, keep.vars=T)
tab_Sex_Pobr %>% as.data.frame()## mean SE
## interaction(Sex, pobreza)Female.0 0.3218703 0.01782709
## interaction(Sex, pobreza)Male.0 0.2863733 0.01768068
## interaction(Sex, pobreza)Female.1 0.2051285 0.01659697
## interaction(Sex, pobreza)Male.1 0.1866279 0.01778801
Luego, se realiza el contraste dividiendo cada uno de los elementos de la expresión mostrada anteriormente:
svycontrast(stat = tab_Sex_Pobr,
contrasts = quote((`interaction(Sex, pobreza)Female.0`/`interaction(Sex, pobreza)Female.1`) /(`interaction(Sex, pobreza)Male.0`/ `interaction(Sex, pobreza)Male.1`)))## nlcon SE
## contrast 1.0226 0.0961
Obtiendo que, se estima que el odds de las mujeres que no están en estado de pobreza es 1.02 comparandolo con el odds de los hombres. En otras palabras, se estima que las probabilidades de que las mujeres no estén en estado de pobreza sin tener en cuenta ninguna otra variable de la encuesta es cera de 2% mayor que las probabilidades de los hombres.
Diferencia de proporciones en tablas de contingencias
Como lo menciona Heeringa, S. G. (2017) las estimaciones de las proporciones de las filas en las tablas de doble entrada son, de hecho, estimaciones de subpoblaciones en las que la subpoblación se define por los niveles de la variable factorial. Ahora bien, si el interés se centra en estimar diferencias de las proporciones de las categorías entre dos niveles de una variable factorial, se pueden utilizando contrastes.
A manera de ejemplo, se requiere estimar ahora, el contraste de proporciones de mujeres en estado de pobreza versus los hombres en esta misma condición (\(\hat{p}_F - \hat{p}_M\)). Para ellos, primero, estimemos la proporción de hombres y mujeres en estado de pobreza como se ha mostrado en capítulos anteriores:
(tab_sex_pobreza <- svyby(formula = ~pobreza, by = ~Sex,
design = diseno , svymean, na.rm=T,
covmat = TRUE, vartype = c("se", "ci")))## Sex pobreza se ci_l ci_u
## Female Female 0.3892389 0.03159581 0.3273123 0.4511656
## Male Male 0.3945612 0.03662762 0.3227724 0.4663501
Ahora bien, para calcular la estimación de la diferencia de proporciones junto con sus errores estándares, se realizarán los siguientes pasos:
- Paso 1: Calcular la diferencia de estimaciones
## [1] -0.0054
Con la función vcov se obtiene la matriz de covarianzas:
library(kableExtra)
vcov(tab_sex_pobreza)%>% data.frame() %>%
kable(digits = 10,
format.args = list(scientific = FALSE))| Female | Male | |
|---|---|---|
| Female | 0.0009982953 | 0.0009182927 |
| Male | 0.0009182927 | 0.0013415823 |
- Paso 2: El cálculo del error estándar es:
## [1] 0.02243435
Ahora bien, aplicando la función svycontrast se puede obtener la estimación de la diferencia de proporciones anterior:
## contrast diff_Sex
## diff_Sex -0.005322297 0.02243418
De lo que se concluye que, la diferencia entre las proporciones de mujeres y hombres en estado de pobreza es -0.005 (-0.5%) con una desviación estándar de 0.022.
Otro ejercicio de interés en un análisis de encuestas de hogares es verificar la diferencia del desempleo por sexo. Al igual que el ejemplo anterior, se inicia con la estimación del porcentaje de desempleados por sexo:
tab_sex_desempleo <- svyby(formula = ~desempleo, by = ~Sex,
design = diseno %>% filter(!is.na(desempleo)) ,
FUN = svymean, na.rm=T, covmat = TRUE,
vartype = c("se", "ci"))
tab_sex_desempleo## Sex desempleo se ci_l ci_u
## Female Female 0.02168620 0.005580042 0.01074952 0.03262288
## Male Male 0.06782601 0.012161141 0.04399062 0.09166141
Para calcular la estimación de la diferencia de proporciones junto con sus errores estándares, se realizarán los siguientes pasos:
- Paso 1: Diferencia de las estimaciones
## [1] -0.04614
Estimación de la matriz de covarianza:
vcov(tab_sex_desempleo) %>% data.frame() %>%
kable(digits = 10,
format.args = list(scientific = FALSE))| Female | Male | |
|---|---|---|
| Female | 0.0000311369 | 0.0000208130 |
| Male | 0.0000208130 | 0.0001478933 |
- Paso 2: Estimación del error estándar.
## [1] 0.0117222
Siguiendo el ejemplo anterior, utilizando la función svycontrast se tiene que:
## contrast diff_Sex
## diff_Sex 0.04613982 0.01172195
de lo que se concluye que, la estimación del contraste es 0.04 (4%) con un error estándar de 0.011.
Otro ejercicio que se puede realizar en una encuesta de hogares es ahora estimar la proporción de desempleados por región. Para la realización de este ejercicio, se seguirán los pasos de los dos ejemplos anteriores:
tab_region_desempleo <- svyby(formula = ~desempleo, by = ~Region,
design = diseno %>% filter(!is.na(desempleo)) ,
FUN = svymean, na.rm=T, covmat = TRUE,
vartype = c("se", "ci"))
tab_region_desempleo## Region desempleo se ci_l ci_u
## Norte Norte 0.04877722 0.02002293 0.009532997 0.08802144
## Sur Sur 0.06563877 0.02375124 0.019087202 0.11219034
## Centro Centro 0.03873259 0.01240317 0.014422832 0.06304235
## Occidente Occidente 0.03996523 0.01229650 0.015864529 0.06406592
## Oriente Oriente 0.02950231 0.01256905 0.004867428 0.05413719
Ahora, el interés es realizar los contrastes siguientes para desempleo:
\(\hat{p}_{Norte} - \hat{p}_{Centro} = 0.01004\),
\(\hat{p}_{Sur} - \hat{p}_{Centro} = 0.02691\)
\(\hat{p}_{Occidente} - \hat{p}_{Oriente} = 0.01046\)
Escrita de forma matricial sería:
\[ \left[\begin{array}{ccccc} 1 & 0 & -1 & 0 & 0\\ 0 & 1 & -1 & 0 & 0\\ 0 & 0 & 0 & 1 & -1 \end{array}\right] \]
La matriz de varianzas y covarianzas es:
vcov(tab_region_desempleo)%>%
data.frame() %>%
kable(digits = 10,
format.args = list(scientific = FALSE))Por tanto, la varianza estimada está dada por:
## [1] 0.02421776
## [1] 0.02202726
## [1] 0.02315167
Usando la función svycontrast, la estimación de los contrastes sería:
svycontrast(tab_region_desempleo, list(
Norte_sur = c(1, 0, -1, 0, 0),
Sur_centro = c(0, 1, -1, 0, 0),
Occidente_Oriente = c(0, 0, 0, 1, -1))) %>% data.frame()## contrast SE
## Norte_sur 0.01004463 0.02355327
## Sur_centro 0.02690618 0.02679477
## Occidente_Oriente 0.01046292 0.01758365
Por último, repitiendo el contraste anterior y los pasos para resolverlo, pero ahora utilizando la variable pobreza se tiene:
tab_region_pobreza <- svyby(formula = ~pobreza, by = ~Region,
design = diseno %>% filter(!is.na(desempleo)) ,
FUN = svymean, na.rm=T, covmat = TRUE,
vartype = c("se", "ci"))
tab_region_pobreza## Region pobreza se ci_l ci_u
## Norte Norte 0.3262813 0.04800361 0.2321959 0.4203666
## Sur Sur 0.2946736 0.04794292 0.2007072 0.3886400
## Centro Centro 0.3233923 0.07211854 0.1820426 0.4647421
## Occidente Occidente 0.3673286 0.04400234 0.2810856 0.4535716
## Oriente Oriente 0.3870632 0.09160150 0.2075276 0.5665989
El interés se centra en realizar los contrastes siguientes para pobreza:
\(\hat{p}_{Norte} - \hat{p}_{Centro}\),
\(\hat{p}_{Sur}-\hat{p}_{Centro}\)
\(\hat{p}_{Occidente}-\hat{p}_{Oriente}\)
Escrita de forma matricial es:
\[ \left[\begin{array}{ccccc} 1 & 0 & -1 & 0 & 0\\ 0 & 1 & -1 & 0 & 0\\ 0 & 0 & 0 & 1 & -1 \end{array}\right] \]
Y, utilizando la función svycontrast se obtiene:
svycontrast(tab_region_pobreza, list(
Norte_sur = c(1, 0, -1, 0, 0),
Sur_centro = c(0, 1, -1, 0, 0),
Occidente_Oriente = c(0, 0, 0, 1, -1))) %>% data.frame()## contrast SE
## Norte_sur 0.002888908 0.08663389
## Sur_centro -0.028718759 0.08660027
## Occidente_Oriente -0.019734641 0.10162205