Encuestas – Resultados desagregados y agregados en la misma tabla (R::srvyr::cascade)

Photo by Franki Chamaki on Unsplash

Hace unos días escribí acerca de una solución innovadora a la hora de producir resultados de una estadística cualquiera para algunas desagregaciones de interés y al mismo tiempo crear una fila que mostrara el resultados de esta estadística en la base de datos completa. Cuando se trata de analizar bases de datos que vienen de una encuesta, no es posible utilizar esta solución, puesto que se estaría obviando el diseño de muestreo y por ende, la inferencia estaría sesgada.

Este problema ya no es más un problema, puesto que la última versión de la librería srvyr incluye la función cascade que permite generar tablas desagregadas, con una fila al final que incluye el cálculo de las estimaciones para toda la población. A continuación un ejemplo, con una desagegración simple:

library(survey)
library(srvyr)
data(api)

dstrata <- apistrat %>%
  as_survey_design(strata = stype, weights = pw)

dstrata %>%
  group_by(awards) %>%
  cascade(api99 = survey_mean(api99),
          api00 = survey_mean(api00),
          api_diff = survey_mean(api00 - api99),
          .fill = "Total")

# A tibble: 4 x 7
  stype api99 api99_se api00 api00_se api_diff api_diff_se
  <chr> <dbl>    <dbl> <dbl>    <dbl>    <dbl>       <dbl>
1 E      636.     13.3  674.    12.5     38.6         2.76
2 H      617.     15.8  626.    15.5      8.46        3.41
3 M      610.     16.8  637.    16.6     26.4         3.05
4 Total  629.     10.1  662.     9.54    32.9         2.08


Y por acá, otro ejemplo con una desagregación en dos niveles. Nótese que la opción .fill = "Total" etiqueta las celdas agrupadas convenientemente.

dstrata %>%
  group_by(stype, awards) %>%
  cascade(api99 = survey_mean(api99),
          api00 = survey_mean(api00),
          api_diff = survey_mean(api00 - api99),
          .fill = "Total")

# A tibble: 10 x 8
   stype awards api99 api99_se api00 api00_se api_diff api_diff_se
   <fct> <fct>  <dbl>    <dbl> <dbl>    <dbl>    <dbl>       <dbl>
 1 E     No      647.     26.6  660.    26.1    13.1          3.37
 2 E     Yes     632.     15.4  680.    14.1    48.0          2.87
 3 E     Total   636.     13.3  674.    12.5    38.6          2.76
 4 H     No      610.     17.0  609.    16.3    -0.765        3.37
 5 H     Yes     634.     33.3  662     31.7    28.1          5.10
 6 H     Total   617.     15.8  626.    15.5     8.46         3.41
 7 M     No      585.     21.8  599.    22.2    13.7          2.51
 8 M     Yes     637.     24.5  677.    22.1    40.2          4.19
 9 M     Total   610.     16.8  637.    16.6    26.4          3.05
10 Total Total   629.     10.1  662.     9.54   32.9          2.08

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.