多重共线性和非线性回归及解决方法 联系客服

发布时间 : 星期三 文章多重共线性和非线性回归及解决方法更新完毕开始阅读5a3074100b4e767f5acfce81

多重共线性和非线性回归的问题 (1)多重共线性问题

我们都知道在进行多元回归的时候,特别是进行经济上指标回归的时候,很多变量存在共同趋势相关性,让我们得不到希望的回归模型。这里经常用到的有三种方法,而不同的方法有不同的目的,我们分别来看看:

第一个,是最熟悉也是最方便的——逐步回归法。

逐步回归法是根据自变量与因变量相关性的大小,将自变量一个一个选入方法中,并且每选入一个自变量都进行一次检验。最终留在模型里的自变量是对因变量有最大显著性的,而剔除的自变量是与因变量无显著线性相关性的,以及与其他自变量存在共线性的。用逐步回归法做的多元回归分析,通常自变量不宜太多,一般十几个以下,而且你的数据量要是变量个数3倍以上才可以,不然做出来的回归模型误差较大。比如说你有10个变量,数据只有15组,然后做拟合回归,得到9个自变量的系数,虽然可以得到,但是精度不高。这个方法我们不仅可以找到对因变量影响显著的几个自变量,还可以得到一个精确的预测模型,进行预测,这个非常重要的。而往往通过逐步回归只能得到几个自变量进入方程中,有时甚至只有一两个,令我们非常失望,这是因为自变量很多都存在共线性,被剔除了,这时可以通过第二个方法来做回归。

第二个,通过因子分析(或主成分分析)再进行回归。

这种方法用的也很多,而且可以很好的解决自变量间的多重共线性。首先通过因子分析将几个存在共线性的自变量合为一个因子,再用因子分析得到的几个因子和因变量做回归分析,这里的因子之间没有显著的线性相关性,根本谈不上共线性的问题。通过这种方法可以得到哪个因子对因变量存在显著的相关性,哪个因子没有显著的相关性,再从因子中的变量对因子的载荷来看,得知哪个变量对因变量的影响大小关系。而这个方法只能得到这些信息,第一它不是得到一个精确的,可以预测的回归模型;第二这种方法不知道有显著影响的因子中每个变量是不是都对因变量有显著的影响,比如说因子分析得到三个因子,用这三个因子和因变量做回归分析,得到第一和第二个因子对因变量有显著的影响,而在第一个因子中有4个变量组成,第二个因子有3个变量组成,这里就不知道这7个变量是否都对因变量存在显著的影响;第三它不能得到每个变量对因变量准确的影响大小关系,而我们可以通过逐步回归法直观的看到自变量前面的系数大小,从而判断自变量对因变量影响的大小。 第三个,岭回归。

通过逐步回归时,我们可能得到几个自变量进入方程中,但是有时会出现自变量影响的方向出现错误,比如第一产业的产值对国民收入是正效应,而可能方程中的系数为负的,这种肯定是由于共线性导致出现了拟合失真的结果,而这样的结果我们只能通过自己的经验去判断。通常我们在做影响因素判断的时候,不仅希望得到各个因素对因变量真实的影响关系,还希望知道准确的影响大小,就是每个自变量系数的大小,这个时候,我们就可以通过岭回归的方法。

岭回归是在自变量信息矩阵的主对角线元素上人为地加入一个非负因子k,从而使回归系数的估计稍有偏差、而估计的稳定性却可能明显提高的一种回归分析方法,它是最小二乘法的一种补充,岭回归可以修复病态矩阵,达到较好的效果。在SPSS中没有提供岭回归的模块,可以直接点击使用,只能通过编程来实现,当然在SAS、Matlab中也可以实现。做岭回归的时候,需要进行多次调试,选择适当的k值,才能得到比较满意的方程,现在这个方法应用

越来越普遍。在07年的时候,我的一个老师还觉得这个方法是他的看家本领,但是现在很多人都会这个方法,而且用的越来越多了,得到的结果也非常合理。

特别提醒的是:多重共线性说的是变量之间线性关系,和非线性不要混淆了。多组变量之间两种极端的关系是完全多重共线性关系和完全非线性关系,即完全是平行直线的关系和完全无规则的曲线关系(是什么形状,还真不好形容,自己悟去吧^_^)。当然解决多重共线性问题的方法还有,比如差分微分模型,应用的很少,我估计是非常专业的人才会用的吧,呵呵,反正我不会这个方法。接下来说说非线性回归。 (2)非线性回归的问题。

非线性回归,顾名思义自变量和因变量是非线性的关系,比如平方、次方等等,但是大多数的非线性方程都可以转换成线性的方程,比如我们通常知道的二次函数:

y=a0+a1*x+a2*x^2,这里就可以转换成线性方程,首先将x^2计算得到x1,方程就变成

y=a0+a1*x+a2*x1,而这个方程就是我们一般见到的多元线性回归,直接进行线性拟合就可以了。

这里需要特别提醒的是:我说的可以转换成线性的非线性方程,是一元非线性方程,而不是多元非线性方程。我们知道在SPSS回归分析中有单独一个模块叫曲线估计,它里面提供的11个非线性模型都是可以转换成线性模型的,而且在进行系数拟合的时候都是通过转换成线性方程进行拟合的,这就是为什么同样是非线性方程,在曲线估计里面不需要输入系数的初始值,而在非线性回归中却要输入。

将非线性方程转换成线性方程再进行拟合,不是因为我们不会做非线性拟合,而改成线性拟合我就会做了,主要原因不是因为这个。而是因为同样的非线性方程拟合比转换成的线性方程拟合误差更大一些,而且由于迭代次数的增多,计算时间会更长,由于我们平时计算的数据不是很多,这种感觉不是非常明显,但是当我们做实际问题的时候,特别是规划问题中,我们将非线性方程转换成线性方程时,计算速度会明显加快。还有一个原因是,做非线性回归的时候,我们要在拟合之前设置初始值,而初始值的选择直接影响后面系数的确定,你改变初始值,拟合出来的系数都会发生变化,这样也会增加非线性回归产生的误差,前面说的误差是计算上产生的误差,而这里是人为经验上产生的误差。因此在做非线性回归时,如果能转换成线性回归,一定转换成线性的来做。

说到那个人,他在留言中说,这样我没有考虑到转换之后自变量之间的多重共线性,不能这样做,还声嘶力竭的喊我误人子弟。这里我要详细说明是怎么回事,要不要考虑这里的多重共线的问题,如果他也能看到更好。一般我们做回归分析的时候,通常第一步看自变量和因变量之间的散点图,通过散点图我们大致判断两者之间存在怎么的关系,再来选择适当的模型。而通常我们不知道具体选择哪个模型,可以选择几个可能相似的模型比较一下,选择一个拟合效果最好的。这里比如说两个变量之间知道是非线性的,但是不知道是二次的、三次的还是四次及以上的关系(通常次方数越低越好),你可以同时考虑,然后根据拟合的结果来判断。如将方程设置为:y=a0+a1*x+a2*x^2+a3*x^3+a4*x^4,转换成线性方程就是:

y=a0+a1*x+a2*x2+a3*x3+a4*x4,而这里需不需要考虑这四个自变量之间的共线性呢,上面说过,多重共线性指的是变量之间的线性关系,而这里的四个自变量他们是非线性的关系(x、x^2、x^3、x^4),即使他们的线性相关系数很高(这是因为二次或者三次曲线用直线拟合得到效果也不错,但是我们知道他们之间的确是非线性的关系,而不是线性关系),因此,我们可以他们的多重共线性,在拟合的时候,选择逐步回归法,也可以不考虑,选择直接进入法,两者得到的结果几乎一样,我亲自试验了。如果得到的结果的确有四次方的关系,那么x4自变量就会通过检验,我们可以通过检验来判断两个变量到底存在什么样的曲线关系。

这样还需要简单说下多元非线性回归,多元非线性回归也可以进行转换,但是转换完之后就必须要考虑变量之间的多重共线性了,因为我们不能明确的知道转换之后的自变量是否不存在线性的关系。上次有个人在百度里提问说,我有十几个自变量,想做非线性回归,我们一般不推荐这么多自变量做多元非线性回归,除非你发现十几个自变量都和因变量存在非线性的关系。因为多元非线性回归计算非常复杂,迭代次数非常庞大,而得到的结果也不尽如人意。

好了,这些都是根据我自己的理解和经验来写的,如果一不小心被统计高手或者老师看到,如发现说的不对的地方,请一定要在下面指正出来,非常感谢。

第4节 回归诊断方法 检验所选模型中的各变量之间共线性(即某些自变量之间有线性关系)情况;根据模型推算出与自变量取各样本值时对应的因变量的估计值y^,反过来检验所测得的Y是否可靠,胀是回归诊断的2项 -

第4节 回归诊断方法

检验所选模型中的各变量之间共线性(即某些自变量之间有线性关系)情况;根据模型推算出与自变量取各样本值时对应的因变量的估计值y^,反过来检验所测得的Y是否可靠,胀是回归诊断的2项主要任务。

下面就SAS系统的REG过程运行后不同输出结果,仅从回归诊断方面理解和分析说明如下: 1.用条件数和方差分量来进行共线性诊断

各入选变量的共线性诊断借助SAS的MODEL语句的选择项COLLIN或COLLINOINT来完成。二者都给出信息矩阵的特征根和条件数 (Condition Number),还给出各变量的方差在各主成分上的分解(Decomposition),以百分数的形式给出,每个入选变量上的方差分量之和为1。COLLIN和COLLINOINT的区别在于后者对模型中截距项作了校正。当截距项无显著性时,看由COLLIN输出的结果;反之,应看由COLLINOINT输出的结果。 (1)条件数

先求出信息矩阵杸X'X枈的各特征根, 条件指数(condition indices)定义为: 最大特征根与每个特征根比值的平根,其中最大条件指数k称为矩阵杸X'X枈的条件数。

条件数大,说明设计矩阵有较强的共线性,使结果不稳定,甚至使离开试验点的各估计值或预测值毫无意义。

直观上,条件数度量了信息矩阵X'X的特征根散布程度,可用来判断多重共线性是否存在以及多重共线性严重程度。在应用经验中,若0<k<10,则认为没有多重共线性;10≤k≤30,则认为存在中等程度或较强的多重共线性;k>30,则认为存在严重的多重共线性。(2)方差分量

强的多重共线性同时还会表现在变量的方差分量上∶对大的条件数同时有2个以上变量的方差分量超过50%,就意味这些变量间有一定程度的相关。

2.用方差膨胀因子来进行共线性诊断

(1)容许度(Tolerance,在Model语句中的选择项为TOL)

对一个入选变量而言,该统计量等于1- R2, 这里R2是把该自变量当作因变量对模型中所有其余回归变量的决定系数, R2大(趋于1),则1-R2=TOL小(趋于0),容许度差,该变量不由其他变量说明的部分相对很小。 (2)方差膨胀因子(VIF)

VIF=1/TOL,该统计量有人译为“方差膨胀因子”(VarianceInflation Factor),对于不好的试验设计,VIF的取值可能趋于无限大。VIF达到什么数值就可认为自变量间存在共线性?尚

无正规的临界值。[陈希孺、王松桂,1987]根据经验得出∶VIF>5或10时,就有严重的多重共线性存在。

3.用学生化残差对观测点中的强影响点进行诊断

对因变量的预测值影响特别大,甚至容易导致相反结论的观测点,被称为强影响点(In- fluence Case)或称为异常点(Outlier)。有若干个统计量(如∶Cook' D统计量、hi统计量、

STUDENT统计量、RSTUDENT统计量等,这些统计量的定义参见本章第6节)可用于诊断哪些点对因变量的预测值影响大,其中最便于判断的是学生化残差STUDENT统计量。当该统计量的值大于2时,所对应的观测点可能是异常点,此时,需认真核对原始数据。若属抄写或输入数据时人为造成的错误,应当予以纠正;若属非过失误差所致,可将异常点剔除后再作回归分析。如果有可能,最好在此点上补做试验,以便进一步确认可疑的“异常点”是否确属异常点。

第5节 用各种筛选变量方法编程的技巧

从本章第3节可知,有多种筛选变量的方法,这些方法中究竟哪一种最好?没有肯定的答复。最为可行的做法是对同一批资料多用几种筛选变量的方法,并结合专业知识从中选出相对优化的回归模型。

判断一个回归模型是否较优,可从以下两个方面考虑∶其一,整个回归模型及模型中各回归参数在统计学上有显著性意义、在专业上(特别是因变量的预测值及回归方程的精度)有实际意义;其二,在包含相同或相近信息的前提下,回归方程中所包含的变量越少越好。 下面利用一个小样本资料,通过一个较复杂的 SAS程序,展示如何用各种筛选变量的方法实现回归分析、如何用已求得的回归方程对资料作进一 步的分析的技巧。

[例4.2.3] α-甲酰门冬酰苯丙氨酸甲酯(FAPM)是合成APM的关键中间体之一。试验表明,影响FAPM收率的主要因素有∶ 原料配比(r)、溶剂用量(p1)、催化剂用量(p2)及反应时间(t)等4个因素,现将各因素及其具体水平的取值列在下面。 影响FAPM合成收率的因素和水平∶

因素各水平的代码 1 2 3 4 5 6 7 r 原料配比 0.80 0.87 0.94 1.01 1.08 1.15 1.22

p1 溶剂用量(ml) 10 15 20 25 30 35 40 p2 催化剂用量(g) 1.0 1.5 2.0 2.5 3.0 3.5 4.0 t 反应时间(h) 1 2 3 4 5 6 7

研究者按某种试验设计方法选定的因素各水平的组合及其试验结果如下,试用回归分析 方法分析此资料(注∶权重仅为相同试验条件下重复实验运行的次数)。 编号 r p1 p2 t Y(收率,%) 权重 1 0.80 15 2.0 6 71.5 3 2 0.87 25 3.5 5 71.2 2 3 0.94 35 1.5 4 72.8 3 4 1.01 10 3.0 3 69.7 2 5 1.08 20 1.0 2 67.5 3 6 1.15 30 2.5 1 67.3 3 7 1.22 40 4.0 7 71.8 3

[SAS程序]──[D4P17.PRG] OPTIONS PS=70; DATA ex3;

INPUT r p1 p2 t y w; rp1=r*p1; rt=r*t; p1t=p1*t;