连享会:动态 Probit 模型及 Stata 实现

2019-07-28  本文已影响0人  stata连享会

作者:万源星 (浙江工商大学财务与会计学院)
邮箱:408887469@qq.com
Stata 连享会: 知乎 | 简书 | 码云 | CSDN

点击查看完整推文列表

Stata连享会   计量专题 || 精品课程 || 简书推文 || 公众号合集

2020寒假Stata现场班 (北京, 1月8-17日,连玉君-江艇主讲),「+助教招聘」

2020寒假Stata现场班

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

1. 背景简介

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

y_{it} = \alpha_{i} + \phi y_{it-1} + \beta x_{it} + \varepsilon_{it}

模型将 y_{it-1} (可以推广到多阶滞后项) 作为解释变量,体现了被解释变量动态变化特征的模型。然而,y_{it-1} 与随机干扰项 \varepsilon_{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 模型设定

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

y_{it}^{*} = c_{i} + \beta y_{it-1} + \rho x_{it} + \gamma z_{it} + \varepsilon_{it} \tag{1}

其中,y_{it}^{*}y_{it} 的关系为:y_{it}^{*} 大于临界值 0 时,y_{it}=1,小于等于 0 时,y_{it}=0c_{i} 是不可观测的个体效应;x_{it}z_{it} 为解释变量,前者随时间变化而发生改变,后者则不具备动态变化特征;\varepsilon_{it} 是随机干扰项,这里假设 x_{it}z_{it}\varepsilon_{it} 不相关,即严格外生性。

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

c_{it} = \alpha_{0} + \alpha_{1} y_{i0} + \alpha_{2} \overline{x}_{i} + \alpha_{3} x_{i0} + a_{i} \tag{2}

其中,y_{i0}x_{i0} 是具有动态变化特征变量的初始观测值;\overline{x}_{i} 是个体从时间维度上取均值,即 \overline{x}_{i} = 1/T \sum_{i=0}^{T} x_{it}a_{i} 是随机干扰项,服从正态分布。

2.2 模型估计

为便于理解,令 \delta w_{it}^{*} = c_{i} + \beta y_{it-1} + \rho x_{it} + \gamma z_{it},则式 (1) 可改写成:

y_{it}^{*} = \delta w_{it}^{*} + \varepsilon_{it} \tag{4}

假设 F \left (\cdot \right)\varepsilon_{it} 的连续单调递增的概率密度分布函数,即 1< F \left (\cdot \right )< 0,则有:

\begin{aligned} P\left ( y_{it} = 1 \right ) &= P\left ( y_{it}^{*} > 0 \right ) \\ &= P\left ( \varepsilon_{it} > - \delta w_{it}^{*} \right) \\ &=1- P\left ( \varepsilon_{it} \leq - \delta w_{it}^{*} \right) \\ &= 1 - F\left ( -\delta w_{it}^{*} \right) \end{aligned}

根据逻辑分布的对称性,整理可得:
P\left ( y_{it} = 1 \right ) = F\left ( \delta w_{it}^{*} \right) \tag{5}

P\left ( y_{it} = 0 \right ) = 1 - F\left ( \delta w_{it}^{*} \right) \tag{6}

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

y_{it}=E \left ( y_{it} \right ) + \varepsilon_{it} = p_{it} +\varepsilon_{it} = 1 - F\left ( -\delta w_{it}^{*} \right) + \varepsilon_{it} \tag{7}

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

y_{it} = F\left ( \delta w_{it}^{*} \right) + \varepsilon_{it} \tag{8}

y_{it} 关于它的条件均值的一个回归。如果将 F \left (\cdot \right ) 设定为标准正态分布函数 \Phi \left (\cdot \right ),即:

F \left (z \right )=\Phi \left (z \right ) = \int_{ - \infty }^{ z } {\frac{1}{\sqrt{2\pi }} e^{-\frac{t^{2}}{2}}} dt \tag{9}

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

P\left ( y_{it} = 1 \right )=F\left ( \delta w_{it}^{*} \right)= \Phi \left (\delta w_{it}^{*} \right ) \tag{10}

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

P\left ( y_{it} \right )=\left [ F\left ( \delta w_{it}^{*} \right) \right ]^{y_{it}} \left [ 1- F\left ( \delta w_{it}^{*} \right) \right ]^{1-y_{it}} ,y=0,1 \tag{11}

其中,i=1,2....N,t=1, 2....T。显然,当 y_{it}=1 时,P\left ( y_{it} = 1 \right )=F\left (\delta w_{it}^{*} \right);当 y_{it}=0 时,P\left ( y_{it} = 0 \right )= 1- F\left ( \delta w_{it}^{*} \right)。因此,根据式 (11) 可获得似然函数:

L=\prod_{i=1}^{N}\prod_{t=1}^{T}\left [F\left (\delta w_{it}^{*} \right) \right ]^{y_{it}} \left [ 1- F\left (\delta w_{it}^{*} \right) \right ]^{1-y_{it}} \tag{12}

对数似然函数为:

lnL=\sum_{i=1}^{N} \sum_{t=1}^{T} \left \{ y_{it} \cdot ln\left [ F\left (\delta w_{it}^{*} \right ) \right ]+ (1 - y_{it}) \cdot ln[1-F\left ( \delta w_{it}^{*} \right )]\right \} \tag{13}

最大化 lnL 的一阶条件为 {\partial lnL}/{\partial \delta}=0,即:

\frac{\partial lnL}{\partial \delta}=\sum_{i=1}^{N} \sum_{t=1}^{T}\left [ \delta w_{it}^{*} \cdot f\left (\delta w_{it}^{*} \right ) \cdot \frac{y_{it}-F\left ( \delta w_{it}^{*} \right )}{F\left (1- w_{it}^{*} \right )\cdot F\left (\delta w_{it}^{*} \right )}\right ]=0 \tag{14}

其中,F^{'}\left (\delta w_{it}^{*} \right )=f\left (\delta w_{it}^{*} \right )。由于式 (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 旧方法 (手动处理)

旧方法的基本步骤如下:

******************************************* 
*      手动估计动态面板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)]

一个例子 :下面的例子中,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]

其中,

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

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

Stata 范例 1:

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:

4. 参考文献

关于我们

点击此处-查看完整推文列表
欢迎加入Stata连享会(公众号: StataChina)

")

上一篇 下一篇

猜你喜欢

热点阅读