Stata 权重设定-fweight-pweight

发布时间:2021-09-19 阅读 12625

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

作者:王维怡 (厦门大学)
邮箱wangwyda@163.com


目录


1. 简介

1.1 为何要使用 weight

在数据分析中有时需要为观测值设置不同的权重,例如以下情形:

  • 在抽样过程中,不同子总体里的个体被抽中的概率不同,那么不同样本个体代表的总体数量也不同,需要以权重进行反映。例如,在分层抽样中,按男性/女性分别抽样,男性组个体被抽中的概率是 0.1 ,女性组个体被抽中的概率是 0.05,则一个男性观测值能代表 10 个男性,一个女性观测值能代表 20 个女性;
  • 如果我们有的不是个体数据,而是某个组或某个地理区域的数据均值,则该均值的信息含量随着其代表的个体数量增多而更大。例如,10 万人城市的收入均值的信息含量比 1 万人城市的收入均值更大。如果我们能以权重对城市人数进行反映,数据估计将更有效率。

1.2 何谓 weight

weight 表示赋予观测值的不同权重。Stata 提供了 4 种不同的权重设置方式:

  • fweight 频数权重 (frequency weight),表示某个观测值重复出现的次数。例如,如果某个观测值的 fweight 等于 5,表示实际上有 5 个与该观测值完全相同的观测值;
  • pweight 概率权重/抽样权重 (probability weight),表示根据抽样方法,该样本被抽中的概率的倒数。例如,如果某个观测值的 fweight 等于 5,表示该观测值所属的子总体中每个个体被抽中的概率是 1/5,或该子总体的每一个样本能代表 5 个个体;
  • aweight 分析权重 (analytic weight),通常适用于数据是某个组或某个地理区域的数据均值的情形,aweight 表示计算该均值使用的个体的数量。例如,某 10 万人城市的收入均值为 2500 元,则可以设置该收入均值的 aweight 为 100000;
  • iweight 重要性权重 (importance weight),“重要性” 的含义由用户自行定义,此权重通常为编程所用,本推文里不作介绍。

2. 语法结构

Stata 中使用 weight 命令的语法结构如下:

command [weightword=exp]

其中,command 是某个支持权重设置的命令,weightword 代入上面的 4 种权重设置方式之一,exp 可以取常数或某个变量。例如,以人口数作为权重:

*加权回归
regress y x1 x2 [pweight=population] 

*加权计算描述性统计量
summarize y x1 x2 [aweight=population] 

3. Stata 实操

3.1 fweight:重复观测值

使用倾向得分匹配之后,同一个控制组个体可能被匹配到多个处理组个体上,在对匹配样本回归时需要将次匹配细节反映出来。使用 fweight 表示控制组个体被用到的次数。例如,研究是否四大审计 (BIG4) 对盈余管理 (ABSACC) 的影响。先使用 psmatch2 为四大审计的公司寻找非四大审计的匹配公司。psmatch2 命令会自动生成 _weight 变量,代表匹配次数。在有放回的匹配下,_weight 等于 n 表示该控制组个体匹配是 n 个处理组个体的匹配对象。

一旦获得了 _weight 变量,就相当于对样本的匹配情况进行了标记。本例中 _weight 最大值是 14 ,即有某家非四大审计的公司成为了 14 家四大审计公司的匹配样本。在后续的回归中,需要将此匹配结果反映出来。

. *调入数据
. lxhuse lianxh_psm_data.dta, clear

. *匹配变量
. global indepvar LNASSET LEV ROA GROWTH BM AGE 
. global fixvar   i.indcode i.year

. *倾向得分匹配
. psmatch2 BIG4 $indepvar $fixvar, out(ABSACC) n(1) common cal(0.03)

. sum _weight
    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
     _weight |      2,323    1.151959    .7029404          1         14
. *全样本回归
. reg ABSACC BIG4 $indepvar $fixvar, cluster(stkcd)
. est store full

. *匹配样本回归
. reg ABSACC BIG4 $indepvar $fixvar [fweight=_weight], cluster(stkcd)
. est store matched

. * 对比两个结果
. local m "full matched"
. esttab `m', mtitle(`m') compress nogap ar2 drop(*.indcode *.year)

------------------------------------
                 (1)          (2)   
                full      matched   
------------------------------------
BIG4        -0.00491*    -0.00681*  
             (-2.06)      (-2.26)   
LNASSET     -0.00276***  -0.00290   
             (-3.69)      (-1.84)   
LEV           0.0343***    0.0147   
              (7.99)       (1.09)   
ROA          -0.0193       0.0663   
             (-1.07)       (1.33)   
GROWTH        0.0282***    0.0156*  
             (14.24)       (2.45)   
BM           -0.0208***  -0.00860   
             (-5.72)      (-0.86)   
AGE        0.00000238     0.000290   
              (0.02)       (0.99)   
_cons          0.127***     0.106***
              (8.15)       (3.47)   
------------------------------------
N              19112         2676   
adj. R-sq      0.101        0.120   
------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

匹配样本的回归在 regress 命令后加上 [fweight=_weight]。从全样本和匹配样本的结果比较可以看出,与全样本回归相比,在匹配样本的样本量减少,仅包含了匹配成功的样本, BIG4ABSACC 的影响从 -0.00491 变为 -0.00681。更多详细介绍,请参考推文「Stata:PSM-倾向得分匹配分析的误区」

3.2 pweight:抽样概率不同

pweight 常在调查数据中使用。例如,俄勒冈州 2004 年调查了居民对生态环境的关心程度 (env_con)。由于调查方法的设计,不同组别有不同的抽样概率,抽样概率的倒数由 finalwt 变量记录。分析受教育年限 (educat) 对环境关心程度的影响。在回归分析中,使用 [pweight = finalwt] 反映抽样概率,使结果更为准确。

. *调入数据
. use "http://www.stata-press.com/data/agis4/ops2004.dta", clear

. *不加权的 OLS 回归
. reg env_con educat inclog male 
. est store ols

. *加入抽样权重
. reg env_con educat inclog male [pweight = finalwt]
. est store ols_wgt

. * 对比两个结果
. local m "ols ols_wgt"
. esttab `m', mtitle(`m') compress nogap ar2
------------------------------------
                 (1)          (2)   
                 ols      ols_wgt   
------------------------------------
educat       -0.0187***   -0.0366***
             (-4.02)      (-4.77)   
inclog        0.0327*      0.0553   
              (2.23)       (1.95)   
male           0.141***     0.187***
              (5.64)       (4.31)   
_cons          2.702***     2.596***
             (19.38)       (9.29)   
------------------------------------
N               3856         3856   
adj. R-sq      0.012        0.030   
------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

可以看到,加入抽样权重之后 educatenv_con 的影响从 -0.0187 变为 -0.0366。

3.3 aweight:观测值是均值

以 1980 年美国 50 个州人口调查数据为例,研究城镇化率对死亡率 (drate) 的影响。其中城镇化率 (urbanrate) 可以视为各州的均值。用 aweight=pop 在回归中加入各州人口权重。

. *调入数据
. webuse census2, clear
. gen urbanrate = popurban/pop    //计算城镇化率

. *城镇化率对死亡率的影响,以各州人口数量为权重
. reg drate urbanrate age [aweight=pop]

      Source |       SS           df       MS      Number of obs   =        50
-------------+----------------------------------   F(2, 47)        =     54.38
       Model |  3725.29569         2  1862.64784   Prob > F        =    0.0000
    Residual |  1609.72348        47  34.2494357   R-squared       =    0.6983
-------------+----------------------------------   Adj R-squared   =    0.6854
       Total |  5335.01916        49  108.877942   Root MSE        =    5.8523

------------------------------------------------------------------------------
       drate | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
   urbanrate |    -27.476      6.767    -4.06   0.000      -41.091     -13.862
         age |      5.282      0.508    10.39   0.000        4.260       6.304
       _cons |    -51.486     14.567    -3.53   0.001      -80.791     -22.182
------------------------------------------------------------------------------

还可以计算人口数量加权的年龄均值:

. *以各州人口数量为权重,对年龄中位数进行描述性统计
. summarize age [aweight=pop]

    Variable |     Obs      Weight        Mean   Std. dev.       Min        Max
-------------+-----------------------------------------------------------------
         age |      50   225907472    30.11523   1.731411         24         35

4. 参考资料

  • Stata Manual: Weight -PDF-
  • Stata Manual: Weighted estimation -PDF-
  • Kim, ChangHwan. 2019. Weighting. SOC 910 Advanced Statistics. -PDF-

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh psm 权重, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh