两阶段抽样权重疑问:加权后样本量为何未还原至第一阶段规模?
关于两阶段抽样加权后样本量的疑问解答
嘿,这个问题问到点子上了——我来帮你拆解这里的逻辑,搞清楚为什么加权后的总样本量没到5000左右~
核心问题:权重的构成决定了加权后的总规模
两阶段抽样的权重通常由几部分组成,每一部分对应不同的调整目的:
- 第一阶段抽样权重:如果第一阶段是从总体中抽取5000个案例,这部分权重是「总体规模 ÷ 第一阶段样本量」,作用是把第一阶段样本还原到总体水平;
- 第二阶段抽样权重:从第一阶段的5000个里抽2700个,这部分权重是「第一阶段样本量 ÷ 第二阶段样本量」,作用是把第二阶段样本还原到第一阶段的规模;
- 校准/事后分层权重:用来匹配种族、性别等变量的总体分布,这部分会微调权重,让样本的边际分布更贴合总体。
如果你的权重只包含了第二阶段抽样调整+校准调整,但没加入第一阶段的抽样权重,那加权后的总样本量就会停在第一阶段的5000;但如果连第一阶段的调整都没做,或者权重的定义只是「第二阶段内部的相对权重」(比如只校准了第二阶段的性别/种族分布,没还原到第一阶段),那总样本量就会接近第二阶段的2700——这正好对应你现在的结果。
快速验证你的权重
你可以先算一下第二阶段权重的总和:
sum(df2$weights)
- 如果结果接近5000:那说明权重已经包含了第二阶段到第一阶段的还原,只是
svytable的输出可能因为校准微调有小偏差; - 如果结果接近2700:那你的权重确实没做第一阶段的还原,只是调整了第二阶段内部的分布。
另外,还有个小细节:你用了ids=~1来定义抽样设计,但两阶段抽样应该指定第一阶段的抽样单元(PSU),比如如果第一阶段的每个案例是一个PSU,应该写成ids=~phase1_id,否则survey包会把它当成简单随机抽样,没法正确处理两阶段的抽样误差,这也可能影响权重的作用逻辑。
怎么调整到你预期的结果
如果你的目标是让加权后的样本量还原到第一阶段的5000,需要:
- 确认第一阶段的抽样权重(如果第一阶段是全样本抽样,那这部分权重是1;如果是从更大的总体中抽的5000,那需要拿到总体规模或者第一阶段的抽样概率);
- 把第二阶段的权重和第一阶段的权重相乘,得到最终的分析权重;
- 用正确的两阶段抽样设计重新定义
svydesign,比如:
dfw <- svydesign(ids=~phase1_id, data=df2, weights=~final_weight)
这样处理后,加权后的总样本量应该就会接近5000了。
内容的提问来源于stack exchange,提问作者user8098154




