查看原文
其他

R2 分解到每个变量上:相对重要性分析 (Dominance Analysis)

Stata连享会 Stata连享会 2020-02-10

作者:胡雨霄  (伦敦政治经济学院)

Stata 连享会:知乎 | 简书 | 码云 | CSDN

2019暑期“实证研究方法与经典论文”专题班

特别说明

文中包含的链接在微信中无法生效。请点击本文底部左下角的【阅读原文】,转入本文【知乎版】

本篇推文介绍重要性分析 (Dominance Analysis) 及其 Stata 命令实现 domin

1. 重要性分析简介

在实证经济学中,一个重要的问题是探究不同的解释变量 (explanatory variable) 对被解释变量 (dependent variable) 的方差的具体贡献程度。

例如,在 叶德珠,黄有光,连玉君 (2014) 的论文中,三位作者试图高清楚哪些文化因素对幸福感的影响更大 (Ye D, Ng Y K, Lian Y. Culture and Happiness[J]. Social Indicators Research, 2015, 123(2):519-547. https://core.ac.uk/download/pdf/81850289.pdf)。显然,各个系数大小是不能被用来直接比较的;对系数进行标准化似乎可行,但却不知道他们的相对重要性。

此外,文献中比较普遍的方法为逐步回归法 (stepwise regression),即在回归中逐步引入解释变量, 以及显著性测试 (significance test)。然而,逐步回归方法中,引入解释变量的顺序是非常主观的。显著性测试也并不总是可以将不同的解释变量按其重要程度排序。基于此,Isareli (2006) 在前人的基础上 (主要是 (Shorrocks, 1999) 以及 (Fields, 2003))提出了重要性分析 (Dominance Analysis) 的方法。该方法旨在确定线性回归中,不同解释变量对决定系数  的贡献程度。而事实上,对于决定系数 的贡献程度也反映了不同解释变量对被解释变量方差的贡献度。

假设线性回归为

被解释变量 y 的方差,即总离差平方和 (total sum of squares, TSS), 可以被分解为两部分,回归平方和 (regression sum of squares, RSS) 以及残差平方和 (error sum or squares, ESS)。

其中, 为被解释变量的预测值。

拟合优度 可以被表示为

因为 是重要的模型拟合优度统计量。自然而然,为了分析不同解释变量的相对重要性,研究者会想要分解不同解释变量对 的贡献程度,并以此判断其相对重要性。

根据 Fields(2003),被解释变量 y 的方差,即总离差平方和 (total sum of squares, TSS),可分解为

由此可以得到不同解释变量的相对贡献程度

事实上,上式与 [3] 式本质相同。但根据 [5] 式,不同解释变量可按照重要程度排序。然而,Fields(2003) 未考虑到不同解释变量之间的相互关系。也就是说,某一变量的系数会与回归中其他的解释变量有关。

与之相反,Shapley(1999) 认为解释变量的贡献应当等同于其对 的边际效用 (marginal effect),M。具体而言,解释变量 的边际效用可以表示为,

其中,S 是不包含变量 k 的其他解释变量。可以看到,该式实则为完整回归的 减去不包含变量 k 的回归的 。由于去除一个解释变量后,回归的系数通常会发生改变,因此不包含变量 k 的回归的系数都以 * 表示。

此处,产生一个问题。变量 k 被剔除回归的顺序不同,那么对拟合优度 的边际效用也会不同。因此,为了解决这个问题,最终对变量 k 的重要程度的判定是对 J! 种不同剔除方式得到结果的平均值。

2. Stata 命令 domin

2.1 命令下载

  1. ssc install domin

2.2 命令语法

该命令的基本语法如下

  1. domin depvar indepvars [if] [in] [weight], sets((varlist) (varlist) ...)  

其中,

depvar :因变量

indepvars:解释变量

sets((varlist)(varlist)) 设定会将被列入 varlist 的变量视作一个解释变量。例如 sets((x1 x2)(x3 x4)) 表示会创建 2 个变量集合 (set)。其中 set1 由变量 x1 和变量 x2 创立,而 set2 则由变量 x3 和变量 x4 创立。该命令通常由于进行分组分析。

在研究中,通常只会使用到基本命令。但本篇推文也将介绍该命令的进阶语法。

  1. domin depvar [indepvars [if] [in] [weight] , fitstat(scalar)

  2. sets((varlist)(varlist) ...) noconditional nocomplete epsilon ]

其中,

fitstat(scalar) 规定了用于进行重要性分析的拟合优度统计量。fitstat 允许的 scalar 有 3 种形式:returned, ereturned, 或者其他 scalar。若无特别设定,Stata 则默认为  fitstat(e(r2))

noconditional 设定不输出 conditional dominance 的结果。

nocomplete 设定不计算 complete dominance 结果。

epsilon 设定可以加快计算速度,输出结果也与未设定 epsilon 的结果类似。但是如果加入该设定之后,无法同时加入 set

2.3 实证运用: 两变量情形

2.3.1  数据

  1. sysuse "auto.dta", clear

数据结构如下

  1. . list in 1/10


  2. +-------------------------------------------------------------------------------------------------------------------+

  3. | make price mpg rep78 headroom trunk weight length turn displa~t gear_r~o foreign |

  4. |-------------------------------------------------------------------------------------------------------------------|

  5. 1. | AMC Concord 4,099 22 3 2.5 11 2,930 186 40 121 3.58 Domestic |

  6. 2. | AMC Pacer 4,749 17 3 3.0 11 3,350 173 40 258 2.53 Domestic |

  7. 3. | AMC Spirit 3,799 22 . 3.0 12 2,640 168 35 121 3.08 Domestic |

  8. 4. | Buick Century 4,816 20 3 4.5 16 3,250 196 40 196 2.93 Domestic |

  9. 5. | Buick Electra 7,827 15 4 4.0 20 4,080 222 43 350 2.41 Domestic |

  10. |-------------------------------------------------------------------------------------------------------------------|

  11. 6. | Buick LeSabre 5,788 18 3 4.0 21 3,670 218 43 231 2.73 Domestic |

  12. 7. | Buick Opel 4,453 26 . 3.0 10 2,230 170 34 304 2.87 Domestic |

  13. 8. | Buick Regal 5,189 20 3 2.0 16 3,280 200 42 196 2.93 Domestic |

  14. 9. | Buick Riviera 10,372 16 3 3.5 17 3,880 207 43 231 2.93 Domestic |

  15. 10. | Buick Skylark 4,082 19 3 3.5 13 3,400 200 42 231 3.08 Domestic |

  16. +-------------------------------------------------------------------------------------------------------------------+

2.3.2 回归

通过 reg 命令进行回归后,可以发现解释变量 weight 和解释变量 length 都与被解释变量 price 显著相关。

  1. . reg price weight length


  2. Source | SS df MS Number of obs = 74

  3. -------------+---------------------------------- F(2, 71) = 18.91

  4. Model | 220725280 2 110362640 Prob > F = 0.0000

  5. Residual | 414340116 71 5835776.28 R-squared = 0.3476

  6. -------------+---------------------------------- Adj R-squared = 0.3292

  7. Total | 635065396 73 8699525.97 Root MSE = 2415.7


  8. ------------------------------------------------------------------------------

  9. price | Coef. Std. Err. t P>|t| [95% Conf. Interval]

  10. -------------+----------------------------------------------------------------

  11. weight | 4.699065 1.122339 4.19 0.000 2.461184 6.936946

  12. length | -97.96031 39.1746 -2.50 0.015 -176.0722 -19.84838

  13. _cons | 10386.54 4308.159 2.41 0.019 1796.316 18976.76

  14. ------------------------------------------------------------------------------

2.3.3 相对重要性分析

运行 domin 命令后,结果如下所示。

  • 我们可以发现,Overall Fit Statistic 的数值与运行 reg命令后的 R-squared 数值相同。这是因为 domin 命令默认的拟合优度统计量即为 R-squared.

  1. . domin price weight length


  2. Total of 3 regressions


  3. General dominance statistics: Linear regression

  4. Number of obs = 74

  5. Overall Fit Statistic = 0.3476


  6. | Dominance Standardized Ranking

  7. price | Stat. Domin. Stat.

  8. ------------+------------------------------------------------------------------------

  9. weight | 0.2256 0.6491 1

  10. length | 0.1220 0.3509 2

  11. -------------------------------------------------------------------------------------

  • 变量 weight 的贡献度为 0.2256,也可以解释为该变量对拟合优度 的边际贡献为0.2256。

  • 变量 length 的贡献度为 0.1220,也可以解释为该变量对拟合优度 的边际贡献为 0.1220。

  • 在该线性回归中,变量 weight** 相对于变量 length 更加重要,对被解释变量 price 的方差的变化的解释力度更强。**

接下来,我们利用 Stata 来验证 Dominance Stat. 是如何得出的,同时将上述的数学公式进行运用。

在这个实证的例子中,我们只引入了两个解释变量。线性回归方程可表示为

代入 [6] 式,

  1. . rename (price weight length) (y x1 x2) // 为了与数学公式一致

  2. .

  3. . /*第一种剔除方法*/

  4. .

  5. . **回归1:完整回归

  6. . qui reg y x1 x2

  7. .

  8. . local R2_all = e(r2) //记录完整回归的R-squared

  9. .

  10. . **回归2:剔除变量x1

  11. . qui reg y x2

  12. . local R2_x2 = e(r2) //记录回归2的R-squared

  13. .

  14. . **第一种剔除方法得到的边际贡献

  15. . local R2_m1_x1 = `R2_all'-`R2_x2'

  16. .

  17. . /*第二种剔除方法*/

  18. .

  19. . **回归1b:不包含x2的回归

  20. . qui reg y x1 //回归1b

  21. .

  22. . local R2_x1 = e(r2) //记录回归1b的R-squared

  23. .

  24. . **回归1b:不包含x2和x1的回归

  25. . qui reg y //回归2b

  26. .

  27. . local R2_0 = e(r2) //记录回归2b的R-squared

  28. .

  29. . **第二种剔除方法得到的边际贡献

  30. . local R2_m2_x1 = `R2_x1'-`R2_0'

  31. .

  32. . /*Dominance Stat.*/

  33. .

  34. . **[7]式

  35. . local R2_x1_Sharp = (`R2_m1_x1'+`R2_m2_x1')/2


  36. . dis "Shapley value of weight = " in g %6.4f `R2_x1_Sharp'

  37. Shapley value of weight = 0.2256

2.4 实证运用: 多变量情形

2.4.1 数据

  1. sysuse "nlsw88.dta", clear

数据结构如下

  1. . list wage age hours tenure married in 1/10


  2. +---------------------------------------------+

  3. | wage age hours tenure married |

  4. |---------------------------------------------|

  5. 1. | 11.73913 37 48 5.333333 single |

  6. 2. | 6.400963 37 40 5.25 single |

  7. 3. | 5.016723 42 40 1.25 single |

  8. 4. | 9.033813 43 42 1.75 married |

  9. 5. | 8.083731 42 48 17.75 married |

  10. |---------------------------------------------|

  11. 6. | 4.62963 39 30 2.25 married |

  12. 7. | 10.49114 37 40 19 single |

  13. 8. | 17.20612 40 45 14.16667 married |

  14. 9. | 13.08374 40 8 5.5 married |

  15. 10. | 7.745568 40 50 2.25 married |

  16. +---------------------------------------------+

2.4.2 回归

通过 reg 命令进行回归后,可以发现解释变量 age 在 5% 水平上显著与被解释变量 wage 相关。解释变量 hours 以及解释变量 tenure都与被解释变量 wage 在 1% 水平上显著相关。而解释变量 married 与被解释变量不显著相关。

  1. . reg wage age hours tenure married


  2. Source | SS df MS Number of obs = 2,227

  3. -------------+---------------------------------- F(4, 2222) = 29.94

  4. Model | 3784.9833 4 946.245825 Prob > F = 0.0000

  5. Residual | 70235.8273 2,222 31.6092832 R-squared = 0.0511

  6. -------------+---------------------------------- Adj R-squared = 0.0494

  7. Total | 74020.8106 2,226 33.2528349 Root MSE = 5.6222


  8. ------------------------------------------------------------------------------

  9. wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]

  10. -------------+----------------------------------------------------------------

  11. age | -.0844975 .0390588 -2.16 0.031 -.1610931 -.007902

  12. hours | .0711019 .0116507 6.10 0.000 .0482545 .0939493

  13. tenure | .1665189 .0219824 7.58 0.000 .1234107 .2096272

  14. married | -.2209223 .2514333 -0.88 0.380 -.7139911 .2721464

  15. _cons | 7.606344 1.617926 4.70 0.000 4.433539 10.77915

  16. ------------------------------------------------------------------------------

2.4.3 相对重要性分析

运行 domin 命令后,结果如下所示。我们可以发现

  1. . domin wage age hours tenure married

  2. Regression type not entered in reg().

  3. reg(regress) assumed.


  4. Fitstat type not entered in fitstat().

  5. fitstat(e(r2)) assumed.



  6. Total of 15 regressions


  7. General dominance statistics: Linear regression

  8. Number of obs = 2227

  9. Overall Fit Statistic = 0.0511


  10. | Dominance Standardized Ranking

  11. wage | Stat. Domin. Stat.

  12. ------------+------------------------------------------------------------------------

  13. age | 0.0017 0.0331 3

  14. hours | 0.0205 0.4010 2

  15. tenure | 0.0279 0.5461 1

  16. married | 0.0010 0.0198 4

  17. -------------------------------------------------------------------------------------

在该线性回归中,各个变量的相对重要性排序为:tenure > hours > age > married。也就是说,在工资水平 (wage) 的影响因素中,获得职位的年限 (tenure)是最重要的影响因素,其次是工作时长 (hours), 再次是年龄 (age),最后是已婚状态 (married)。

2.4.4 相对重要性分析 (分组情形)

变量 occupationindustryrace 均为分组变量。domin 命令中的 sets() 设定可以很好得处理分组变量,并在处理中将 set1set2set3 分别视作由 occupationindustryrace产生的三个解释变量。

  1. . domin wage age hours tenure married, sets((i.occupation) (i.industry) (i.race))


  2. Total of 127 regressions


  3. General dominance statistics: Linear regression

  4. Number of obs = 2209

  5. Overall Fit Statistic = 0.1990


  6. | Dominance Standardized Ranking

  7. wage | Stat. Domin. Stat.

  8. ------------+------------------------------------------------------------------------

  9. age | 0.0013 0.0067 7

  10. hours | 0.0114 0.0572 4

  11. tenure | 0.0181 0.0908 3

  12. married | 0.0022 0.0111 6

  13. set1 | 0.1133 0.5692 1

  14. set2 | 0.0472 0.2374 2

  15. set3 | 0.0055 0.0276 5

  16. -------------------------------------------------------------------------------------

在引入不同的 set 之后,在该线性回归中,各个变量的相对重要性排序为 set1 > set2 > tenure > hours > set3 > married > age。我们可以看到,相对重要性排序相较之前发生了变化。具体而言,在工资水平 (wage) 的影响因素中,职业的选择 (occupation)是最重要的,其次是所在的行业(industry),再次为获得职位的年限 (tenure),之后为工作时长 (hours),种族(race),已婚状态 (married),最后为年龄 (age)。

参考文献

[1] Fields, G. S. (2003). Accounting for income inequality and its change: A new method, with application to the distribution of earnings in the United States. In Worker well-being and public policy (pp. 1-38). Emerald Group Publishing Limited.

[2] Israeli, O. (2007). A Shapley-based decomposition of the R-square of a linear regression. The Journal of Economic Inequality, 5(2), 199-212.

[3] Shorrocks, A.F.: Decomposition Procedures for Distributional Analysis: A Unified Framework Based on the Shapley Value (mimeo). University of Essex (1999)

[4] Ye D, Ng Y K, Lian Y. Culture and Happiness[J]. Social Indicators Research, 2015, 123(2):519-547. Note: 这篇文章对本文介绍的内容进行了细致的说明和应用。https://core.ac.uk/download/pdf/81850289.pdf

 

关于我们

  • Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。

  • 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词StataStata连享会后关注我们。

  • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。

  • Stata连享会 精彩推文1  || 精彩推文2

联系我们

  • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

  • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。

  • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

  • 联系邮件: StataChina@163.com

往期精彩推文



欢迎加入Stata连享会(公众号: StataChina)

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存