我有一个包含 1200 万学习者的人口级别数据集。
我正在尝试在学校层面进行抽样,因为我没有 1200 万学习者的计算能力。
我需要维护整个学校,以便随后计算学校级别的统计数据,例如学校中女性学习者的比例。
如果我简单地随机抽样,小型学校将在学习者水平上被过度代表。
我希望学习者级别的平均学校规模(
learner_count
)在学习者级别的总体学校规模的抽样误差范围内。但是,我的代码正在返回数据,其中学习者加权抽样 学校水平 学校规模与人口 学习者水平 学校规模相同,但样本 学习者水平 学校规模远高于人口学习者级别学校规模。我尝试创建学校规模权重(在校学生/所有学习者)作为样本函数中的权重,但返回相同的结果。
我正在使用以下代码进行采样:
#Create school level data
unique_schools <- all_learners %>%
filter(!is.na(school_id),
!is.na(learner_count))%>%
group_by(school_id) %>%
summarise(school_id = first(school_id),
learner_count = first(learner_count))
#%>%
# mutate(learners_tot = sum(learners_master, na.rm = T),
# learner_weight = learner_count/learners_tot) %>%
# select(school_id, learner_weight)
# Randomly select 1000 schools
selected_schools <- unique_schools %>%
sample_n(1000, weight = learner_count, replace = FALSE) #or weight = learner_weight
# Create the `sample` column and filter the dataset
sample <- all_learners %>%
mutate(sample = if_else(school_id %in% selected_schools$school_id, 1, 0)) %>%
filter(sample == 1)