Stata:PSM-倾向得分匹配分析的误区

发布时间:2020-06-15 阅读 26127

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

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

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

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

作者:秦利宾 (厦门大学)
邮箱: qlb150@163.com

[编者按]: 本文主要内容摘译自以下文章。同时,结合网上资料和个人经验整理了 Stata 相关代码,以供大家参考。主要包括:

  • PSM 的理解误区;
  • 使用 regress + [fweight] 手动完成 PSM 估计,即 OLS 估计;
  • psmatch2 的使用范例

[Source]: Jonathan E. Shipman, Quinn T. Swanquist, and Robert L. Whited (2017) Propensity Score Matching in Accounting Research. The Accounting Review: January 2017, Vol. 92, No. 1, pp. 213-244. [Link1], [Link2]


目录


1. 背景

术语速查:

MR:多元线性回归
FFM:函数形式设定错误
PSM:倾向得分匹配分析

传统上,研究者使用多元线性回归 (MR) 可以缓解一些内生性问题。但是,MR 的无偏估计依赖于 YX 函数形式的正确设定,否则就会产生函数形式错误设定 (FFM) 问题,导致有偏估计。PSM 通过减少对函数形式设定的依赖,缓解 FFM 问题,除此之外,PSM不能解决 更为一般的内生性问题,如自选择、遗漏变量等。「编者注:这是文献里普遍存在的认知错误。」

2. 倾向得分匹配

2.1 简要介绍

一项好的研究往往能为为「因果关系」提供令人信服的经验证据。但是,鉴于多数研究中使用的数据都是「非实验数据」,研究者在处理内生性问题时会面临诸多困难。

我们以 是否上大学 (Di) 对 收入 (Wi) 的影响为例来说明这个问题。这里,先讲二者的关系设定为如下线性模型:

显然,在模型 (1) 的设定中,我们可能忽略了一些同时影响「解释变量」—— 是否上大学 (Di) 和「被解释变量」—— 收入 (Wi) 的因素,例如,家庭背景、能力、动机、个人兴趣等。这些因素被称为「共同因素 (Common Factors)」,因为他们同时影响被解释变量和解释变量,但又往往不可观测或无法获取数据。

编者注:「共同因素」的存在可能导致模型 (1) 的估计结果变成一个所谓的「伪回归」或曰「虚假回归」。比如,我们观察到某个小子没上大学,收入也低,便凭直觉认为其收入低源于没有上大学。但真实的原因可能是这个小子患有严重的先天性肥胖症——这同时导致了起学习成绩不佳,找工作时频频受阻。

从计量经济学的角度来讲,在模型设定中遗漏的「共同因素」都会「跑到」干扰项 εi 中。由于这些被遗漏的「共同因素」往往与 Di 相关,也就自然导致 Corr(Di,εi)0,从而导致 β^1 估计可能是有偏的。为了解决这个问题,可以通过多元回归 (MR) 解决,见式 (2):

假设,智商 (IQi) 是影响是否上大学和收入的唯一因素,则式 (2) 可以无偏的估计 β^1。看似正确,但最大问题是 W 和 X 的线性关系并不总是成立。函数形式的错误设定 (FFM) 被误差项 (εi) 吸收,使得 Di 与 εi 相关,β^i 有偏。

匹配是解决 FFM 问题的一种方法。通过为上大学的人 (Di=1) 匹配智商 (IQi) 相近的未上大学的人 (Di=0),弱化对函数形式设定的依赖,缓解函数形式错误设定 (FFM) 导致的内生性问题。当然,匹配更多是根据多个变量 (Xi) 计算的概率进行匹配,且 Xi 同时影响 Di 和 Wi,概率值计算见式 (3):

实际上,匹配也有一定局限性。若智商 (IQi) 对是否上大学 (Di) 有较强的预测能力,匹配后的样本更有可能会排除高(低) IQi 上大学(不上大学)的个体。换言之,IQi 对 Di 预测能力越强,匹配的样本越少,质量也就越差。

2.2 错误理解和局限性

尽管,PSM 在减少处理变量和可观测变量相关性方面发挥着重要的作用,但在许多会计研究中,对「PSM 相对于 MR 的优点」这一问题仍然存在普遍的误解。虽然 PSMMR 都是通过控制与被解释变量和处理变量相关的可观测变量来缓解选择偏差,但二者的差异也很明显,主要体现在三个方面。

其一, PSM 并不能解决由「选择偏差或遗漏变量」所导致的内生性问题。

PSM 只是通过匹配的方式在一定程度上避免了 FFM 导致的偏差,并没有从根本上解决由「选择偏差或遗漏变量」所导致的内生性问题。然而,很少有研究注意到这一点,很多人会错误地认为 PSM 能够解决除了 FFM 以外的更为广泛的内生性问题,比如选择偏差、遗漏变量等,还有些时候甚至被用作 Heckman 模型工具变量估计 等方法的替代方法。

其二, PSM 不能被称为「准实验」,也无法模拟实验条件。

另一误解是 PSM 可以模拟实验条件。尽管处理组和对照组的协变量平衡可能类似于实验条件,PSM 仍缺少实验的重要特征。首先,PSM 只是缓解了可观测变量的系统差异,不可观察变量的差异并未缓解。而实验通过随机分配,可以有效控制可观测和不可观察变量影响。其次,PSM 决定了哪些观测值进入分析的样本中。

其三, PSM 的外部有效性问题。

PSM 的另一个问题是与外部有效性有关。在「共同支撑假设 (Common Support)」无法满足或很牵强的情况下,PSM 会系统排除缺乏对照组的样本,进而使得样本代表性变差,影响结果的外部有效性。

2.3 主要设计选择

在实践中,PSM 需要多种设计选择。即使样本和协变量不变,不同的设计选择仍可能得出不同的结论。

A. 估计倾向得分的主要设计选择:

  • 处理组和控制组的识别。若处理变量为二分变量,则处理组合控制组可以直接识别。若处理变量为连续变量,则需要指定分界点识别处理组和控制组。后者,更容易将匹配样本限定在分界点附近,这就降低了检验的显著性,增加了犯第二类错误的概率。
  • 预测模型设计。一个常见的错误理解,PSM 预测模型变量的选择应该使预测能力最好。实际上,由于 PSM 主要是解决 MR 模型错误设定导致的偏差,PSMMR 变量的选择上应该保持一致性,如果理论不支持一个变量包含在 MR 模型中,那么也不应该包含在 PSM 模型中,否则就不可避免的受事后选择的质疑。

B. 形成匹配样本的主要设计选择:

  • 重复和不可重复匹配。不可重复匹配使得每个控制组只能匹配一次,即使该控制组是多个处理组的最佳匹配,这就使得匹配质量降低和样本变小。相反,重复匹配则可以有效避免这些问题,但是在估计处理效应时,需进行加权和调整标准误,以反映匹配次数的影响。当然,也要注意极端控制组被重复匹配多次对推断结果的影响。
  • 匹配半径的设定。设定一个相对严格的「半径」值一般可以有效避免「糟糕」的匹配和提高协变量的平衡性。
  • 「1 对 1」 和「1 对多」匹配。会计研究中最常见的匹配方法是 1:1 匹配,但是在存在多个合理匹配样本时,「一对多」匹配可以降低抽样方差。与重复匹配一样,在「一对多」匹配时,也需要考虑加权。

C. 评估匹配样本:

  • 一般通过对处理组和控制组协变量均值或中位数差异检验来评价匹配效果。但是,考虑到匹配后样本减少,犯第二类错误概率增加,差异不显著并不能说明匹配后样本可以有效避免 FFM 问题。另一方面,协变量差异显著,而在数值上也可能比未匹配样本小的多,也可以避免 FFM 问题。

D. 估计处理效应:

  • 样本匹配后,处理效应可以通过简单的 t 检验或者 MR 进行估计。如果协变量实现了真正的平衡,那么简单的 t 检验是可以的。然而,研究者不能接受协变量平衡的零假设,因此推荐使用 MR 来调整协变量剩余的差异。

3. 会计研究中使用情况

接下来,以审计机构规模 (BIG4it)、内部控制质量 (WEAKit))、以及分析师跟踪 (ANALYSTit) 分别对财务报告质量 (QUALITYit) 的影响为例,介绍统计推断对 PSM 设计选择的敏感性。

Prediction Model (first stage):

Outcome Model (second stage):

其中,QUALITYit 分别以异常应计 (ABSACCit) 和财务重述 (RESTATEit) 衡量。在匹配过程中,根据倾向得分设置 0.03 的匹配半径进行匹配。

首先要评估一下是否存在 FFM 问题。通过比较简化模型 (Reduced Model) 和扩展模型 (Expanded Model) 的处理变量系数是否存在显著差异来判断是否存在 FFM 问题,其中扩展模型是在简化模型的基础上,加入所有控制变量的二次项和三次项。从下表看出,尽管在简化模型和扩展模型 BIGitWEAKitANALYSTit 系数显著性没有太大差异,但是 BIGit 和 ANALYSTitChow 检验显著,说明这里存在 FFM 问题。

[Source]: Jonathan E. Shipman, Quinn T. Swanquist, and Robert L. Whited (2017) Propensity Score Matching in Accounting Research. The Accounting Review: January 2017, Vol. 92, No. 1, pp. 213-244. [Link1], [Link2]

下表是 PSM 第一阶段回归结果。需要注意,由于模型解释能力越强,样本重叠可能性越小,模型解释能力越小,样本越接近总体样本 (相对与 MR 模型,PSM模型优势无法体现),因此这里模型解释能力并没有太大意义。另外,这里的解释变量与第二阶段控制变量保持一致,详见 2.3

*, **, *** Indicate significance at the 0.10, 0.05, and 0.01 levels, respectively (based on two-tailed tests). Table 4 presents the first-stage model used for estimating propensity scores in each setting. Models are estimated using logistic regression with standard errors that are robust to heteroscedasticity and clustered by firm ( Petersen 2009 ). t-statistics are presented in parentheses below the coefficients.
[Source]: Jonathan E. Shipman, Quinn T. Swanquist, and Robert L. Whited (2017) Propensity Score Matching in Accounting Research. The Accounting Review: January 2017, Vol. 92, No. 1, pp. 213-244. [Link1], [Link2]

下表为 1:1 的不重复匹配的 MRPSM 的回归结果,可以看出二者还是具有明显差别。

下表为可重复匹配,其中列 (1) 和列 (7) 为不可重复匹配的基准。可以看出,在协变量平衡性和处理变量系数显著性、数值大小上还是有显著区别的。

下表为将 PSM 模型第一阶段 LNASSETSit 替换为 LNMARKETit 的对比结果,可以看出存在显著差异。

下表为在 PSM 模型第一阶段增加额外的变量的结果对比,可以看出结果存在显著差异。

下表为 2008 - 2014 年会计顶刊使用 PSM 的情况介绍。

4. 应用案例

4.1 数据概况

这里以中国的审计机构规模 (BIG4it) 对财务报告质量 (QUALITYit) 的影响为例,介绍 PSM 实现过程。需要注意的是,以下仅仅展示匹配半径为 0.03 的 1:1 近邻不可重复匹配,实际应用中需要对比 PSM 不同选择,以分析结论的敏感性。

下面,我们先展示完整的分析过程 (Stata dofiles),继而对关键语句进行详解。

*-调入数据
  use "https://gitee.com/arlionn/data/raw/master/data01/Lianxh_PSM_data.dta", clear

*-数据概况
  des
/*
  obs:        19,112                          
 vars:            12                          2 Jun 2020 16:55
 size:       993,824                          
----------------------------------------------------------------------
              storage   value
variable name   type    label      variable label
----------------------------------------------------------------------
stkcd           double             
year            float              
ABSACC          float              盈余管理的绝对值
RESTATE         float              财务重述
BIG4            float              1:国际四大会计事务所审计;0=不是
LNASSET         float              总资产对数
LEV             float              资产负债率
ROA             float              总资产净利润率
GROWTH          float              营业收入增长率B
BM              float              账面市值比
AGE             float              年龄_成立(年)
indcode         long    indcode2   制造业保留2位
----------------------------------------------------------------------
Sorted by: stkcd  year
*/

*-定义全局暂元
  global indepvar LNASSET LEV ROA GROWTH BM AGE 
  global fixvar   i.indcode i.year
  
*-样本匹配
  probit BIG4 $indepvar $fixvar, vce(cluster stkcd) 
  est store Probit
  predict pscore, p 
  psmatch2 BIG4, pscore(pscore) outcome(ABSACC RESTATE) ///
           common n(1) norepl cal(0.03)                 //详见help文件
  pstest $indepvar, both graph
  psgraph
  
*-回归结果
  *-Full Sample ABSACC
  reg ABSACC BIG4 $indepvar $fixvar, cluster(stkcd)
  est store ABSACC_F
  *-Matched Sample ABSACC
  reg ABSACC BIG4 $indepvar $fixvar [fweight=_weight], cluster(stkcd)
  est store ABSACC_M
  *-Full Sample RESTATE
  reg RESTATE BIG4 $indepvar $fixvar, cluster(stkcd)
  est store RESTATE_F
  *-Matched Sample RESTATE
  reg RESTATE BIG4 $indepvar $fixvar [fweight=_weight], cluster(stkcd)
  est store RESTATE_M

*-结果对比
  local m "Probit ABSACC_F ABSACC_M RESTATE_F RESTATE_M"
  esttab `m', mtitle(`m') b(%6.3f) nogap drop(*.indcode *.year)  ///
	 order(BIG4) s(N r2_p r2_a) star(* 0.1 ** 0.05 *** 0.01)

4.2 解读:采用 regress 命令完成 PSM 的回归分分析

在上述分析中,我们队对匹配后样本做回归的命令如下:

reg RESTATE BIG4 $indepvar $fixvar [fweight=_weight], cluster(stkcd)

使用 psmatch2 命令后,会自动生成「_weight」变量。该变量代表匹配次数,在 1:1 非重复匹配下,_weight != . 表示匹配成功,且匹配成功时 _weight = 1。在 1:1 可重复匹配下,参与匹配的控制组 _weight 的取值可能为任意整数。

一旦获得了 _weight 变量,就相当于对样本的匹配情况进行了标记,我们可以直接在 regress 命令后附加加 fweight = _weight 进行样本匹配后的回归。其中,fweight 为「frequency weights」的简写,是指观测值重复次数的权重。若是 1:2 重复匹配,成功匹配的处理组 _weight = 2 / 2,成功匹配的控制组 _weight = 参与匹配次数 / 2,即都要除以 2 进行标准化。因此,若想继续使用 fweight 选项,需要 _weight * 2 转化为频数。详细请参考 Propensity Score Matching in Stata using teffects、[psmatch2 and fweight option of regress]。上述代码的具体输出结果如下:

以下部分为 psmatch2 命令的结果。第一个表列示了匹配前和匹配后处理组和控制组差异及其显著性,以 ABSACC 为例,匹配前处理组和控制组差异为「-.011637968」,并且 t 值为「-6.02」,匹配后处理组和控制组差异「ATT」为「-.006573884」,并且 t 值为「-2.47」。第二个表列示了处理组合控制组在共同取值范围的情况,其中控制组「17,726」个样本都在共同取值范围内,而处理组有「184」个样本不在共同取值范围内,有「1,163」在共同取值范围内。

在第一个表中,Note 显示所汇报的标准误未考虑倾向得分估计的事实 (即假设倾向得分为真实值,然后推导标准误),详情参见: Propensity Score Matching in Stata using teffects。实际上,这里仅对系数的标准误和显著性有影响,而对系数值并不产生影响,也不会对匹配结果产生影响。


.   psmatch2 BIG4, pscore(pscore) outcome(ABSACC RESTATE) ///
             common n(1)  norepl cal(0.03)                 //详见help文件
-----------------------------------------------------------------------------
Variable     Sample |    Treated     Controls   Difference      S.E.   T-stat
--------------------+--------------------------------------------------------
  ABSACC  Unmatched | .054644862    .06628283  -.011637968    .00193    -6.02
                ATT | .056073738   .062647622  -.006573884    .00266    -2.47
--------------------+--------------------------------------------------------
 RESTATE  Unmatched | .067557535   .113110685   -.04555315   .008833    -5.16
                ATT | .074806535    .09544282  -.020636285   .011569    -1.78
--------------------+--------------------------------------------------------
Note: S.E. does not take into account that the propensity score is estimated.

 psmatch2: |   psmatch2: Common
 Treatment |        support
assignment | Off suppo  On suppor |     Total
-----------+----------------------+----------
 Untreated |         0     17,726 |    17,726 
   Treated |       184      1,163 |     1,347 
-----------+----------------------+----------
     Total |       184     18,889 |    19,073 

pstest 命令主要考察匹配质量,以检验是否满足「平衡性假设 (balancing assumption)」。从下表可以看出,匹配后大多数变量标准化偏差 (%bias) 都比较小,而且 t 值都不拒绝处理组和控制组无系统性偏差的原假设。从下图也可以看出,所有变量的标准差在匹配后都缩小了。

.   pstest $indepvar, both graph
--------------------------------------------------------------------------------
          Unmatched |       Mean               %reduct |     t-test    |  V(T)/
Variable    Matched | Treated Control    %bias  |bias| |    t    p>|t| |  V(C)
--------------------+----------------------------------+---------------+--------
LNASSET          U  | 24.021   22.124    146.2         |  56.28  0.000 |  1.44*
                 M  | 23.743   23.752     -0.7    99.5 |  -0.15  0.878 |  0.89*
                    |                                  |               |
LEV              U  | .52906   .43117     51.1         |  17.16  0.000 |  0.78*
                 M  | .52314   .52429     -0.6    98.8 |  -0.15  0.884 |  0.77*
                    |                                  |               |
ROA              U  |  .0505   .04661      8.1         |   2.81  0.005 |  0.91
                 M  | .05049   .05186     -2.9    64.6 |  -0.67  0.500 |  0.92
                    |                                  |               |
GROWTH           U  | .18181    .2246    -10.6         |  -3.53  0.000 |  0.72*
                 M  | .18313   .17163      2.9    73.1 |   0.77  0.441 |  1.30*
                    |                                  |               |
BM               U  | .76837   .60176     71.8         |  25.11  0.000 |  0.95
                 M  | .74742   .74201      2.3    96.8 |   0.54  0.590 |  0.85*
                    |                                  |               |
AGE              U  | 16.355   15.891      8.3         |   2.96  0.003 |  1.05
                 M  | 16.771   16.681      1.6    80.6 |   0.39  0.698 |  0.90
                    |                                  |               |
--------------------------------------------------------------------------------
* if variance ratio outside [0.90; 1.11] for U and [0.89; 1.12] for M

-------------------------------------------------------------------------------
 Sample    | Ps R2   LR chi2   p>chi2   MeanBias   MedBias      B     R   %Var
-----------+-------------------------------------------------------------------
 Unmatched | 0.265   2578.34    0.000     49.3      30.8     150.6*  1.58   50
 Matched   | 0.001      2.17    0.904      1.8       2.0       6.1   1.11   67
-------------------------------------------------------------------------------
* if B>25%, R outside [0.5; 2]

psgraph 命令展示了倾向得分共同取值范围图形。和前文分析一致,控制组全部在共同取值范围内,处理组有少部分不在共同取值范围内,并且集中在倾向得分较高的部分。

下表报个了多个回归结果。列 (1) 为最开始的 Probit 回归结果。列 (2) 和列 (4) 是全样本回归结果,列 (3) 和列 (5) 为匹配后样本回归结果。


.   esttab `m', mtitle(`m') b(%6.3f) nogap drop(*.indcode *.year)  ///
               order(BIG4) s(N r2_p r2_a) star(* 0.1 ** 0.05 *** 0.01)

---------------------------------------------------------------------------
             (1)           (2)           (3)           (4)           (5)   
          Probit      ABSACC_F      ABSACC_M     RESTATE_F     RESTATE_M   
---------------------------------------------------------------------------
main                                                                       
BIG4                    -0.005**      -0.007***     -0.031***     -0.023*  
                       (-2.06)       (-2.61)       (-3.35)       (-1.96)   
LNASSET    0.667***     -0.003***     -0.002        -0.003        -0.015** 
         (13.85)       (-3.69)       (-1.25)       (-0.97)       (-2.38)   
LEV       -0.987***      0.034***      0.002         0.057***      0.063   
         (-4.03)        (7.99)        (0.17)        (3.08)        (1.14)   
ROA        1.622*       -0.019         0.057        -0.306***     -0.133   
          (1.87)       (-1.07)        (1.15)       (-4.83)       (-0.79)   
GROWTH    -0.214***      0.028***      0.017***      0.030***      0.008   
         (-4.42)       (14.24)        (2.72)        (4.73)        (0.53)   
BM        -0.134        -0.021***     -0.007        -0.016         0.022   
         (-0.61)       (-5.72)       (-0.69)       (-1.05)        (0.57)   
AGE        0.004         0.000         0.001*        0.001**       0.001   
          (0.47)        (0.02)        (1.92)        (2.56)        (0.48)   
_cons    -16.261***      0.127***      0.088***      0.076         0.439** 
        (-14.83)        (8.15)        (2.90)        (1.24)        (2.28)   
---------------------------------------------------------------------------
N        1.9e+04       1.9e+04      2326.000       1.9e+04      2326.000   
r2_p       0.293                                                           
r2_a                     0.101         0.114         0.060         0.038   
---------------------------------------------------------------------------
t statistics in parentheses
* p<0.1, ** p<0.05, *** p<0.01

5. PSM 使用建议

  • 应该将 PSM 作为解决 FFM 问题的一种方法,而不是更广泛的内生性、自选择、以及遗漏变量的问题。

  • 在使用过程中,应该将 PSMMR 结合对比使用。同时,要对单一 PSM 样本结论保持谨慎态度。

  • PSM 第一阶段不应该包含 MR 模型排除的变量。在 PSM 模型第二阶段应使用所有控制变量进行 MR 回归 (doubly robust estimation)。

  • 应披露 PSM 的设计选择,提高研究的可复制下和清晰度。具体来看,PSM 第一阶段模型、PSM 第二阶段模型、是否可重复匹配、多少个对照组样本匹配一个处理组样本、匹配半径 (如实施)、以及匹配质量 (协变量平衡性)。

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

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

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

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD