分享

玩转Stata | Heckman两阶段-内生性处理利器​

 张春强2022 2017-12-22



传播会计前辈思想,引领青年一代成长

因缘分相聚,因互助成长,因智慧光华




*Heckman两步法及STATA应用案例

*---------------------------

*-1. 主要解决问题

Heckman两步法主要用于解决实证研究中所获得的数据不能代表研究总体而导致的样本选择问题。样本选择问题既可能是由收集样本的规则所导致的,也可能是由研究对象自己的行为所导致的。前一种情形是指研究人员根据自己设定的规则抽取样本,而不是随机抽样。例如,研究人员在研究公司治理问题时只收集了发达地区的公司作为样本。后一种情形被称之为(样本)自选择问题。例如,若我们想研究妇女的工资收入,虽然我们可以观测到有工作的妇女的实际工资收入,但是不知道没有工作的妇女的“保留工资”(即愿意工作的最低工资)。于是我们收集数据时就会缺失没有工作的妇女样本。在以上两种情况下,被选择的样本都无法代表总体,使用这样的样本进行研究是得不到准确的结果的。


      如何形象地理解样本选择带来偏误这个问题呢?请看下图:



 图中,白点加黑点是全样本的散点图,但是由于样本选择问题,我们只选择了黑色散点所代表的样本。如图可知,实线是根据总样本(黑点加白点所代表的样本)回归所得,而虚线是根据我们选择的样本回归所得。两线斜率、截距明显不同,即样本选择会带来偏误。

*--------------------

*-2.基本思想



  第一步,研究者根据经济理论设计出一个模型(称为“选择方程”),来计算考察对象做出某种行为的概率;第二步,研究者在原来的模型中加入考察对象做出该种行为的概率,作为一个额外的解释变量,以修正自选择行为。




       如何形象理解heckman两步法的基本思想呢?
       承接上例,既然我们得不到没有工作的女性数据,但我们又要在回归中考虑此类样本的影响,那么,我们就要在回归中调整现有样本的比重(即加入“女性工作的概率”这一变量)。
       于是,我们找到一些因素(married children educ age)算出女性工作的概率lambda,然后将lambda带入回归模型中,如果lambda显著,则说明“是否工作”确实影响到了回归结果,即存在自选择问题。如果lambda不显著,则不存在自选择问题。如果存在问题,带入lambda以后得到的结果即为修正过的结果。



*-------------------------------------

*-3 Heckman 模型stata案例

    *--------

*-3.1  Heckman 模型设定

      help heckman

  shellout '$R\Stata_Heckman.pdf'  // Bookmark: The model


      *-Regression equation: 

  *

      *    y = xb + u_1

      *

      *-Selection equation:    Z is varlist_s

  *

      *    y observed if  Zg + u_2 > 0   (根据 y 是否缺漏确定 1/0 变量)

      *

      * where:

      *          u_1 ~ N(0, sigma^2)

      *          u_2 ~ N(0, 1)

      *          corr(u_1, u_2) = rho


    *------

    *-3.2  Heckman 模型估计方法


 *-最大似然估计 (Maxlikelihood Estimation, MLE)

 

   *-基于二元联合正态分布函数

 

     *-两步法 (Two-step Estimation)

   

   *-Step1: Probit (Treat Equation) --> Prob(Z=1) 

   *        Pr(y_j observed | z_j) = Normal(zg)

   *        Inverse Mill's Ratio: IMR = normalden(wb)/Normal(wb) 

   *        逆米尔斯比率:用以修正 self-selection 导致的偏误

   *-Step2: reg y x IMR  //回归方程中加入 inverse Mill' ratio

   

   *-Note: 

   *  normalden() 表示正态分布的密度函数,

   *  Normal()    表示正态分布的累积分布函数.

   

    *------

    *-3.3  Heckman 应用举例

  use womenwk.dta, clear  // 参考 [U] heckman, p.649

  des

  sum age educ married children wage

  

   *-Stata 中对 y 中缺漏值的处理  // 参考 [U] heckman, p.649

       *  假设 y 中的缺漏值是不可观察的部分

   *  新生成一个变量 Q=0 (若 y 是缺失值), Q=1 (otherwise)

   *  这是 Probit 回归中的被解释变量

   *  注意:所有的 X 变量都不存在缺漏值

  

  *---------

  *-MLE 估计


    heckman wage educ age, select(married children educ age)

est store mle

*-education,age 同时出现在了主方程和选择方程中,这很普遍

* 为了保证模型能够识别,主方程和 select 方程中的变量至少有一个不同

*-Lamda: 表明存在显著的样本选择偏误

*-虽然 rho 的显著性已经可以表明存在样本选择偏误,

* 但文献中普遍使用的是 Lamda = rho*sigma

  dis 'lamda= ' e(rho)*e(sigma)

  dis 'lamda= ' 0.67284*5.9473529  // 等价


  *-------

  *-两步法  Two-step

 

    heckman wage educ age, select(married children educ age) twostep

est store twostep

    heckman wage educ age, select(married children educ age) twostep first

    *-手动计算

  dropvars Yes w IMR

  * 0/1 observable?

  gen Yes = (wage!=.) 

  * probit

  probit Yes married children educ age

  predict w, xb

  * Inverse Mills Ratio

  generate IMR = normalden(w)/normal(w)

  * Heckit two-step

  regress wage educ age IMR



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多