假设现在有一个线性回归模型:
人均GDP = a第一产业产值 b工业产值 c建筑业产值 d第三产业产值 e
PS:人均GDP单位元,各产业产值单位亿元,为方便说明,这里举一个简单的例子。
一般而言,我们通常从那几个指标去分析这个模型?
- 看系数,比如第一产值每增长1亿元,人均GDP平均增长a元。
- 看P值,比如系数a的P值为0.025,说明第一产业产值对人均GDP的增长作用是显著的。
- 看R2,比如 R2=0.95,说明这几个产业的产值,对人均GDP的解释能力为95%。
我们常用的分析指标差不多是这些,其他 t值、F值、DW值等都是对模型本身的各种检验,对于业务分析没有太多帮助。
本文介绍一个指标,从另一个角度进行分析:各自变量对因变量的贡献率。
一、贡献率的计算
仍以上面回归模型为例,这个贡献率就是 各产业值 对 人均GDP 的 贡献率。
如果各个产业值对人均GDP的作用都显著,P值都是10的-5次方以下,系数也都相差不大(系数很大程度上是由量级决定的),那么:
我们如何衡量这几个因素的重要性?
贡献率 或许可以解决这个问题。
如何衡量贡献率?目前似乎还没有一种教科书式的定义(如果有,欢迎同步给我),paper中比较多的衡量方法是:
引入该因子之后,引起的模型R2的变化,即 贡献率 = delta R2。
这种方法其实也就是 R2 再细化到每个因子——看每个因子引起的R2的增长情况,以此来作为贡献率。
也有人用其他方法衡量:
某因子标准化系数的绝对值 / 各因子标准化系数绝对值之和
下面用实例来说明一下。
二、实例计算
刚才的例子,我们用某个国家36年的经济数据为例:
我们用 stepwise 跑出线性回归模型:
图1 回归模型结果(1)
图2 回归模型结果(2)
我们主要关注最终被stepwise确定的模型,也就是表中的 model 4。
可以看到:
- 所有的因素都显著(P-value<0.05),即第一产业、工业、建筑业、第三产业对人均GDP均有显著促进作用;
- R2 为 1,即这四个因素对人均GDP的解释能力为100%
- 系数(表中B)都在一个量级,如:
- 工业的系数为0.85,代表工业产值每提高1亿元,人均GDP平均提高0.085元;
- 第一产业的系数为0.128,代表第一产业产值每提高1亿元,人均GDP平均提高0.128元
- 其他省略。
一般来说,我们分析的指标差不多是这些,现在我们来计算一下贡献率:
(1)delta R2 法
每个因子引入之后,R2的变化如下:
图3 delta R2 结果
- delta R2 (工业) = 0.998
- delta R2 (第三产业) = 0.001
- delta R2 (第一产业) = 0.000
- delta R2 (建筑业) = 0.000
虽然每个因素都是显著的,但从贡献率角度我们发现,工业对该国人均GDP的贡献率最大,有99.8%,其他的贡献率一共才0.2%。
(2)标准化系数法
这个我们从图2中 Beta 栏即可计算出来:
- delta R2 (工业) = 0.447 / ( 0.447 0.355 0.168 0.031 ) = 0.447
- delta R2 (第三产业) = 0.355 / ( 0.447 0.355 0.168 0.031 ) = 0.355
- delta R2 (第一产业) = 0.168 / ( 0.447 0.355 0.168 0.031 ) = 0.168
- delta R2 (建筑业) = 0.031 / ( 0.447 0.355 0.168 0.031 ) = 0.031
工业仍然是贡献率最高的,占44.7%,其次第三产业35.5%、第一产业16.8%、建筑业3.1%.
两种方法虽然值有差别,但贡献率排序是一样的。
三、演示 及 code
(1)SPSS
在 SPSS 中,我们可以直接得到两种方法的结果,上面的结果图,就是SPSS的结果。
标准化系数,SPSS默认就有,delta R2,需要在 linear regression - statistics 中,勾选 R squared change:
图4 SPSS 勾选 R squared change
(2)SAS
SAS同样可以:
- delta R2 法
图5 delta R2贡献率 SAS结果
PS:x3-工业产值;x2-第三产业产值;x1-第一产业产值;x4-建筑业产值
- 标准化系数法
图6 标准化系数贡献率 SAS 结果