Stata中纳入抽样权重统计年度符合条件个体观测数量的方法咨询
Stata纳入抽样权重的分年度计数实现方法
实现逻辑
你需要统计的加权个体数本质是符合var1==1 | var1==2条件的观测的抽样权重总和,对应抽样设计下的目标群体规模估计值。
代码实现
方案1:兼容原有循环逻辑(改动最小)
把原有count命令替换为带权重参数的summarize命令,调用返回值r(sum_w)(权重总和)即可:
gen var1_weighted_count = . foreach i of numlist 1997/1999 { summarize weight if (var1==1 | var1==2) & time==`i' [pweight=weight] replace var1_weighted_count = r(sum_w) if time==`i' }
以你提供的示例数据运行后,各年度结果如下:
- 1997年:413.2(权重400+13.2加总)
- 1998年:200(仅ID1的观测符合条件)
- 1999年:0(无符合var1条件的观测)
方案2:无需循环的简洁写法
* 生成符合筛选条件的标识 gen eligible = (var1==1 | var1==2) if !missing(var1) * 按年度分组直接计算加权总和 bysort time: egen var1_weighted_count = total(eligible * weight)
方案3:需要输出标准误的统计推断场景
如果需要同时输出加权计数的标准误,可使用svy系列命令:
* 先声明抽样设计 svyset [pweight=weight] * 按年度输出符合条件的加权计数及标准误 svy, subpop(if eligible == 1): tab time, count se
注意事项
- 不要使用
summarize返回的r(sum)作为结果,该值是变量weight的加权统计量,不是权重本身的加总 - 如果存在缺失值,建议提前对
var1、time、weight字段做缺失值筛查,避免统计结果偏差
内容的提问来源于stack exchange,提问作者Hosea
相关产品推荐
相关产品推荐

