温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者:胡雨霄 (伦敦政治经济学院)
目录
本文介绍重要性分析 (Dominance Analysis) 及其 Stata 命令实现 domin
。
相关推文:如何比较解释变量的系数相对大小?
在实证经济学中,一个重要的问题是探究不同的解释变量 (explanatory variable) 对被解释变量 (dependent variable) 的方差的具体贡献程度。
例如,在 叶德珠,黄有光,连玉君 (2014) 的论文中,三位作者试图高清楚哪些文化因素对幸福感的影响更大 (Ye D, Ng Y K, Lian Y. Culture and Happiness[J]. Social Indicators Research, 2015, 123(2):519-547. [PDF])。显然,各个系数大小是不能被用来直接比较的;对系数进行标准化似乎可行,但却不知道他们的相对重要性。
此外,文献中比较普遍的方法为逐步回归法 (stepwise regression),即在回归中逐步引入解释变量, 以及显著性测试 (significance test)。然而,逐步回归方法中,引入解释变量的顺序是非常主观的。显著性测试也并不总是可以将不同的解释变量按其重要程度排序。基于此,Isareli (2006) 在前人的基础上 (主要是 (Shorrocks, 1999) 以及 (Fields, 2003))提出了重要性分析 (Dominance Analysis) 的方法。该方法旨在确定线性回归中,不同解释变量对决定系数
假设线性回归为
被解释变量
其中,
拟合优度
因为
根据 Fields(2003),被解释变量
由此可以得到不同解释变量的相对贡献程度
事实上,上式与 [3] 式本质相同。但根据 [5] 式,不同解释变量可按照重要程度排序。然而,Fields(2003) 未考虑到不同解释变量之间的相互关系。也就是说,某一变量的系数会与回归中其他的解释变量有关。
与之相反,Shapley(1999) 认为解释变量的贡献应当等同于其对
其中,
此处,产生一个问题。变量 k 被剔除回归的顺序不同,那么对拟合优度
ssc install domin, replace
该命令的基本语法如下
domin depvar indepvars [if] [in] [weight], sets((varlist) (varlist) ...)
其中,
sets((x1 x2)(x3 x4))
表示会创建 2 个变量集合 (set)。其中 set1 由变量 x1 和变量 x2 创立,而 set2 则由变量 x3 和变量 x4 创立。该命令通常由于进行分组分析。在研究中,通常只会使用到基本命令。但本文也将介绍该命令的进阶语法。
domin depvar [indepvars [if] [in] [weight] , fitstat(scalar)
sets((varlist)(varlist) ...) noconditional nocomplete epsilon ]
其中,
returned
, ereturned
, 或者其他 scalar
。若无特别设定,Stata 则默认为 fitstat(e(r2))。
我们使用 Stata 自带的范例数据 auto.dta 来演示 domin
的基本用法:
通过 reg
命令进行回归后,可以发现解释变量 weight 和解释变量 length 都与被解释变量 price 显著相关。
. sysuse "auto.dta", clear
. reg price weight length
Source | SS df MS Number of obs = 74
---------+-------------------------------- F(1, 72) = 29.42
Model | 184233937 1 184233937 Prob > F = 0.0000
Residual | 450831459 72 6261548.04 R-squared = 0.2901
---------+-------------------------------- Adj R-squared = 0.2802
Total | 635065396 73 8699525.97 Root MSE = 2502.3
------------------------------------------------------------------------
price | Coef. Std. Err. t P>|t| [95% Conf. Interval]
---------+--------------------------------------------------------------
weight | 2.044 0.377 5.42 0.000 1.293 2.795
_cons | -6.707 1174.430 -0.01 0.995 -2347.890 2334.475
------------------------------------------------------------------------
运行 domin
命令后,结果如下所示。
reg
命令后的 R-squared 数值相同。这是因为 domin
命令默认的拟合优度统计量即为 R-squared.. domin price weight length
Total of 3 regressions
General dominance statistics: Linear regression
Number of obs = 74
Overall Fit Statistic = 0.3476
| Dominance Standardized Ranking
price | Stat. Domin. Stat.
------------+-----------------------------------------------
weight | 0.2256 0.6491 1
length | 0.1220 0.3509 2
------------------------------------------------------------
变量 weight 的贡献度为 0.2256,也可以解释为该变量对拟合优度
变量 length 的贡献度为 0.1220,也可以解释为该变量对拟合优度
在该线性回归中,变量 weight 相对于变量 length 更加重要,对被解释变量 price 的方差的变化的解释力度更强。
接下来,我们利用 Stata 来验证 Dominance Stat. 是如何得出的,同时将上述的数学公式进行运用。
在这个实证的例子中,我们只引入了两个解释变量。线性回归方程可表示为
代入 (6) 式,可得
其中,
reg y x1 x2
得到的 reg y x2
得到的 reg y x1
得到的 . rename (price weight length) (y x1 x2) // 为了与数学公式一致
.
. /*第一种剔除方法*/
.
. **回归1:完整回归
. qui reg y x1 x2
.
. local R2_all = e(r2) //记录完整回归的R-squared
.
. **回归2:剔除变量x1
. qui reg y x2
. local R2_x2 = e(r2) //记录回归2的R-squared
.
. **第一种剔除方法得到的边际贡献
. local R2_m1_x1 = `R2_all'-`R2_x2'
.
. /*第二种剔除方法*/
.
. **回归1b:不包含x2的回归
. qui reg y x1 //回归1b
.
. local R2_x1 = e(r2) //记录回归1b的R-squared
.
. **回归1b:不包含x2和x1的回归
. qui reg y //回归2b
.
. local R2_0 = e(r2) //记录回归2b的R-squared
.
. **第二种剔除方法得到的边际贡献
. local R2_m2_x1 = `R2_x1'-`R2_0'
.
. /*Dominance Stat.*/
.
. **[7]式
. local R2_x1_Sharp = (`R2_m1_x1'+`R2_m2_x1')/2
. dis "Shapley value of weight = " in g %6.4f `R2_x1_Sharp'
Shapley value of weight = 0.2256
这里使用 Stata 自带数据 nlsw88.dta 进行演示,该文件包含 2246 个妇女的工资和个人特征资料。
sysuse "nlsw88.dta", clear
数据结构如下
. list wage age hours tenure married in 1/10
+---------------------------------------------+
| wage age hours tenure married |
|---------------------------------------------|
1. | 11.73913 37 48 5.333333 single |
2. | 6.400963 37 40 5.25 single |
3. | 5.016723 42 40 1.25 single |
4. | 9.033813 43 42 1.75 married |
5. | 8.083731 42 48 17.75 married |
|---------------------------------------------|
6. | 4.62963 39 30 2.25 married |
7. | 10.49114 37 40 19 single |
8. | 17.20612 40 45 14.16667 married |
9. | 13.08374 40 8 5.5 married |
10. | 7.745568 40 50 2.25 married |
+---------------------------------------------+
通过 reg
命令进行回归后,可以发现解释变量 age 在 5% 水平上显著与被解释变量 wage 相关。 解释变量 hours 以及解释变量 tenure都与被解释变量 wage 在 1% 水平上显著相关。而解释变量 married 与被解释变量不显著相关。
. reg wage age hours tenure married
Source | SS df MS Number of obs = 2,227
----------+---------------------------------- F(4, 2222) = 29.94
Model | 3784.9833 4 946.245825 Prob > F = 0.0000
Residual | 70235.8273 2,222 31.6092832 R-squared = 0.0511
----------+---------------------------------- Adj R-squared = 0.0494
Total | 74020.8106 2,226 33.2528349 Root MSE = 5.6222
---------------------------------------------------------------------------
wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]
----------+----------------------------------------------------------------
age | -.0844975 .0390588 -2.16 0.031 -.1610931 -.007902
hours | .0711019 .0116507 6.10 0.000 .0482545 .0939493
tenure | .1665189 .0219824 7.58 0.000 .1234107 .2096272
married | -.2209223 .2514333 -0.88 0.380 -.7139911 .2721464
_cons | 7.606344 1.617926 4.70 0.000 4.433539 10.77915
---------------------------------------------------------------------------
运行 domin
命令后,结果如下所示。我们可以发现
. domin wage age hours tenure married
Regression type not entered in reg().
reg(regress) assumed.
Fitstat type not entered in fitstat().
fitstat(e(r2)) assumed.
Total of 15 regressions
General dominance statistics: Linear regression
Number of obs = 2227
Overall Fit Statistic = 0.0511
| Dominance Standardized Ranking
wage | Stat. Domin. Stat.
------------+-----------------------------------------------
age | 0.0017 0.0331 3
hours | 0.0205 0.4010 2
tenure | 0.0279 0.5461 1
married | 0.0010 0.0198 4
------------------------------------------------------------
在该线性回归中,各个变量的相对重要性排序为:tenure > hours > age > married。也就是说,在工资水平 (wage) 的影响因素中,获得职位的年限 (tenure)是最重要的影响因素,其次是工作时长 (hours), 再次是年龄 (age),最后是已婚状态 (married)。
变量 occupation,industry 和 race 均为分组变量。 domin
命令中的 sets()
设定可以很好得处理分组变量,并在处理中将 set1,set2,set3 分别视作由 occupation ,industry 和 race产生的三个解释变量。
. domin wage age hours tenure married, sets((i.occupation) (i.industry) (i.race))
Total of 127 regressions
General dominance statistics: Linear regression
Number of obs = 2209
Overall Fit Statistic = 0.1990
| Dominance Standardized Ranking
wage | Stat. Domin. Stat.
----------+--------------------------------------------
age | 0.0013 0.0067 7
hours | 0.0114 0.0572 4
tenure | 0.0181 0.0908 3
married | 0.0022 0.0111 6
set1 | 0.1133 0.5692 1
set2 | 0.0472 0.2374 2
set3 | 0.0055 0.0276 5
-------------------------------------------------------
在引入不同的 set 之后,在该线性回归中,各个变量的相对重要性排序为 set1 > set2 > tenure > hours > set3 > married > age。我们可以看到,相对重要性排序相较之前发生了变化。具体而言,在工资水平 (wage) 的影响因素中,职业的选择 (occupation)是最重要的,其次是所在的行业(industry),再次为获得职位的年限 (tenure),之后为工作时长 (hours),种族(race),已婚状态 (married),最后为年龄 (age)。
连享会-直播课 上线了!
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