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

Author

Andrés Gutiérrez

Published

June 14, 2019

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:

HTML generated using hilite.me

library(survey)
library(srvyr)
data(api, package = "survey")
apistrat$api_diff <- apistrat$api00 - apistrat$api99

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(api_diff),
          .fill = "Total")
awards api99 api99_se api00 api00_se api_diff api_diff_se
No 623.6716 15.79628 633.7349 15.556996 10.06332 2.079237
Yes 632.6291 13.05207 678.4224 12.008496 45.79334 2.434877
Total 629.3948 10.09699 662.2874 9.536132 32.89252 2.078207

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.

HTML generated using hilite.me

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