Продолжение обработки интерполяции пакета опроса R для средних оценок , которая не получила большого количества отзывов. Мне удалось свести проблему к следующему:
Я использую пакет R survey
, чтобы получить среднюю оценку для набора данных. Данные для воспроизведения этой проблемы доступны в виде dput
текста здесь .
Я использую дизайн класса svyrep.design
, который определяется следующим образом:
design <- svydesign(id = ~id_directorio, strata = ~estrato, weights = ~f_pers, check.strata = TRUE, data = datos)
set.seed(234262762)
repdesign <- as.svrepdesign(design, type = "subbootstrap", replicates=20)
options(survey.lonely.psu="adjust")
A svyquantile
внутри svyby
выполняет работу, как ожидалось:
svyby(formula = ~ing_t_p, by = ~CL_GRUPO_OCU_08, repdesign, svyquantile, quantiles=c(0.5), method="constant",
f = 0.5, ties = "rounded", vartype=c("ci", "se"), ci=TRUE, na.rm=FALSE)
CL_GRUPO_OCU_08 V1 se cv cv%
ISCO08_1 ISCO08_1 1002513.04 269630.31 0.26895442 26.895442
ISCO08_2 ISCO08_2 744505.53 68827.09 0.09244672 9.244672
ISCO08_3 ISCO08_3 489789.32 42839.16 0.08746447 8.746447
ISCO08_4 ISCO08_4 449806.52 69526.34 0.15456944 15.456944
ISCO08_5 ISCO08_5 286705.37 13392.01 0.04671002 4.671002
ISCO08_6 ISCO08_6 449613.04 NaN NaN NaN
ISCO08_7 ISCO08_7 93032.83 109534.62 1.17737600 117.737600
ISCO08_8 ISCO08_8 564514.15 437752.31 0.77544967 77.544967
ISCO08_9 ISCO08_9 293712.84 24497.97 0.08340790 8.340790
Однако см. Оценку для категории ISCO08_6
. Это не дает ожидаемого среднего результата. Вместо этого отображается наименьшее число из двух:
datos %>% filter(CL_GRUPO_OCU_08 == "ISCO08_6")
# A tibble: 2 x 5
id_directorio estrato f_pers ing_t_p CL_GRUPO_OCU_08
<dbl> <dbl> <dbl> <dbl> <chr>
1 24568 2021 98.7 449613. ISCO08_6
2 24568 2021 98.7 551525. ISCO08_6
Аргумент f
должен иметь дело с этим (он управляет интерполяцией данных); и действительно так для всех остальных случаев, но не влияет на строку ISCO08_6
. Я обнаружил, что эта проблема влияет на оценки, когда есть только 2 или 4 точки данных.
Итак, как мне получить средний результат с помощью этого метода, когда количество точек данных невелико?