温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者: 黄俊凯(中国人民大学财政金融学院)
E-mail: kopanswer@126.com
目录
「似不相关回归」简称为 SUR (Seemingly Unrelated Regressions),顾名思义,就是对两个或多个表面上看起来没有关系的方程进行联合估计。
比如,我们要研究同一家公司中 100 名员工的个人消费行为是否满足凯恩斯的消费理论 (即「月光族」理论——当期消费仅决定于当期收入),可以分别针对 40 名女性和 60 名男性分别执行 regress C Y
,其中,C
和 Y
分别表示每个月的消费支出和可以支配收入。
女性的消费方程为:
男性的消费方程为:
如果
上例是一个极度简化的 SUR,旨在说明该模型的核心思想。实际应用中,女性组和男性组的消费方程可以有不同的解释变量;我们也可以针对同一个行业中的多个年龄组样本执行 SUR 估计。
方程组有多个被解释变量,按照是否包含内生解释变量可以分为两类:
联立方程模型 (simultaneous equation models)
右端项包含被解释变量
似不相关模型 (seemingly unrelated models)
右端项不包含被解释变量
常见的方程组模型有:
女士们对护肤品、化妆品、鞋帽服装的需求包含不仅都受到传统的变量(如收入、价格、年龄、季节)的影响,也受到一些特异性变量的影响。诸如肤质影响护肤品的选购、出席的场合影响服饰的搭配、彩妆潮流主要影响化妆品需求。此外,还有一些不可观测变量(误差项)也会同时影响女士们对护肤品、化妆品和鞋帽服装的需求。一些女性更看重气质,对护肤品和服饰的要求较高;一些女性更看重个性,需要更多元化的服饰和化妆品。
因此,女性对护肤品、化妆品和鞋帽服饰的需求表面上是各成体系的,但实际上通过不可观测因素联系在一起,导致误差项相关。就不能用逐步 OLS 的方法依次计算需求,而要进行似不相关估计。如果进一步考虑化妆品-护肤品-鞋帽服饰之间的互补性,则化妆品的价格、鞋帽的款式、护肤品的效果等变量也会出现在右端项,此时需要进行联立方程估计。
系统估计的利弊:
我们这里介绍标准的 SUR 模型,它最早由 Zellner (1962) 提出。
考虑一个有
第
第
方程组:
SUR 模型:每个观测值不同方程的误差项相关,但不同观测值的误差项无关的方程组
注:SUR 模型的每个方差都可以单独 OLS 估计,因此被称为"似不相关" (但 OLS 估计不是有效的)
任意一个观测值
任意一个观测值
任意方程
方程组的方差-协方差矩阵
方差-协方差矩阵 (以2个观测值2个方程为例):
由于满足外生性条件
由于不满足同方差假定,所以 OLS 估计不是最优的
已知误差项方差-协方差矩阵的形式,FGLS 估计是最优的一致估计
SUR 估计本质是 FGLS 估计,具体步骤如下:
优势是对于方程组的估计,比逐方程 OLS 更有效。它可以跨方程检验系数是否联合为
劣势在于 Zellner 的 SUR 估计方法仅限于 GLS,既不能使用包括聚类稳健标准误等调整,也不能使用二值选择模型、久期模型、面板数据模型。
因此,Zellner 的 SUR 估计方法可用性很差,但似不相关的思想启发了后来的计量经济学家,他们发展出一系列基于 SUR 模型误差项假设的,可以包容更多模型的似不相关估计方法。
如果你只需要一个最原始的 GLS 版本的 SUR 估计,不需要调整标准误,也不需要其他模型,建议你使用 sureg
命令。
如果你需要在 SUR 估计中调整标准误、使用更广泛的模型,甚至是不同模型设定组成的方程组,建议你使用 suest
命令。由于其灵活性,这也是本文重点介绍的命令。
如果你对误差项有很强的假设,比如需要它服从指数分布、威布尔分布或对数正态分布,并且方程组由一个多值选择模型和一个久期模型组成,建议你使用 sudcd
命令。
如果你使用面板数据随机效应模型,可以 help xtsur
;如果你需要处理非线性方程组,可以 help nlsur
。
最后,如果你不需要似不相关模型,而是需要一个联立方程模型或三阶段最小二乘模型,可以 help reg3
。
本小节涉及的命令, 在文末 扩展命令 小节中可以找到简单介绍。
sureg
实例除了 Stata 的官方指引,本文的例子还结合 Ani Katchova 教授提供的实例和 UCLA 官网的实例,并为三者的结合做了删改。本文使用的数据和代码开放 链接,提取码:gb5k,链接永久有效。
我们想要知道数学和阅读的成绩如何受其他因素影响,构建如下方程组:
其中 math 是数学成绩,read 是阅读成绩,female 是性别的哑变量,program 是教育项目,science 是自然科学成绩,social 是社会科学成绩。
方程 1 的被解释变量是 math,解释变量是 female,program 和 science。
方程 1 的被解释变量是 read,解释变量是 female 和 social。
方程 1 和 2 共同的解释变量是 female。
reg
实现 sureg
根据第1节中的估计方程,我们可以使用 reg
命令实现似不相关估计,代码如下:
use sureg.dta, clear
* 对每个方差单独回归,得到估计的残差
reg $y1 $x1
predict r_math, resid
reg $y2 $x2
predict r_read, resid
* 误差项协方差矩阵的估计
cor r_math r_read, cov
mat s = r(C) // s: pairwise correlation matrix
mat i = I(200) // i: identity matrix of size 200
mat v = s # i // v: kronecker product of s and i
* x 矩阵
mkmat $x1 cons, matrix(x_$y1)
mat x_$y1 = x_$y1, J(200, 3, 0)
mkmat $x2 cons, matrix(x_$y2)
mat x_$y2 = J(200, 4, 0), x_$y2
mat x = x_$y1 \ x_$y2
* y 向量
mkmat $y1, matrix(y_$y1)
mkmat $y2, matrix(y_$y2)
mat y = y_$y1 \ y_$y2
* 系数的估计
mat b = inv(x'*inv(v)*x)*x'*inv(v)*y
mat list b
* 与似不相关估计的比较
sureg ($y1 $x1) ($y2 $x2)
用 OLS 手动估计的结果:
math
female .80477515
educate -.53030003
science .53380017
cons 25.602716
read
female -1.708889
social .54932147
_cons 24.374153
似不相关估计的结果:
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
math |
female | 0.805 1.035 0.78 0.437 -1.224 2.834
educate | -0.530 0.743 -0.71 0.476 -1.987 0.927
science | 0.534 0.052 10.18 0.000 0.431 0.637
_cons | 25.603 3.494 7.33 0.000 18.755 32.450
-------------+----------------------------------------------------------------
read |
female | -1.709 1.132 -1.51 0.131 -3.928 0.511
social | 0.549 0.052 10.57 0.000 0.447 0.651
_cons | 24.374 2.818 8.65 0.000 18.851 29.897
------------------------------------------------------------------------------
我们发现,用 OLS 手动估计的结果与似不相关估计的结果一致。
reg
vs. sureg
我们用 Stata 的 sureg
命令进行 Zellner 的 SUR 估计,该命令的选项 corr
报告各方程误差项的相关系数矩阵,并对误差项之间的独立性执行 布伦斯-帕甘 (Breusch–Pagan) 检验,代码如下:
use "https://stats.idre.ucla.edu/stat/stata/notes/hsb2", clear
* or
use "https://gitee.com/arlionn/data/raw/master/data01/hsb2.dta", clear
* 对方程 1 和 2 单独进行 OLS 估计
reg math female educate science
reg read female social
* 对方程 1 和 2 组成的方程组用 SUR 估计
sureg (math female educate science) (read female social), corr
OLS 估计回归结果如下:
reg math female educate science
Source | SS df MS Number of obs = 200
-------------+---------------------------------- F(3, 196) = 43.81
Model | 7010.50752 3 2336.83584 Prob > F = 0.0000
Residual | 10455.2875 196 53.3433035 R-squared = 0.4014
-------------+---------------------------------- Adj R-squared = 0.3922
Total | 17465.795 199 87.7678141 Root MSE = 7.3037
------------------------------------------------------------------------------
math | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
female | 0.966 1.046 0.92 0.357 -1.097 3.028
educate | -0.413 0.764 -0.54 0.589 -1.919 1.094
science | 0.598 0.054 11.13 0.000 0.492 0.703
_cons | 21.971 3.582 6.13 0.000 14.906 29.035
------------------------------------------------------------------------------
reg read female social
Source | SS df MS Number of obs = 200
-------------+---------------------------------- F(2, 197) = 63.93
Model | 8233.79028 2 4116.89514 Prob > F = 0.0000
Residual | 12685.6297 197 64.3940595 R-squared = 0.3936
-------------+---------------------------------- Adj R-squared = 0.3874
Total | 20919.42 199 105.122714 Root MSE = 8.0246
------------------------------------------------------------------------------
read | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
female | -1.764 1.141 -1.55 0.124 -4.014 0.487
social | 0.598 0.053 11.27 0.000 0.493 0.702
_cons | 21.862 2.874 7.61 0.000 16.195 27.529
------------------------------------------------------------------------------
SUR 估计回归结果如下:
sureg (math female educate science) (read female social), corr
Seemingly unrelated regression
--------------------------------------------------------------------------
Equation Obs Parms RMSE "R-sq" chi2 P
--------------------------------------------------------------------------
math 200 3 7.256297 0.3971 111.11 0.0000
read 200 2 7.981054 0.3910 112.68 0.0000
--------------------------------------------------------------------------
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
math |
female | 0.805 1.035 0.78 0.437 -1.224 2.834
educate | -0.530 0.743 -0.71 0.476 -1.987 0.927
science | 0.534 0.052 10.18 0.000 0.431 0.637
_cons | 25.603 3.494 7.33 0.000 18.755 32.450
-------------+----------------------------------------------------------------
read |
female | -1.709 1.132 -1.51 0.131 -3.928 0.511
social | 0.549 0.052 10.57 0.000 0.447 0.651
_cons | 24.374 2.818 8.65 0.000 18.851 29.897
------------------------------------------------------------------------------
OLS 估计和 SUR 估计的结果总结:
本例中,OLS 估计的结果与 SUR 估计的结果定性一致,差异不大。
布伦斯-帕甘 (Breusch–Pagan) 检验的结果:
Correlation matrix of residuals:
math read
math 1.0000
read 0.1849 1.0000
Breusch-Pagan test of independence: chi2(1) = 6.835, Pr = 0.0089
方程 1 和 2 的误差项存在显著的相关性(chi2 值 6.385,P 值小于 0.01),但相关性并不强(相关系数仅 0.18)。
sureg
的检验与约束方程 1 和 2 中 female 的系数都与 0 无显著差异,我们进一步检验两个方程中变量 female 的系数是否相等,代码如下:
test [math]female = [read]female
检验结果如下:
(1) [math]female - [read]female = 0
chi2(1) = 3.28
Prob > chi2 = 0.0701
系数差异检验的 chi2 值为 3.28,P 值为 0.07,大于 0.05,无法拒绝原假设。因此,我们对方程 1 和 2 施加约束:
constraint 1 [math]female = [read]female
sureg (math female educate science) (read female social), constraints(1)
回归结果如下:
Seemingly unrelated regression
--------------------------------------------------------------------------
Equation Obs Parms RMSE "R-sq" chi2 P
--------------------------------------------------------------------------
math 200 3 7.284186 0.3924 109.08 0.0000
read 200 2 8.013775 0.3860 109.60 0.0000
--------------------------------------------------------------------------
( 1) [math]female - [read]female = 0
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
math |
female | -0.315 0.833 -0.38 0.705 -1.948 1.317
educate | -0.548 0.747 -0.73 0.463 -2.012 0.916
science | 0.525 0.052 10.02 0.000 0.423 0.628
_cons | 26.686 3.454 7.73 0.000 19.917 33.455
-------------+----------------------------------------------------------------
read |
female | -0.315 0.833 -0.38 0.705 -1.948 1.317
social | 0.545 0.052 10.47 0.000 0.443 0.648
_cons | 23.818 2.814 8.46 0.000 18.302 29.334
------------------------------------------------------------------------------
此时方程 1 和 2 中 female 的系数都相等,仍然显著不等于 0。
为获得完整的 sureg
估计后命令的指引,建议你 help sureg postestimation
。
predict
在下面的代码中,我们用 predict
命令分别估计两个方程的被解释变量 math 和 read 的拟合值 math_hat 和 read_hat。
sureg (math female educate science) (read female social)
predict math_hat, equation(math) xb
predict read_hat, equation(read) xb
summarize math math_hat read read_hat
下表展示被解释变量 math 和 read 的拟合值 math_hat 和 read_hat 的描述性统计,可以发现真实值的均值等于拟合值的均值:
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
math | 200 52.645 9.368448 33 75
math_hat | 200 52.645 5.330927 37.89062 64.57363
read | 200 52.23 10.25294 28 76
read_hat | 200 52.23 5.914405 36.94762 63.37598
在下面的代码中,我们进一步估计被解释变量的拟合值 math_hat 和方程 read_hat 之间的差异 my_diff,并与 predict, difference
的结果 diff 进行比较:
generate my_diff = math_hat - read_hat
predict diff, equation(math, read) difference
summarize diff my_diff
下表比较二者的结果:
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
diff | 200 .415 5.731093 -14.12384 21.04231
my_diff | 200 .4150001 5.731094 -14.12384 21.04231
margins
margins
命令用于计算在因子变量的固定值处的一单位变动导致结果变量的边际变动(假设其余变量处于均值或其他取值组合处时)。边际变动可以是系数 dydx
、弹性 eyex
,半弹性 dyex
和 eydx
,还可以是命令 predict
提供的各类拟合值,你也可以通过 expression
选项制定个性化的边际变动表达式。但在 sureg
中,margins
仅提供全部方程的线性预测(默认)、单个方程的线性预测(选项 xb
)和指定两个方程的线性预测之间的差(选项 difference
)。因此实际上在 sureg
的前提下,margins
只报告线性预测及其差值,不报告系数、弹性或半弹性。下面的代码是一个简单的示例:
* margins
sureg (math i.female educate science) (read i.female social)
margins female
margins female, predict(equation(math))
margins female, predict(equation(read))
margins female, predict(equation(math, read) difference)
代码运行的结果如下:
. margins female
Predictive margins Number of obs = 200
1._predict : Linear prediction, predict(xb equation(math))
2._predict : Linear prediction, predict(xb equation(read))
---------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
----------------+----------------------------------------------------------------
_predict#female |
1 0 | 52.206 0.761 68.57 0.000 50.714 53.699
1 1 | 53.011 0.695 76.26 0.000 51.649 54.374
2 0 | 53.161 0.835 63.63 0.000 51.524 54.799
2 1 | 51.452 0.763 67.41 0.000 49.956 52.948
---------------------------------------------------------------------------------
. margins female, predict(equation(math))
Predictive margins Number of obs = 200
Expression : Linear prediction, predict(equation(math))
------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
female |
0 | 52.206 0.761 68.57 0.000 50.714 53.699
1 | 53.011 0.695 76.26 0.000 51.649 54.374
------------------------------------------------------------------------------
. margins female, predict(equation(read))
Predictive margins Number of obs = 200
Expression : Linear prediction, predict(equation(read))
------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
female |
0 | 53.161 0.835 63.63 0.000 51.524 54.799
1 | 51.452 0.763 67.41 0.000 49.956 52.948
------------------------------------------------------------------------------
. margins female, predict(equation(math, read) difference)
Predictive margins Number of obs = 200
Expression : Fitted diff.: math - read, predict(equation(math, read) difference)
------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
female |
0 | -0.955 1.022 -0.93 0.350 -2.958 1.048
1 | 1.559 0.933 1.67 0.095 -0.270 3.388
------------------------------------------------------------------------------
可以清楚地看到四张表之间存在的关系,第一张表实际上是第二张表和第三张表合并后的结果,而第四张表中 female 等于
sureg
的语法基础语法
sureg (depvar1 varlist1) (depvar2 varlist2) ... (depvarN varlistN)
[if] [in] [weight] [, options]
进阶语法
sureg ([eqname1:] depvar1a [depvar1b ... =] varlist1 [, noconstant])
([eqname2:] depvar2a [depvar2b ... =] varlist2 [, noconstant])
...
([eqnameN:] depvarNa [depvarNb ... =] varlistN [, noconstant])
[if] [in] [weight] [, options]
特别说明:当被解释变量 depvar 有多个时,不能指定方程名 eqname
一些重要的参数和选项:
* 参数
eqname 方程
depvar 被解释变量
varlist 控制变量
* 约束
constraints(constraints) 应用指定的线性约束
* 自由度的调整
small 报告小样本统计量
dfk 使用小样本调整方法
dfk2 使用替代的调整方法
* 最优化选项
isure 迭代直到收敛
iterate(#) 指定最大的迭代次数
nolog 抑制迭代过程的输出
tolerance(#) 指定数值收敛条件
此外,sureg
还可以与 bootstrap
, by
, fp
, jackknife
, rolling
, and statsby
等前缀连用。
* Seemingly Unrelated Regressions (SUR) in Stata
* References
* - Ani Katchova (2013)
* - http://statistics.ats.ucla.edu/stat/stata/code/sureg.htm
clear all
set more off
set cformat %4.3f
set pformat %4.3f
set sformat %4.2f
use sureg.dta, clear
global y1 math
global y2 read
global x1 female educate science
global x2 female social
********************************************************************************
* fitting a sureg manually
********************************************************************************
* one-by-one regression to estimate residuals
reg $y1 $x1
predict r_math, resid
reg $y2 $x2
predict r_read, resid
* estimator of covariance matrix
cor r_math r_read, cov
mat s = r(C) // s: pairwise correlation matrix
mat i = I(200) // i: identity matrix of size 200
mat v = s # i // v: kronecker product of s and i
* x matrix
mkmat $x1 cons, matrix(x_$y1)
mat x_$y1 = x_$y1, J(200, 3, 0)
mkmat $x2 cons, matrix(x_$y2)
mat x_$y2 = J(200, 4, 0), x_$y2
mat x = x_$y1 \ x_$y2
* y matrix
mkmat $y1, matrix(y_$y1)
mkmat $y2, matrix(y_$y2)
mat y = y_$y1 \ y_$y2
* beta estimator
mat b = inv(x'*inv(v)*x)*x'*inv(v)*y
mat list b
* compared with SUR model
sureg ($y1 $x1) ($y2 $x2)
********************************************************************************
* OLS vs. SUR (reg vs. sureg)
********************************************************************************
describe $y1 $y2 $x1 $x2
summarize $y1 $y2 $x1 $x2
* OLS regressions
reg $y1 $x1
reg $y2 $x2
* SUR model
sureg ($y1 $x1) ($y2 $x2), corr
* Testing of cross-equation constraints
test [$y1]female = [$y2]female
* SUR model with cross-equation constraint
constraint 1 [$y1]$x1 = [$y2]$x1
sureg ($y1 $x1) ($y2 $x2), constraints(1)
********************************************************************************
* sureg postestimation
********************************************************************************
* predict, xb
sureg ($y1 $x1) ($y2 $x2)
predict math_hat, equation(math) xb
predict read_hat, equation(read) xb
summarize math math_hat read read_hat
* predict, difference
generate my_diff = math_hat - read_hat
predict diff, equation(math, read) difference
summarize diff my_diff
* margins
sureg ($y1 i.female educate science) ($y2 i.female social)
margins female
margins female, predict(equation(math))
margins female, predict(equation(read))
margins female, predict(equation(math, read) difference)
本文围绕 sureg
命令展开,但该命令只能用于 OLS 估计,甚至不能进行聚类稳健标准误调整。在下一篇推文中,我们将介绍一个扩展性极强的命令 suest
及其应用。
nlsur
命令用可行广义非线性最小二乘法(FGNLS)拟合非线性方程组。该命令提供了灵活的语法,你甚至可以用该命令快速编写函数计算器程序。xtsur
命令对似不相关的非平衡面板数据集进行单向随机效应估计。最早由 Biorn (2004) 提出。bireprob
命令拟合一个二值随机效应 Probit 模型,该模型考虑了随机效应误差项和异质性冲击的相关性,并最大化模拟的似然估计。该命令在使用前需要将数据声明为面板数据 xtset
,并要求安装 mdraws
命令。linksudcd
命令用于联合估计一个离散选择模型和一个久期(生存)模型。其基本原理类似于 SUR 模型,但允许使用者估计服从指数分布、威布尔分布或对数正态分布的似不相关离散选择-久期方程组。使用该命令时,你需要引用 Boehmke 2006。rifsureg
命令用再中心化影响函数的估计方法执行似不相关的分位数回归,这是一种重要的无条件分位数回归模型。reg3
是三阶段最小二乘法 3SLS 的命令。3SLS 最早由 Zellner and Theil (1992) 提出,是联立方程的完全信息估计方法,虽然有偏但比 2SLS 更有效。reg3
的功能十分广泛,除了支持 3SLS,还提供支持似不相关估计的选项 sure
、多元回归mvreg
、支持逐方程 OLS 的选项 ols
和支持 2SLS 的选项 2sls
,使用者可以方便的比较不同方法的异同。估计后命令可以参考 help reg3 postestimation
。
致敬: Arnold Zellner 教授 (1927-2010) 对计量经济学的三大贡献:似不相关估计、三阶段最小二乘估计和贝叶斯计量经济学。
连享会-直播课 上线了!
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