???? 连享会主页:lianxh.cn
连享会 · 名师讲坛
???? 空间计量 专题
⌚ 2020.12.10-13???? 主讲:杨海生 (中山大学);范巧 (兰州大学)
???? 课程主页:https://gitee.com/arlionn/SP
连享会 · 计量专题
???? 因果推断-内生性 专题
⌚ 2020.11.12-15
???? 主讲: 王存同 (中央财经大学);司继春(上海对外经贸大学)
???? 课程主页:https://gitee.com/arlionn/YG
作者: 黄俊凯 (中国人民大学财政金融学院 )
邮箱: kopanswer@126.com
目录
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
在上一篇推文「SUR:似无相关估计是个啥东东?」 (微信版) 中,我们介绍了 SUR 模型的基本思想、估计方法和一些典型的应用。本文进一步介绍 SUR 模型的两个进阶用法:一是模型之间系数差异的检验;二是广义 Hausman 检验。
sureg
命令的模型设定仅限于 GLS,无法进行标准误的调整,也无法使用其他常见的模型。本文我们介绍 suest
命令,它基于 “得分” 计算出系数的方差-协方差矩阵,因此并不局限于线性回归,也不局限于球形扰动项的严格前提。suest
命令默认 (对模型错误设定) 稳健的标准误,使用者也可以通过 vce(cluster clustervar)
指定 (允许组内相关的) 聚类稳健标准误。
suest
命令只能支持那些可以计算得分 (predict newvar, score
) 的回归,包括但不限于 logit
、probit
、heckman
、poisson
、zip
等基于极大似然估计的回归。但随后版本的 Stata 的 regress
命令也支持计算得分 (实际上是残差),因此现在的 suest
也支持线性回归。
通常,在相同的数据 (或有重叠的数据集) 上估计不同模型时,估计量会相关。此时,若要检验一个估计量之间的假设
考虑一个有
对任意系数
极大似然估计量
根据 White (1994),在合适的正则条件 (suitable regularity conditions) 下,
其中
Weesie (1999) 将得分 “堆栈” (stack) 的估计方程表示为:
在合适的正则条件下,
显然,
从而得到
其中,对角元
而 “堆栈” 的好处就在于,我们还能方便的得到非对角元
该表达式也是 Rogers (1993) 提出的聚类修正的三明治估计量的一个应用。我们考虑这样一个简单的情形:数据集中前一半的观测值用 logit 模型,后一半用 OLS 模型,并且前一半和后一半之间存在一对一的聚类。如果两个模型之间没有共同的参数,“堆栈” 模型的得分在它不属于的那一半中等于
suest
的假设检验在估计出
因此可以方便的为
统计量
豪斯曼检验常被用于判断估计量的一致性和有效性。豪斯曼 (1978) 证明了当
所以有:
而由于
logit 模型和 probit 模型的系数有可比性吗?我们用 suest
命令来一探究竟。
sysuse auto, clear
qui logit foreign price rep78
est sto m1
qui probit foreign price rep78
est sto m2
suest m1 m2
estat vce, corr
通过 estat vce, corr
命令,我们可以查看估计量的相关系数矩阵。
Correlation matrix of coefficients of suest model
| m1_for~n | m2_for~n
e(V) | price rep78 _cons | price rep78 _cons
-------------+------------------------------+------------------------------
m1_foreign | |
price | 1.0000 |
rep78 | 0.0660 1.0000 |
_cons | -0.4275 -0.9164 1.0000 |
-------------+------------------------------+------------------------------
m2_foreign | |
price | 0.9957 0.0710 -0.4223 | 1.0000
rep78 | 0.0543 0.9996 -0.9090 | 0.0607 1.0000
_cons | -0.4371 -0.9151 0.9990 | -0.4357 -0.9084 1.0000
接下来,我们检验 logit 模型和 probit 模型的系数是否相等。
test [m1_foreign]price = [m2_foreign]price, notest
test [m1_foreign]rep78 = [m2_foreign]rep78, acc
(1) [m1_foreign]price - [m2_foreign]price = 0
(2) [m1_foreign]rep78 - [m2_foreign]rep78 = 0
chi2(2) = 13.07
Prob > chi2 = 0.0015
可以看出,
然而,logit 模型和 probit 模型是基于不同的量纲,标准逻辑分布的标准差为
非线性的 Wald 检验对模型设定相当敏感,我们也可以构造一个更加 “线性化” 的原假设:
我们用 testnl
命令执行非线性 Wald 检验。
testnl [m1_foreign]price/[m1_foreign]rep78 = [m2_foreign]price/[m2_foreign]rep78
chi2(1) = 0.85
Prob > chi2 = 0.3567
testnl [m1_foreign]price*[m2_foreign]rep78 = [m2_foreign]price*[m1_foreign]rep78
chi2(1) = 0.83
Prob > chi2 = 0.3630
此时,
事实上,suest
用于系数差异检验在「Stata: 如何检验分组回归后的组间系数差异?」 (知乎版) 一文已经介绍过。
eststo clear
sysuse auto, clear
reg price rep78 headroom trunk weight length if foreign == 0
est sto m1
reg price rep78 headroom trunk weight length if foreign == 1
est sto m2
suest m1 m2
test [m1_mean = m2_mean]
test [m1_mean = m2_mean], constant
test [m1_mean]rep78 = [m2_mean]rep78
test [m1_mean]length = [m2_mean]length
上面的代码表明,我们既可以用 test [m1_mean = m2_mean]
检验两组的全部系数是否相等。检验结果如下,两组系数在
(1) [m1_mean]rep78 - [m2_mean]rep78 = 0
(2) [m1_mean]headroom - [m2_mean]headroom = 0
(3) [m1_mean]trunk - [m2_mean]trunk = 0
(4) [m1_mean]weight - [m2_mean]weight = 0
(5) [m1_mean]length - [m2_mean]length = 0
chi2(5) = 13.15
Prob > chi2 = 0.0220
如果还要求包括常数项,你还可以加入 constant
选项,此时命令变成 test [m1_mean = m2_mean], constant
,检验结果如下,在加入常数项后两组系数的差异更加显著,
(1) [m1_mean]rep78 - [m2_mean]rep78 = 0
(2) [m1_mean]headroom - [m2_mean]headroom = 0
(3) [m1_mean]trunk - [m2_mean]trunk = 0
(4) [m1_mean]weight - [m2_mean]weight = 0
(5) [m1_mean]length - [m2_mean]length = 0
(6) [m1_mean]_cons - [m2_mean]_cons = 0
chi2(6) = 61.00
Prob > chi2 = 0.0000
suest
也支持单变量比较,以变量 rep78 为例,使用的命令为 test [m1_mean]rep78 = [m2_mean]rep78
,下方的结果表明,
(1) [m1_mean]rep78 - [m2_mean]rep78 = 0
chi2( 1) = 1.70
Prob > chi2 = 0.1929
直播回放:实证研究设计 (2.4小时, 88元)
???? https://lianxh.duanshu.com
suest
是一个估计后命令,suest
命令后既可以使用 test
、testnl
、lincom
、nlcom
等命令进行假设检验,也可以进行聚类稳健的标准误调整或调查设计效果。suest
适用于不同模型组成的方程组,比如 OLS 模型和 probit 模型组成的方程组。suest
也适用于由对不同样本的估计组成的方程组,比如有交集的数据或无交集的数据。suest
还可以与 vce(robust)
和 vce(cluster clustvar)
选项连用。此外,尽管是估计后命令,suest
的结果还可以用 eststo
命令保存。
在下面这个例子中,我们将借助「Stata-多元 Logit 模型详解 (mlogit)」 (知乎版) 所需的无关方案独立性检验 (Independence of Irrelevant Alternatives, IIA) 比较豪斯曼检验和广义豪斯曼检验。在该例中,被解释变量 insurance 是一个分类变量 (categorical variable ):等于
eststo clear
*数据下载地址:https://gitee.com/arlionn/data/blob/master/data01/sysdsn4.dta
use sysdsn4.dta, clear
tab insure
insure | Freq. Percent Cum.
------------+---------------------------
Indemnity | 294 47.73 47.73
Prepaid | 277 44.97 92.69
Uninsure | 45 7.31 100.00
------------+---------------------------
Total | 616 100.00
在无关方案独立性 (IIA) 假设下,当我们从方案集合 (Alternatives) 中剔除某个方案时,回归系数不发生系统性的改变。因此,我们分别对全样本、排除 uninsure 方案的子样本和排除 prepaid 方案的子样本进行多项 logit 回归,用 est sto
命令保存,并用 est tab
命令展示三个样本的回归结果。
qui mlogit insure age male
est sto m1, title(all three insurance forms)
qui mlogit insure age male if insure != "Uninsure":insure
est sto m2, title(insure != "Uninsure":insure)
qui mlogit insure age male if insure != "Prepaid":insure
est sto m3, title(insure != "Prepaid":insure)
est tab m1 m2 m3, b(%8.3f) star stats(N ll) keep(Prepaid: Uninsure:)
--------------------------------------------------------
Variable | m1 m2 m3
-------------+------------------------------------------
Prepaid |
age | -0.010 -0.010
male | 0.510** 0.514**
_cons | 0.263 0.268
-------------+------------------------------------------
Uninsure |
age | -0.005 -0.004
male | 0.475 0.459
_cons | -1.757*** -1.802***
-------------+------------------------------------------
Statistics |
N | 615 570 338
ll | -551.328 -390.486 -131.768
--------------------------------------------------------
legend: * p<0.05; ** p<0.01; *** p<0.001
获得回归结果后,我们可以进行豪斯曼检验:
hausman m2 m1, alleqs constant
hausman m3 m1, alleqs constant
全样本与排除 uninsure 方案的子样本之间的豪斯曼检验结果如下表所示,可以看出模型 m1 和 m2 的系数 (包括常数项的系数) 无差异 (
---- Coefficients ----
| (b) (B) (b-B) sqrt(diag(V_b-V_B))
| m2 m1 Difference S.E.
-------+------------------------------------------------------------
age | -.0101521 -.0100251 -.0001269 .
male | .5144003 .5095747 .0048256 .0123338
_cons | .2678043 .2633838 .0044205 .
--------------------------------------------------------------------
b = consistent under Ho and Ha; obtained from mlogit
B = inconsistent under Ha, efficient under Ho; obtained from mlogit
Test: Ho: difference in coefficients not systematic
chi2(3) = (b-B)'[(V_b-V_B)^(-1)](b-B)
= 0.08
Prob>chi2 = 0.9944
(V_b-V_B is not positive definite)
全样本与排除 prepaid 方案的子样本之间的豪斯曼检验结果如下表所示,可以看出,模型 m1 和 m3 的系数也无差异,但
---- Coefficients ----
| (b) (B) (b-B) sqrt(diag(V_b-V_B))
| m3 m1 Difference S.E.
-------+-----------------------------------------------------------
age | -.0041055 -.0051925 .001087 .0021355
male | .4591074 .4748547 -.0157473 .
_cons | -1.801774 -1.756843 -.0449311 .1333421
-------------------------------------------------------------------
b = consistent under Ho and Ha; obtained from mlogit
B = inconsistent under Ha, efficient under Ho; obtained from mlogit
Test: Ho: difference in coefficients not systematic
chi2(3) = (b-B)'[(V_b-V_B)^(-1)](b-B)
= -0.18 chi2<0 ==> model fitted on these
data fails to meet the asymptotic
assumptions of the Hausman test;
see suest for a generalized test
接下来,我们首先用 suest
储存三个模型的回归结果,并分别用 test
命令对 m1 和 m2、m1 和 m3、以及 m1 m2 和 m3 的系数进行广义豪斯曼检验。可以看出,全部
suest m1 m2, noomitted
test [m1_Prepaid = m2_Prepaid], cons
chi2(3) = 0.89
Prob > chi2 = 0.8266
suest m1 m3, noomitted
test [m1_Uninsure = m3_Uninsure], cons
chi2(3) = 1.49
Prob > chi2 = 0.6845
suest m1 m2 m3, noomitted
test [m1_Prepaid = m2_Prepaid], cons notest
test [m1_Uninsure = m3_Uninsure], cons acc
chi2(6) = 1.95
Prob > chi2 = 0.9240
如果观测值是聚类在城市层面的 (cityid),经典的「McFadden-Hausman」 检验不再合适,因为没有一个估计量是有效的。但我们可以通过选项 vce(cluster cityid)
来轻松地校正豪斯曼统计需要的统计量,具体如下:
suest m1 m2, vce(cluster cityid) noomitted
test [m1_Prepaid = m2_Prepaid], cons
(1) [m1_Prepaid]age - [m2_Prepaid]age = 0
(2) [m1_Prepaid]male - [m2_Prepaid]male = 0
(3) [m1_Prepaid]_cons - [m2_Prepaid]_cons = 0
chi2(3) = 0.79
Prob > chi2 = 0.8529
统计结果再次表明,我们的模型满足 IIA 假定。
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
其他似不相关估计的扩展命令
nlsur
命令用可行广义非线性最小二乘法 (FGNLS) 拟合非线性方程组。该命令提供了灵活的语法,甚至可以用该命令快速编写函数计算器程序。xtsur
命令对似不相关的非平衡面板数据集进行单向随机效应估计,最早由 Biorn (2004) 提出。bireprob
命令拟合一个二值随机效应 Probit 模型,该模型考虑了随机效应误差项和异质性冲击的相关性,并最大化模拟的似然估计。该命令在使用前需要将数据声明为面板数据 xtset
,并要求安装 mdraws
命令。sudcd
命令用于联合估计一个离散选择模型和一个久期 (生存) 模型。其基本原理类似于 SUR 模型,但允许使用者估计服从指数分布、威布尔分布或对数正态分布的似不相关离散选择-久期方程组。rifsureg
命令用再中心化影响函数的估计方法执行似不相关的分位数回归,这是一种重要的无条件分位数回归模型。联立方程的扩展命令
reg3
是三阶段最小二乘法 3SLS 的命令。3SLS 最早由 Zellner and Theil (1992) 提出,是联立方程的完全信息估计方法,虽然有偏但比 2SLS 更有效。reg3
的功能十分广泛,除了支持 3SLS,还提供支持似不相关估计的选项 sure
、多元回归mvreg
、支持逐方程 OLS 的选项 ols
和支持 2SLS 的选项 2sls
,使用者可以方便的比较不同方法的异同。估计后命令可以参考 help reg3 postestimation
。
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
???? 因果推断-内生性 专题 ⌚ 2020.11.12-15
???? 主讲: 王存同 (中央财经大学);司继春(上海对外经贸大学)
???? 课程主页:https://gitee.com/arlionn/YG
???? 空间计量 专题 ⌚ 2020.12.10-13
???? 主讲:杨海生 (中山大学);范巧 (兰州大学)
???? 课程主页:https://gitee.com/arlionn/SP
???? ???? ???? ????
连享会主页: ???? www.lianxh.cn
直播视频: lianxh.duanshu.com
免费公开课:
直击面板数据模型:https://gitee.com/arlionn/PanelData - 连玉君,时长:1小时40分钟 Stata 33 讲:https://gitee.com/arlionn/stata101 - 连玉君, 每讲 15 分钟. 部分直播课课程资料下载 ???? https://gitee.com/arlionn/Live (PPT,dofiles等)
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
关于我们
???? 连享会小程序:扫一扫,看推文,看视频……
???? 扫码加入连享会微信群,提问交流更方便
???? 连享会学习群-常见问题解答汇总:
???? https://gitee.com/arlionn/WD