You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Stata中结合人口权重与Bootstrapping计算分位数?

在Stata中为加权分位数计算添加Bootstrapping功能

方法一:按年份分组直接使用Bootstrap命令

Stata的bootstrap命令支持结合权重与分组操作,可直接基于加权分位数结果执行Bootstrap抽样,步骤如下:

运行以下代码,指定Bootstrap重复次数(建议至少1000次)、随机种子(保证结果可复现),并按year分组计算:

bootstrap p10=r(p10) p90=r(p90) p95=r(p95) p99=r(p99), by(year) reps(1000) seed(1234) nowarn: summarize income, detail [iweight=wg]
  • by(year):对每个年份的观测独立执行Bootstrap抽样
  • reps(1000):设置Bootstrap重复抽样次数,数值越大结果越稳定
  • seed(1234):固定随机种子,确保结果可重复
  • summarize income, detail [iweight=wg]:带权重计算分位数,r(p10)等为命令返回的分位数结果

运行后会输出每个年份各分位数的Bootstrap估计值、标准误及置信区间。

方法二:自定义程序批量处理所有年份

如果需要更灵活的结果输出格式,可以自定义程序计算所有年份的加权分位数,再用bootstrap包裹执行:

  1. 定义计算分位数的程序:
program define weighted_yearly_quantiles, rclass
    collapse (p10) p10=income (p90) p90=income (p95) p95=income (p99) p99=income [iweight=wg], by(year)
    // 将每个年份的分位数以标量形式返回
    forvalues i = 1/`=_N' {
        local current_year = year[`i']
        return scalar p10_`current_year' = p10[`i']
        return scalar p90_`current_year' = p90[`i']
        return scalar p95_`current_year' = p95[`i']
        return scalar p99_`current_year' = p99[`i']
    }
end
  1. 执行Bootstrap抽样:
bootstrap, reps(1000) seed(1234): weighted_yearly_quantiles
  1. 后续可通过estimates命令导出结果,或手动整理返回的标量值。

注意事项

  • 权重适配:你的代码使用iweight(频数权重),Stata的bootstrap会自动按权重对应的频数进行有放回抽样,符合加权Bootstrap的逻辑。
  • 计算效率:reps()数值越大计算时间越长,可根据需求调整,最低建议不低于500次。

内容的提问来源于stack exchange,提问作者mostlyharmless563

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:57:41