一、多元线性回归模型简介
回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。
常见的回归分析有五类:线性回归、0-1回归、定序回归、计数回归和生存回归,其划分的依据是因变量Y的类型。本篇主要讲解多元线性回归以及lasso回归。
回归分析的目的
- 识别重要变量
- 判断相关性的方向
- 要估计权重(回归系数)
回归分析分类
|-------|---------------|------------|-----------|
| 类型 | 模型 | Y的特点 | 例子 |
| 线性回归 | OLS、GLS(最小二乘) | 连续数值型变量 | GDP、产量、收入 |
| 0-1回归 | logistic回归 | 二值变量(0-1) | 是否违约、是否得病 |
| 定序回归 | probit定序回归 | 定序变量 | 等级评定(优良差) |
| 计数回归 | 泊松回归(泊松分布) | 计数变量 | 每分钟车流量 |
| 生存回归 | Cox等比例风险回归 | 生存变量(截断数据) | 企业、产品的寿命 |
二、适用赛题
解释类问题
- 问一个因变量y由多个自变量x决定,探究这多个x和y的关系
- 解释哪个x和y关系更紧密
预测类问题
- 由于回归模型会得到一个拟合曲线,进而可以由这个曲线去预测一些值
- 不过注意,当要用拟合曲线预测的时候,拟合优度一定要大
三、模型流程
四、流程分析
注:回归模型其中涉及到矩阵论、概率论与数理统计的知识,本篇不展开证明和讲解。且推荐使用Stata软件来进行多元线性回归分析。
1.处理变量
我们得到了一组数据,要对数据进行分类
横截面数据
- 在某一时点收集的不同对象的数据
- 例如:我们自己发放问卷得到的数据,全国各省份2018年GDP的数据,大一新生今年体测的得到的数据
时间序列数据
- 对同一对象在不同时间连续观察所取得的数据
- 例如:从出生到现在,你的体重的数据(每年生日称一次),中国历年来GDP的数据,在某地方每隔一小时测得的温度数据
面板数据
- 横截面数据与时间序列数据综合起来的一种数据资源
- 例如:2008-2018年,我国各省份GDP的数据
|--------|-------------------------------|
| 数据类型 | 常见建模方法 |
| 横截面数据 | 多元线性回归 |
| 时间序列数据 | 移动平均、指数平滑、ARIMA、GARCH、VAR、 协积 |
| 面板数据 | 固定效应和随机效应、静态面板和动态面板 |
现在给出多元线性回归方程
无内生性(no endogeneity)要求所有解释变量均与扰动项不相关,这个假定通常太强,因为解释变量一般很多(比如,5-15个解释变量),且需要保证它们全部外生。是否可能弱化此条件?答案是肯定的,如果你的解释变量可以区分为核心解释变量与控制变量两类。
- 核心解释变量:我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于待估计参数的真值)
- 控制变量:我们可能对于这些变量本身并无太大兴趣,而之所以把它们也放入回归方程,主要是为了"控制住"那些对被解释变量有影响的遗漏因素
- 在实际应用中,我们只要保证核心解释变量与μ不相关即可
如果自变量中有定性变量,例如性别、地域等,在回归中要怎么处理呢?例如:我们要研究性别对于工资的影响(性别歧视)。这时候可以用到虚拟变量
Female就是一个虚拟变量。
为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1。例如男女是两类,就引入了一个Female;如果是区别全国34个省的人,就可以设置33个虚拟变量。
2.初次回归
利用Stata得到初次回归的结果后,需要检验结果的可靠性,如果可靠就可以解释系数完成工作如果不可靠,还需要调整方法继续回归。
问题出在扰动项
横截面数据容易出现异方差的问题;时间序列数据容易出现自相关的问题。
①异方差
如果扰动项存在异方差
- OLS估计出来的回归系数是无偏、一致的
- 假设检验无法使用(构造的统计量失效了)
- OLS估计量不再是最优线性无偏估计量(BLUE)
如何检验是否存在异方差
BP检验
原假设:扰动项不存在异方差。P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差。
怀特检验
原假设:扰动项不存在异方差。P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差。
②多重共线性
自相关的问题就是多重共线性的问题
如何检验是否存在多重共线性
3.处理问题
①如何解决异方差
- 使用OLS + 稳健的标准误。如果发现存在异方差,一种处理方法是,仍然进行OLS回归,但使用稳健标准误。这是最简单,也是目前通用的方法。只要样本容量较大,即使在异方差的情况下,若使用稳健标准误,则所有参数估计、假设检验均可照常进行。换言之,只要使用了稳健标准误,就可以与异方差"和平共处"了
- 广义最小二乘估计法GLS。原理:方差较大的数据包含的信息较少,我们可以给予信息量大的数据(即方差较小的数据更大的权重)缺点:我们不知道扰动项真实的协方差矩阵,因此我们只能用样本数据来估计,这样得到的结果不稳健,存在偶然性
- Stock and Watson (2011)推荐,在大多数情况下应该使用"OLS +稳健标准误"
②如何处理多重共线性
- 如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计
- 如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有多重共线性,则只会更加显著
- 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对模型设定进行修改
③逐步回归分析
没有太好的方法处理多重共线性问题,可以调整回归的方式
向前逐步回归(Forward selection)
- 将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型
- 缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了,但是,并没有将其及时从回归方程中剔除掉
向后逐步回归(Backward elimination)
- 与向前逐步回归相反,先将所有变量均放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的变异是否有显著变化,之后将最没有解释力的那个自变量剔除。此过程不断迭代,直到没有自变量符合剔除的条件
- 缺点:一开始把全部变量都引入回归方程,这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了
注意事项
- 向前逐步回归和向后逐步回归的结果可能不同
- 不要轻易使用逐步回归分析,因为剔除了自变量后很有可能会产生新的问题,例如内生性问题(后面会介绍lasso回归)
- 有没有更加优秀的筛选方法?有的,那就是每种情况都尝试一次,最终一共有2的k次方 - 1种可能。如果自变量很多,那么计算相当费时
4.解释系数
这里也可以看到,引入了新的自变量价格后,对回归系数的影响非常大。这就是遗漏变量导致的内生性的造成的。
伍德里奇的《计量经济学导论,现代观点》里,第六章176 -177页有详细的论述。取对数意味着原被解释变量对解释变量的弹性,即百分比的变化而不是数值的变化。目前,对于什么时候取对数还没有固定的规则,但是有一些经验法则
- 与市场价值相关的,例如,价格、销售额、工资等都可以取对数
- 以年度量的变量,如受教育年限、工作经历等通常不取对数
- 比例变量,如失业率、参与率等,两者均可
- 变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y)
取对数的好处
- 减弱数据的异方差性
- 如果变量本身不符合正态分布,取了对数后可能渐近服从正态分布
- 模型形式的需要,让模型具有经济学意义
下面有四类模型回归系数的解释
- 一元线性回归:y = a + bx + μ,x每增加1个单位,y平均变化b个单位
- 双对数模型: lny = a + blnx + μ,x每增加1%,y平均变化b%
- 半对数模型: y = a + blnx + μ,x每增加1%,y平均变化b/100个单位
- 半对数模型: lny = a + bx + μ,x每增加1个单位,y平均变化(100b)%
5.再次回归
在前面已经介绍了如何解决存在异方差的情况。但是对于多重共线性并未有一个较好的解决方法,解决方法中的增大样本量显然不太现实,找点数据已经不容易了,还要增大样本量。所以在不用后面的方法的情况下,一般都是将导致严重共线性的变量删除。下面我们介绍lasso回归。
和lasso回归一起出来的,还有岭回归。事实上,回归中关于自变量的选择大有门道, 变量过多时可能会导致多重共线性问题造成回归系数的不显著,甚至造成OLS估计的失效。本篇介绍到的岭回归和lasso回归在OLS回归模型的损失函数上加上了不同的惩罚项,该惩罚项由回归系数的函数构成。一方面,加入的惩罚项能够识别出模型中不重要的变量,对模型起到简化作用,可以看作逐步回归法的升级版;另一方面,加入的惩罚项能够让模型变得可估计,即使之前的数据不满足列满秩。
和前面一样,还是推荐使用Stata软件分析。但大多数博客或讲义上都是使用Python来做岭回归和lasso回归的,因此有Python机器学习基础的同学可以自己查阅相关的调用代码。
另外,Stata中对于岭回归的估计有点bug,因此推荐用lasso回归。
那么,什么时候用lasso回归呢?
我们首先使用最一般的OLS对数据进行回归,然后计算方差膨胀因子VIF,如果VIF > 10则说明存在多重共线性的问题,此时我们需要对变量进行筛选。
在前面我们提到可以使用逐步回归法来筛选自变量,让回归中仅留下显著的自变量来抵消多重共线性的影响,知道lasso回归后,我们完全可以把lasso回归视为逐步回归法的进阶版,我们可以使用lasso回归来帮我们筛选出不重要的变量,步骤如下
- 判断自变量的量纲是否一样,如果不一样则首先进行标准化的预处理;
- 对变量使用lasso回归,记录下lasso回归结果表中回归系数不为0的变量,这些变量就是最终我们要留下来的重要变量,其余未出现在表中的变量可视为引起多重共线性的不重要变量
在得到了重要变量后,我们实际上就完成了变量筛选,此时我们只将这些重要变量视为自变量,然后进行回归,并分析回归结果即可。(注意:此时的变量可以是标准化前的,也可以是标准化后的,因为lasso只起到变量筛选的目的)
五、补充
1.拟合优度较低怎么办
- 回归分为解释型回归和预测型回归。预测型回归一般才会更看重R²。解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可
- 可以对模型进行调整,例如对数据取对数或者平方后再进行回归
- 数据中可能有存在异常值或者数据的分布极度不均匀
2.标准化回归系数
为了更为精准的研究影响评价量的重要因素(去除量纲的影响),我们可考虑使用标准化回归系数。
对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数。
标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显著的回归系数哦)。
3.对于线性的理解
线性假定并不要求初始模型都呈上述的严格线性关系,自变量与因变量可通过变量替换而转化成线性模型。比如下面的都是线性模型