Learner weighted sampling overweighting learners only at the school level

问题描述 投票:0回答:0

我有一个包含 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)
r dplyr random statistics sampling
© www.soinside.com 2019 - 2024. All rights reserved.