温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者:万源星 (浙江工商大学财务与会计学院)
邮箱:408887469@qq.com
目录
本篇推文介绍动态面板 Porbit 模型 (Dynamic Probit Model) 的背景、模型及 Stata 应用。
动态面板数据的一般形式为:
模型将
然而,Probit、Logit 等非线性模型的被解释变量是二元变量 (Binary) 或取值有限的离散变量 (Dichotomous) ,模型用极大似然法进行估计,一阶差分广义矩估计法和系统广义矩估计法难以适用。由此,本文引入动态面板 Porbit 模型 (Dynamic Probit Model) ,下文重点介绍模型的推导过程和 Stata 应用。
假设研究个体行为 (比如上市公司研发)
其中,
同时,根据 Wooldridge (2005)、Skrondal and Rabe-Hesketh (2014)、Grotti and Cutuli (2018) 的概念及模型,为了消除不可消除的个体效应,
其中,
为便于理解,令
假设
根据逻辑分布的对称性,整理可得:
根据 (5) 和 (6),可以将式 (1) 改写成:
根据逻辑分布的对称性,式 (7) 可简化成:
即
由此,式 (5) 可以写成 :
非线性模型的估计方法是极大似然法。那么,假设我们有一组随机样本,为了得到以解释变量为条件的极大似然估计量,可将动态面板 Probit 模型改写成:
其中,
对数似然函数为:
最大化
其中,
Stata 官方并未提供直接估计动态 Probit 模型的命令。下面,我们先用手动计算的方法估计该模型,进而使用外部命令 xtpdyn
进行估计。前者便于理解模型背后的原理;后者语法简洁,推荐使用。
下文将使用 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 |
旧方法的基本步骤如下:
xtprobit}
、meprobit
命令对动态数据模型进行估计;*******************************************
* 手动估计动态面板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
Grotti and Cutuli (2018, Stata Journal,[PDF]) 详细介绍了 xtpdyn
命令的原理及用法。
在 Stata 命令窗口输入如下命令,即可自动安装 xtpdyn
命令:
ssc install xtpdyn, replace
xtpdyn
可以用简单的命令生成变量的初始值及个体均值,语法如下:
xtpdyn depvar indepvars [if] [in] [weight], uh(varlist) [re(re_options)]
depaver
是被解释变量,即模型 (1) 中的 indepvars
是解释变量,即模型 (1) 中的 uh()
中放入具有动态变化特征的解释变量,即模型 (1) 中的 re()
是指随机效应,如果考虑异方差,可写成 re(vce(robust))
一个例子 :下面的例子中,
xtpdyn
列示了解释变量,以及 poor__0、age__0 等变量初始值,m1__emp、m2__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
--------------------------------------------------------------------------------
第一, xtpdyn
可一键删除或保留新增的变量
xtpdyn [, keep|drop]
其中,
keep
保留变量初始值、个体均值等新增的变量;drop
删除已保留的变量初始值、个体均值等新增的变量;第二,probat
命令可用于显示动态面板 Probit 模型估计后的事件发生概率 (Transition Probabilities) 及其他统计信息。
probat, {stats[(atspec)]|prdistr}
[margins(margins_options) nq(#)
showfreq plot keep]
stats()
选项
probat, stats
将提供整个数据的统计结果;probat, stats\left (varname1= n \right )
将提供变量 varname1 的统计信息;prdistr
一起使用;prdistr
选项
magins
选项: 计算模型的边际效应
nq()
选项: 设置计算预期概率时的分位数水平,仅允许 2、3、4、5 和 10 分位数。系统默认为 5 分位数。
showfreq
选项:显示不同水平
plot
选项:图示不同水平
Stata 范例 1:
prdistr
的统计结果;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
后的结果;
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD