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