多元回归与一元回归不同
Data Analyst
与一元回归相比,多元回归有两点不同:
1、新增了一个假定,多元回归的假定为:
- Y的平均值能够准确的被由X组成的线性函数模型呈现出来;
- 解释变量和随机扰动项不存在线性关系;
- 解释变量之间不存在线性关系或强相关;
- 假设随机误差项e是一个均值为0的正态分布;
- 假设随机误差项e的方差恒定;
- 误差独立。
2、多元线性回归会面临变量选择的问题
模型自变量增加后,即便使用聚类等手段进行变量压缩,也不能将自变量的相关性完全剔除,这便会导致具有相关性的自变量溜进模型。由于自变量间关系不同,建模所选择的策略也会不同,模型的结果相对也会有较大差异,SAS中一般会使用selection参数进行变量控制,这个参数即为变量选择提供准则与方法。
多元线性回归的多重共线性
Data Analyst
多元线性回归的自变量间不能具有多重共线性,但实际构建模型时经常会遇到自变量间高度重叠的情况,即自自变量间高度相关,一般SAS中使用VIF参数进行自变量相关性的检验。
如下为多元线性回归的SAS实现代码及VIF检验参数解读:
VIF参数解读:
这里模型整体非常显著,但模型的自变量却只有一个是显著的,大部分自变量都没有显著,这种情况明显是模型的自变量间出现了多重共线性。或者换一个角度,我会通过查看方差膨胀值来观察共线性,膨胀值为10以下表示暂无共线性、膨胀值为10以上表示出现了多重共线性、如果方差膨胀值达到100甚至以上则表示严重共线性。这里出现了两个10以上的方差膨胀值,即当地人均收入与年收入这两个变量出现了共线性。
遇到多重共线性怎么办
Data Analyst
遇到多重共线性一般会有两种处理办法:
1、最简单粗暴的方法,是将出现多重共线性的两个变量都从模型中去掉。如果想去掉其中的一个变量,这就会涉及到去掉哪个变量的问题,一般我会回过头去看变量间的相关系数矩阵图,反复查看确认这两个共线性的变量间到底是哪个变量和其他变量间相关性更强些,然后再删掉与其他变量相关性更强些的这个变量。一般,统计软件只能提示这两个变量出现了多重共线性,但是至于两个变量都去掉、去掉其中一个变量、去掉其中哪一个变量 这个过程统计软件是没法提供帮助的。
2、不去掉这些变量的情况下将模型构建起来,便涉及到了设置变量选择准则,也就是向前法、向后法等等。
还有一种情况,例如某个变量引起了多重共线性,理应删除,但是业务上这个变量又不能缺失,实际中这种情况是可以使用一些算法进行处理的,例如岭回归、LASSO、最小角度回归LAR、主成分回归、偏最小二乘回归等等。
变量选择及项目流程
Data Analyst
建模选择变量时首先考虑的不应该是技术,而是业务。实际上,如果项目周期是三个月,那么跑模型的时间应该是不超过10天的,剩下的大量精力应该放在理解业务上。
例如预测酱油的需求量,基本的思路应该是:
1、了解业务:
每一个业务领域都会有自己的体系,建模前需深入了解对应领域、体系下业务相关的全部资料,总结出哪些因素可能会影响酱油销量。
假如查阅了大量资料后了解到 影响酱油销量的因素有商品价格、代用品价格、当地收入水平、消费者偏好这四个方面,那么接下来需要判断这些因素是否都可以进行数据量化,将不能量化描述的变量排除掉。
一般偏好较难进行量化描述,偏好比较适合作为因变量进行入模(例如买与不买),但不适合作为自变量,所以不会选择将偏好选为自变量进行入模,排除掉;酱油本身价格较低,生活中使用其替代品的情况较少,所以替代品价格这个自变量也排除掉。
故最终可以确定模型的因变量为酱油需求量,模型的自变量为酱油价格与收入水平;
2、反复沟通:
模型服务于业务,与业务人员反复沟通必不可少,沟通过程中需要非常非常高的情商,很可能在这个阶段耗费掉2个月的时间;
3、变量落地:
找出入模变量的替换变量,需求量Y可用上一期的销量所代替;收入难于获取,一般很难拿到一个人的真实收入,所以一般用人均消费水平去代替收入变量;价格变量需要考虑可比性的问题,即空间可比性(同城市的价格不同)与时间可比性(十年前和今天价格是不同的)。
故最终确定的模型落地变量为:Y为酱油销量,X为平均销售价格、不变价格的消费水平。
4、数据清洗与建模:
一般,剩余20天左右的时间进行数据清洗、剩余10天左右的时间去跑模型。
回归模型中多少个变量合适
Data Analyst
SAS构建回归模型时,依据不同功能可以将模型划分为不同类别,一般模型可以分为三类:
1、机理模型:
机理模型追求将变量关系描述的越清楚越好,这类模型涉及到的变量比较多。物理定律一般都是机理模型,比较典型的如F=ma;
2、经验模型:
实际中变量间关系较为复杂,用机理模型无法描述。例如用模型去描述人口增长,这种情况只能提取历史数据去建立经验模型,而无法建立机理模型。因自变量自身存在误差,变量越多误差越大,从而导致预测越不准,所以经验模型为了追求预测准确度 模型的变量较少;
3、模拟模型:
模拟模型是所有建模人的终极愿望,这个模型需要将事物发生、发展的全过程都用数学语言再现出来。例如银行的压力测试即为模拟模型。
我选择变量的方式
Data Analyst
变量选择在回归里是一个很麻烦的事情,我会依据实际情况,如果变量较少,我会使用全子集回归,然后从结果中去选择自己认为比较好的变量组合;如果变量数目较多,我更喜欢去使用逐步回归。
如下为全子集回归模型的SAS实现代码: