动态 Probit 模型及 Stata 实现

发布时间:2020-02-26 阅读 401

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

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

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

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

作者:万源星 (浙江工商大学财务与会计学院)
邮箱:408887469@qq.com


目录


本篇推文介绍动态面板 Porbit 模型 (Dynamic Probit Model) 的背景、模型及 Stata 应用。

1. 背景简介

动态面板数据的一般形式为:

模型将 yit1 (可以推广到多阶滞后项) 作为解释变量,体现了被解释变量动态变化特征的模型。然而,yit1 与随机干扰项 εit 具有很强的相关性,这违背了解释变量与随机干扰项不相关的基本假设,即存在内生性问题。基于此,Arellano and Bond (1991) 提出了一阶差分广义矩 (First-difference GMM) 估计法,先通过一阶差分消除个体效应,再用被解释变量的水平值作为工具变量,降低了模型的内生性。Arellano and Bover (1995) 、Blundell and Bond (1998) 在此基础上进一步提出了系统广义矩 (System GMM) ,将被解释变量的差分值作为工具变量,减少了一阶差分广义矩估计法的偏误。

然而,Probit、Logit 等非线性模型的被解释变量是二元变量 (Binary) 或取值有限的离散变量 (Dichotomous) ,模型用极大似然法进行估计,一阶差分广义矩估计法和系统广义矩估计法难以适用。由此,本文引入动态面板 Porbit 模型 (Dynamic Probit Model) ,下文重点介绍模型的推导过程和 Stata 应用。

2. 动态 Probit 模型简介

2.1 模型设定

假设研究个体行为 (比如上市公司研发) yit,即个体 i 在第 t 年是否执行该行为,它与上一年该行为 yit1,以及各种决定因素相关,那么动态面板 Probit 模型可以设定为:

其中,yit 和 yit 的关系为:yit 大于临界值 0 时,yit=1,小于等于 0 时,yit=0ci 是不可观测的个体效应;xitzit 为解释变量,前者随时间变化而发生改变,后者则不具备动态变化特征;εit 是随机干扰项,这里假设 xitzit 与 εit 不相关,即严格外生性。

同时,根据 Wooldridge (2005)、Skrondal and Rabe-Hesketh (2014)、Grotti and Cutuli (2018) 的概念及模型,为了消除不可消除的个体效应,ci 的表达式为:

其中,yi0xi0 是具有动态变化特征变量的初始观测值;x¯i 是个体从时间维度上取均值,即 x¯i=1/Ti=0Txitai 是随机干扰项,服从正态分布。

计量方法专题

2.2 模型估计

为便于理解,令 δwit=ci+βyit1+ρxit+γzit,则式 (1) 可改写成:

假设 F() 是 εit 的连续单调递增的概率密度分布函数,即 1<F()<0,则有:

根据逻辑分布的对称性,整理可得:

根据 (5) 和 (6),可以将式 (1) 改写成:

根据逻辑分布的对称性,式 (7) 可简化成:

即 yit 关于它的条件均值的一个回归。如果将 F() 设定为标准正态分布函数 Φ(),即:

由此,式 (5) 可以写成 :

非线性模型的估计方法是极大似然法。那么,假设我们有一组随机样本,为了得到以解释变量为条件的极大似然估计量,可将动态面板 Probit 模型改写成:

其中,i=1,2....Nt=1,2....T。显然,当 yit=1 时,P(yit=1)=F(δwit);当 yit=0 时,P(yit=0)=1F(δwit)。因此,根据式 (11) 可获得似然函数:

对数似然函数为:

最大化 lnL 的一阶条件为 lnL/δ=0,即:

其中,F(δwit)=f(δwit)。由于式 (14) 式是非线性模型,因此需要用迭代法进行求解,这里不再详细展开。

计量方法专题

3. Stata应用

Stata 官方并未提供直接估计动态 Probit 模型的命令。下面,我们先用手动计算的方法估计该模型,进而使用外部命令 xtpdyn 进行估计。前者便于理解模型背后的原理;后者语法简洁,推荐使用。

3.1 数据简介

下文将使用 Grotti and Cutuli (2018) 文中的数据,变量定义如下:

Name Label 定义
id Identification number 个体 id
year Year of survey 调查年份
poor Household poverty 家庭条件贫困为 1,否则为 0 (被解释变量)
age Age of household head 家庭户主年龄
edu Education of household head 高中以下为 0,高中为 1,以上为 2
black Race of household head 家族户主是黑人为 1,否则为 0
emp Employment of household head 失业为 0,兼职为 1,全职为 2
marstat Marital status 已婚为 0,单身为 1,其他为 2

3.2 旧方法 (手动处理)

旧方法的基本步骤如下:

  • Step1:预先手动计算具有动态变化特征变量的初始值 yi0xi0,以及个体均值 x¯i,去除不可观测的个体效应;
  • Step2:使用 xtprobit}meprobit 命令对动态数据模型进行估计;
  • 以 Grotti and Cutuli (2018,[PDF]) 的例子,命令如下:
******************************************* 
*      手动估计动态面板Probit模型 
* By-hand replication of model estimation            
*******************************************

*-Step1:手动计算相关初始值、个体均值

  *-数据概况
    use poverty.dta,clear
    xtset id year
    xtdes
  *-去掉缺失值
    gen sample = !mi(id, year, poor, black, age, edu, emp, marstat)
  *-计算具有动态变化特征变量的初始值
    local i "poor age emp marstat"
    foreach var of varlist `i' {
    bys sample id (year): gen `var'__0 = `var'[1] ///
    if sample & sample[1]==1	
  	}
  *-计算具有动态变化特征变量的个体均值
    bys sample id : egen m__age = mean(age)
    bys sample id : egen m1__emp = mean(emp==1)
    bys sample id : egen m2__emp = mean(emp==2)
    bys sample id : egen m1__marstat = mean(marstat==1)
    bys sample id : egen m2__marstat = mean(marstat==2)

*-Step2:估计模型 -xtprobit- -meprobit-
	
  *-用 xtprobit 估计动态数据模型
    xtset id year
    xtprobit poor iL.poor black c.age i.edu i.emp i.marstat ///
  		i.poor__0 age__0 i.emp__0 i.marstat__0 ///
  		m__age m1__emp m2__emp m1__marstat m2__marstat
    est store xtp
  	
  *-用 meprobit 估计动态数据模型 
    meprobit poor iL.poor black c.age i.edu i.emp i.marstat ///
  		i.poor__0 age__0 i.emp__0 i.marstat__0 ///
  		m__age m1__emp m2__emp m1__marstat m2__marstat || ///
		id : , intpoints(12)
    est store mep

计量方法专题

3.3 新方法:外部命令 xtpdyn

Grotti and Cutuli (2018, Stata Journal,[PDF]) 详细介绍了 xtpdyn 命令的原理及用法。

3.3.1 下载安装

在 Stata 命令窗口输入如下命令,即可自动安装 xtpdyn 命令:

ssc install xtpdyn, replace

3.3.2 基本语法

xtpdyn 可以用简单的命令生成变量的初始值及个体均值,语法如下:

xtpdyn depvar indepvars [if] [in] [weight], uh(varlist)  [re(re_options)]
  • depaver 是被解释变量,即模型 (1) 中的 yit
  • indepvars 是解释变量,即模型 (1) 中的 xitzit
  • uh() 中放入具有动态变化特征的解释变量,即模型 (1) 中的 xit;
  • re() 是指随机效应,如果考虑异方差,可写成 re(vce(robust))

一个例子 :下面的例子中,xtpdyn 列示了解释变量,以及 poor__0age__0 等变量初始值,m1__empm2__emp 等个体均值的回归结果。

net get xtpdyn.pkg   // 下载数据
use "poverty.dta", clear 
xtset id year
xtpdyn poor black c.age i.edu i.emp i.marstat, ///
            uh(i.emp i.marstat age) re(vce(robust))

Iteration 0:   log pseudolikelihood = -2101.8697  (not concave)
…… (output omitted) ……
Iteration 7:   log pseudolikelihood =  -1963.425  

Mixed-effects probit regression                 Number of obs     =      6,173
Group variable:              id                 Number of groups  =      1,112

                                                Obs per group:
                                                              min =          3
                                                              avg =        5.6
                                                              max =          9

Integration method: mvaghermite                 Integration pts.  =         12

                                                Wald chi2(20)     =    1154.68
Log pseudolikelihood =  -1963.425               Prob > chi2       =     0.0000
                                   (Std. Err. adjusted for 1,112 clusters in id)
--------------------------------------------------------------------------------
               |               Robust
          poor |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
---------------+----------------------------------------------------------------
               |
        L.poor |
         Poor  |   .5744007   .0813891     7.06   0.000      .414881    .7339205
               |
         black |   .5225842   .0688626     7.59   0.000     .3876159    .6575525
           age |  -.0649581   .0129398    -5.02   0.000    -.0903197   -.0395966
               |
           edu |
  High School  |  -.2264437   .0768907    -2.95   0.003    -.3771466   -.0757407
 More than HS  |  -.5724683   .0960026    -5.96   0.000    -.7606299   -.3843067
               |
           emp |
    Part-time  |  -.4357227   .1355535    -3.21   0.001    -.7014027   -.1700426
    Full-time  |   -1.23497   .1408088    -8.77   0.000     -1.51095   -.9589893
               |
       marstat |
       Single  |  -.6937395   .2385683    -2.91   0.004    -1.161325   -.2261542
  Div/sep/wid  |  -.5112024   .1342855    -3.81   0.000    -.7743972   -.2480076
               |
     1.poor__0 |    .923642    .095303     9.69   0.000     .7368516    1.110432
               |
        emp__0 |
            1  |   -.148413   .1406438    -1.06   0.291    -.4240698    .1272438
            2  |  -.1200204   .1545567    -0.78   0.437    -.4229458    .1829051
               |
    marstat__0 |
            1  |  -.3251233   .1983599    -1.64   0.101    -.7139016     .063655
            2  |  -.2616084   .1915875    -1.37   0.172     -.637113    .1138962
               |
        age__0 |  -.0311116   .0313137    -0.99   0.320    -.0924852    .0302621
       m1__emp |   .2515403   .2492729     1.01   0.313    -.2370256    .7401062
       m2__emp |  -.1801458    .261989    -0.69   0.492    -.6936349    .3333432
   m1__marstat |     1.0849   .3453074     3.14   0.002     .4081096     1.76169
   m2__marstat |   1.051389   .2589864     4.06   0.000     .5437854    1.558993
        m__age |    .081758   .0334461     2.44   0.015     .0162049     .147311
         _cons |  -.1005763    .244535    -0.41   0.681    -.5798561    .3787036
---------------+----------------------------------------------------------------
id             |
     var(_cons)|   .3355826   .0634519                      .2316618     .486121
--------------------------------------------------------------------------------

3.2.3 辅助语法

第一xtpdyn 可一键删除或保留新增的变量

 xtpdyn [, keep|drop]

其中,

  • keep 保留变量初始值、个体均值等新增的变量;
  • drop 删除已保留的变量初始值、个体均值等新增的变量;

第二probat 命令可用于显示动态面板 Probit 模型估计后的事件发生概率 (Transition Probabilities) 及其他统计信息。

 probat, {stats[(atspec)]|prdistr} 
         [margins(margins_options) nq(#)
          showfreq plot keep]
  • stats() 选项

    • 记录进入概率 Pr(1|0)、退出概率Pr(0|1)、持续概率 Pr(1|1)、稳态概率 [Pr(1|0)/Pr(1|0)+Pr(0|1)]、稳态持久度 [1/Pr(0|1)] 等统计信息;
    • 输入命令 probat, stats 将提供整个数据的统计结果;
    • 输入命令 probat, stats\left (varname1= n \right ) 将提供变量 varname1 的统计信息;
    • 不能与 prdistr 一起使用;
  • prdistr 选项

    • 计算不同水平 ci 的预期概率 Pr(1|0)Pr(1|1) 等。ci 产生差异的原因在于,具有个体间的 yi0x¯i 和 xi0 数值不同;
    • 通过两个维度区分 ci 的不同水平:第一个维度是被解释变量的初始观测值 yi0;第二个维度是根据 x¯i 和 xi0 的样本分布 (分位数概念)
  • magins 选项: 计算模型的边际效应

  • nq() 选项: 设置计算预期概率时的分位数水平,仅允许 2、3、4、5 和 10 分位数。系统默认为 5 分位数。

  • showfreq 选项:显示不同水平 ci 的样本频数

  • plot 选项:图示不同水平 ci 的预期概率结果

Stata 范例 1:

  • 命令含义是在 3 分位数水平上列示样本分布及 prdistr 的统计结果;
  • 第一张表列示样本分布;
  • 第二张表列示统计结果,以第一行为例:在滞后一期的家庭条件为非贫穷 (L.poor=0),家庭条件最初为非贫穷 (poor0=0),年龄、雇佣方式等联合均值在第一分位数上 (uhq=1) 的情况下,家庭条件由贫穷变为非贫穷的概率是 5.26%。
probat, prdistr nq(3) showfreq 

-> poor__0 = 0
--------------------------------------------------------------------------
          |            3 quantiles of uhi and Household poverty           
poor at   | -------- 1 -------    -------- 2 -------    -------- 3 -------
time t-1  | Not poor      Poor    Not poor      Poor    Not poor      Poor
----------+---------------------------------------------------------------
        0 |    1,595       104       1,077        95       1,131        94
        1 |       97        55          81        89          73        87
--------------------------------------------------------------------------
-> poor__0 = 1
--------------------------------------------------------------------------
          |            3 quantiles of uhi and Household poverty           
poor at   | -------- 1 -------    -------- 2 -------    -------- 3 -------
time t-1  | Not poor      Poor    Not poor      Poor    Not poor      Poor
----------+---------------------------------------------------------------
        0 |       71        21         152        61         115        57
        1 |       53        74         142       351         132       366
--------------------------------------------------------------------------

--------------------------------------------------------------------------------
L.poor#poor__0#uh_q |    Prob.     Std. Err.     P>|z|     Lower CI    Upper CI 
--------------------+-----------------------------------------------------------
              0 0 1 |    0.0526    0.005130       0.000      0.0425      0.0626 
              0 0 2 |    0.0815    0.006289       0.000      0.0692      0.0939 
              0 0 3 |    0.0972    0.008282       0.000      0.0809      0.1134 
              0 1 1 |    0.2935    0.027079       0.000      0.2404      0.3466 
              0 1 2 |    0.4713    0.025980       0.000      0.4203      0.5222 
              0 1 3 |    0.5119    0.028153       0.000      0.4568      0.5671 
              1 0 1 |    0.1221    0.017207       0.000      0.0884      0.1559 
              1 0 2 |    0.1707    0.019060       0.000      0.1334      0.2081 
              1 0 3 |    0.1950    0.021376       0.000      0.1531      0.2369 
              1 1 1 |    0.4743    0.028741       0.000      0.4180      0.5307 
              1 1 2 |    0.6440    0.018173       0.000      0.6083      0.6796 
              1 1 3 |    0.6843    0.018109       0.000      0.6488      0.7198 
--------------------------------------------------------------------------------

Stata 范例 2:

  • 图为例子一命令中增加 plot 后的结果;
  • 可读信息一:在控制不可观测的个体效应的基础上,家庭条件初始贫穷时,本期继续贫穷的概率更大;
  • 可读信息二:在控制不可观测的个体效应的基础上,上一期家庭条件贫穷时,本期继续贫穷的概率更大;

4. 参考文献

  • Grotti, R. and Cutuli, G. Xtpdyn: A community-contributed command for fitting dynamic random-effects probit models with unobserved heterogeneity. The Stata Journal, 2018, 18(4): 844-862. [PDF]
  • Rabe-Hesketh, S. and Skrondal, A. Avoiding biased versions of Wooldridge's simple solution to the initial conditions problem. Economics Letters, 2013, 120: 346-349. [PDF]
  • Skrondal, A. and S. Rabe-Hesketh, S. Handling initial conditions and endogenous covariates in dynamic/transition models for binary data with unobserved heterogeneity. Journal of the Royal Statistical Society, 2014, 63(C): 211–237. [PDF]
  • Wooldridge, J. M. Simple solutions to the initial conditions problem in dynamic, nonlinear panel data models with unobserved heterogeneity. Journal of Applied Econometrics, 2005, 20: 39-54. [PDF]

相关课程

连享会-直播课 上线了!
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