精华内容
下载资源
问答
  • 多重共线性问题的几种解决方法在多元线性回归模型经典假设中,其重要假定之一是回归模型的解释变量之间不存在线性关系,也就是说,解释变量X1,X2,……,Xk中的任何一个都不能是其他解释变量的线性组合。...

    多重共线性问题的几种解决方法

    在多元线性回归模型经典假设中,其重要假定之一是回归模型的解释变量之间不存在线性关系,也就是说,解释变量X1,X2,……,Xk中的任何一个都不能是其他解释变量的线性组合。如果违背这一假定,即线性回归模型中某一个解释变量与其他解释变量间存在线性关系,就称线性回归模型中存在多重共线性。多重共线性违背了解释变量间不相关的古典假设,将给普通最小二乘法带来严重后果。

    所谓多重共线性是指线性回归模型的解释变量之间由于存在精确相关关系或者高度相关关系而使模型评估失真或者不准确。这里,我们总结了8个处理多重共线性问题的可用方法,大家在遇到多重共线性问题时可作参考:

    1、保留重要解释变量,去掉次要或可替代解释变量

    自变量之间存在共线性,说明自变量所提供的信息是重叠的,可以删除不重要的自变量减少重复信息。但从模型中删去自变量时应该注意:从实际经济分析确定为相对不重要并从偏相关系数检验证实为共线性原因的那些变量中删除。如果删除不当,会产生模型设定误差,造成参数估计严重有偏的后果。

    2、改变解释变量的形式

    改变解释变量的形式是解决多重共线性的一种简易方法,例如对于横截面数据采用相对数变量,对于时间序列数据采用增量型变量。

    3、差分法

    4、逐步回归分析

    逐步回归(Stepwise Regression)是一种常用的消除多重共线性、选取“最优”回归方程的方法。其做法是将逐个引入自变量,引入的条件是该自变量经F检验是显著的,每引入一个自变量后,对已选入的变量进行逐个检验,如果原来引入的变量由于后面变量的引入而变得不再显著,那么就将其剔除。引入一个变量或从回归方程中剔除一个变量,为逐步回归的一步,每一步都要进行F 检验,以确保每次引入新变量之前回归方程中只包含显著的变量。这个过程反复进行,直到既没有不显著的自变量选入回归方程,也没有显著自变量从回归方程中剔除为止。

    5、主成份分析

    主成分分析作为多元统计分析的一种常用方法在处理多变量问题时具有其一定的优越性,其降维的优势是明显的,主成分回归方法对于一般的多重共线性问题还是适用的,尤其是对共线性较强的变量之间。

    6、偏最小二乘回归

    7、岭回归

    岭回归估计是通过最小二乘法的改进允许回归系数的有偏估计量存在而补救多重共线性的方法,采用它可以通过允许小的误差而换取高于无偏估计量的精度, 因此它接近真实值的可能性较大。灵活运用岭回归法, 可以对分析各变量之间的作用和关系带来独特而有效的帮助。

    8、增加样本容量

    多重共线性问题的实质是样本信息的不充分而导致模型参数的不能精确估计,因此追加样本信息是解决该问题的一条有效途径。但是,由于资料收集及调查的困难,要追加样本信息在实践中有时并不容易。

    这次我们主要研究逐步回归分析方法是如何处理多重共线性问题的。

    逐步回归分析方法的基本思想是通过相关系数r、拟合优度R2和标准误差三个方面综合判断一系列回归方程的优劣,从而得到最优回归方程。具体方法分为两步:

    第一步,先将被解释变量y对每个解释变量作简单回归:

    对每一个回归方程进行统计检验分析(相关系数r、拟合优度R2和标准误差),并结合经济理论分析选出最优回归方程,也称为基本回归方程。

    第二步,将其他解释变量逐一引入到基本回归方程中,建立一系列回归方程,根据每个新加的解释变量的标准差和复相关系数来考察其对每个回归系数的影响,一般根据如下标准进行分类判别:

    1.如果新引进的解释变量使R2得到提高,而其他参数回归系数在统计上和经济理论上仍然合理,则认为这个新引入的变量对回归模型是有利的,可以作为解释变量予以保留。

    2.如果新引进的解释变量对R2改进不明显,对其他回归系数也没有多大影响,则不必保留在回归模型中。

    3.如果新引进的解释变量不仅改变了R2,而且对其他回归系数的数值或符号具有明显影响,则认为该解释变量为不利变量,引进后会使回归模型出现多重共线性问题。不利变量未必是多余的,如果它可能对被解释变量是不可缺少的,则不能简单舍弃,而是应研究改善模型的形式,寻找更符合实际的模型,重新进行估计。如果通过检验证明回归模型存在明显线性相关的两个解释变量中的其中一个可以被另一个很好地解释,则可略去其中对被解释变量影响较小的那个变量,模型中保留影响较大的那个变量。

    下边我们通过实例来说明逐步回归分析方法在解决多重共线性问题上的具体应用过程。

    具体实例

    例1设某地10年间有关服装消费、可支配收入、流动资产、服装类物价指数、总物价指数的调查数据如表1,请建立需求函数模型。

    表1  服装消费及相关变量调查数据

    e22d8bfdde543d867f66a2609b481071.png

    (1)设对服装的需求函数为

    用最小二乘法估计得估计模型:

    模型的检验量得分,R2=0.998,D·W=3.383,F=626.4634

    R2接近1,说明该回归模型与原始数据拟合得很好。由得出拒绝零假设,认为服装支出与解释变量间存在显著关系。

    (2)求各解释变量的基本相关系数

    上述基本相关系数表明解释变量间高度相关,也就是存在较严重的多重共线性。

    (3)为检验多重共线性的影响,作如下简单回归:

    各方程下边括号内的数字分别表示的是对应解释变量系数的t检验值。

    观察以上四个方程,根据经济理论和统计检验(t检验值=41.937最大,拟合优度也最高),收入Y是最重要的解释变量,从而得出最优简单回归方程。

    (4)将其余变量逐个引入,计算结果如下表2:

    表2 服装消费模型的估计

    3eae77f5df4ea0f16c8fc4761c57f79b.png

    结果分析:

    ①在最优简单回归方程中引入变量Pc,使R2由0.9955提高到0.9957;根据经济理论分析,正号,负号是合理的。然而t检验不显著(),而从经济理论分析,Pc应该是重要因素。虽然Y与Pc高度相关,但并不影响收入Y回归系数的显著性和稳定性。依照第1条判别标准,Pc可能是“有利变量”,暂时给予保留。

    ②模型中引入变量L,R2由0.9957提高到0.9959,值略有提高。一方面,虽然Y与L,Pc与L均高度相关,但是L的引入对回归系数、的影响不大(其中的值由0.1257变为0.1387,值由-0.0361变为-0.0345,变化很小);另一方面,根据经济理论的分析,L与服装支出C之间应该是正相关关系,即的符号应该为正号而非负号,依照第2条判别标准,解释变量L不必保留在模型中。

    ③舍去变量L,加入变量P0,使R2由0.9957提高到0.9980,R2值改进较大。、、均显著(这三个回归系数的t检验值绝对值均大于),从经济意义上看也是合理的(服装支出C与Y,P0之间呈正相关,而与服装价格Pc之间呈负相关关系)。根据判别标准第1条,可以认为Pc、P0皆为“有利变量”,给予保留。

    ④最后再引入变量L,此时R2=0.9980没有增加(或几乎没有增加),新引入变量对其他三个解释变量的参数系数也没有产生多大影响,可以确定L是多余变量,根据判别标准第2条,解释变量L不必保留在模型中。

    因此我们得到如下结论:回归模型为最优模型。

    通过以上案例的分析,我们从理论和实际问题两方面具体了解了逐步回归分析是如何对多重共线性问题进行处理的。事实上,一般统计软件如SPSS,在回归模型的窗口中都会提供变量逐步进入的选项,勾选后实际上就是选择了运用逐步回归的思想来构建回归模型。运用SPSS软件不需要我们懂得其背后的运行规律,然而作为分析师,了解并理解模型背后的理论知识,将更有助于我们理解模型、解释结论背后的内在含义,从而达到更好地分析问题的目的。

    喜欢 (2)or分享 (0)

    展开全文
  • 多重共线性

    千次阅读 2019-10-22 15:11:10
    多重共线性定义 一个回归模型中的一些或全部解释变量之间存在一种完全或准确的线性关系。 完全共线性:λ1X1+λ2X2+⋯⋯λkXk=0 不完全共线性:λ1X1+λ2X2+⋯⋯λkXk+νi=0 多重共线性的巴伦坦表示: Q:为...

    多重共线性定义

    一个回归模型中的一些或全部解释变量之间存在一种完全或准确的线性关系。

    完全共线性:λ1X1+λ2X2+⋯⋯λkXk=0

    不完全共线性:λ1X1+λ2X2+⋯⋯λkXk+νi=0

    多重共线性的巴伦坦表示:

     

    Q: 为什么在经典回归模型中要假定无多重共线性?

    A: 如果解释变量之间存在完全多重共线性,那么,解释变量之间的回归系数将是不确定的,并且他们的标准差为无限大。如果解释变量之间的的多重共线性是不完全的,那么虽然回归系数可以确定,但却有较大的标准误差,即系数不能以很高的精度或准确度加以估计。

     

    多重共线性的产生原因

    1. 数据采集所用的方法;

    例如,抽样局限于总体中诸回归元所取值的一个有限的范围内

    2. 模型或从中取样的总体受到约束;

    3. 模型设定;

    4. 一个过度决定的模型;

    5. 回归元具有相同的时间趋势,即同时随着时间增减。

     

    如何识别多重共线性

    a. 多重共线性最明显的信号是R2 异常高而回归系数在通常 t 检验的基础上却没有一个是统计上显著的。

    b. 在仅有两个解释变量的模型中,检查两个变量之间的零阶或简单相关系数,会得到对共线性一个相当好的认识。如果此相关值高,则通常可归咎于多重共线性。

    c. 然而,当模型设计多于两个X解释变量时,低的零阶相关却可能给出高的多重共线性。对于这种情形,也许有必要检查偏相关系数。

    d. 如果 R2 高而偏相关低,则多重共线性是可能的。这时一个或多个的变量可能是多于的。但若 R2 高且偏相关也高,则多重共线性也许不易识破。

    e. 因此,不妨拿模型中的每一 Xi 变量对所有其余 X 变量做一个回归,并求出相应的判定系数R2i。一个高的R2i 将表明Xi 和其余的X 高度相关,从而可考虑把 Xi 从模型中清除出去。

     

    如何解决多重共线性问题

    1. 先验信息;

    2. 横截面和时间序列数据并用;

    3. 剔除变量和设定错误;

    4. 变量代换;

    5. 补充新数据;

    6. 在多项式回归中降低共线性;

    7. 一些其他方法例如-----因子分析,主元法或脊回归。

    ----------------------------------------------------------

    拓展阅读:

    1.一个量化策略师的自白(好文强烈推荐)

    2.市面上经典的量化交易策略都在这里了!(源码)

    3.量化交易领域最重要的10本参考书推荐!

    4.期货/股票数据大全查询(历史/实时/Tick/财务等)

    5.如何设计量化交易策略?

    6.量化交易干货汇总,很干!

    展开全文
  • Multicolliearity多重共线性 而所谓的多重共线性,是指 predictor variable 之间的关系,当预测变量间有很高的相关度时,会造成信息冗余,影响回归模型的结果。 检测的方法是计算所有 predictor variable pairs 间...

    Multicolliearity多重共线性

    而所谓的多重共线性,是指 predictor variable 之间的关系,当预测变量间有很高的相关度时,会造成信息冗余,影响回归模型的结果。

    检测的方法是计算所有 predictor variable pairs 间的相关系数,如果有为 1 或者 -1 的,说明两变量间,高度相关,此时应该干掉一个。

     

     

    共线性出现的原因:

     

    多重共线性问题就是说一个解释变量的变化引起另一个解释变量地变化。

    原本自变量应该是各自独立的变量,这样根据检验结果,就能得知哪些因素对因变量Y有显著影响,哪些没有影响。如果各个自变量x之间有很强的线性关系,就无法固定其他变量,也就找不到x和y之间真实的关系了。

     

    逐步回归(Stepwise Regression)是常用的消除多重共线性、选择“最佳”模型的方法,其本质上在解释变量中筛选对因变量有显著影响的变量,已达到最优。逐步回归法在筛选变量方面较为理想,克服了变量多重共线性和解释的优良有效性,在地学、气象、材料和医学等领域应用广泛。

    多重共线性问题,如何解决? 

    在进行线性回归分析时,容易出现自变量(解释变量)之间彼此相关,这种情况被称作多重共线性问题。

    适度的多重共线性不成问题,但当出现严重共线性问题时,可能导致分析结果不稳定,出现回归系数的符号与实际情况完全相反的情况。本应该显著的自变量不显著,本不显著的自变量却呈现出显著性,这种情况下就需要消除多重共线性的影响。

    除此以外,多重共线性的原因还可能包括:

    • 数据不足。在某些情况下,收集更多数据可以解决问题。
    • 错误地使用虚拟变量。(比如,同时将男、女两个虚拟变量都放入模型,此时必定出现共线性,称为完全共线性)

     

    共线性的判别指标:

    1、方差膨胀因子(VIF)

    有多种方法可以检测多重共线性,较常使用的是回归分析中的VIF值,VIF值越大,多重共线性越严重。一般认为VIF大于10时(严格是5),代表模型存在严重的共线性问题。

    2、容差值

    也有时候会以容差值作为标准,容差值=1/VIF,所以容差值大于0.1则说明没有共线性(严格是大于0.2),VIF和容差值有逻辑对应关系,两个指标任选其一即可。

    3、相关系数

    除此之外,直接对自变量进行相关分析,查看相关系数和显著性也是一种判断方法。如果一个自变量和其他自变量之间的相关系数显著,则代表可能存在多重共线性问题。

    多重共线性处理方法

    多重共线性是普遍存在的,通常情况下,如果共线性情况不严重(VIF<5),不需要做特别的处理。如存在严重的多重共线性问题,可以考虑使用以下几种方法处理:

    1. 手动移除出共线性的变量

    先做下相关分析,如果发现某两个自变量X(解释变量)的相关系数值大于0.7,则移除掉一个自变量(解释变量),然后再做回归分析。此方法是最直接的方法,但有的时候我们不希望把某个自变量从模型中剔除,这样就要考虑使用其他方法。

    2. 逐步回归法

    让软件自动进行自变量的选择剔除,逐步回归会将共线性的自变量自动剔除出去。此种解决办法有个问题是,可能算法会剔除掉本不想剔除的自变量,如果有此类情况产生,此时最好是使用岭回归进行分析。SPSS中有对应的方法和模型。

    3. 增加样本容量

    增加样本容量是解释共线性问题的一种办法,但在实际操作中可能并不太适合,原因是样本量的收集需要成本时间等。

    4. 岭回归

    上述第1和第2种解决办法在实际研究中使用较多,但问题在于,如果实际研究中并不想剔除掉某些自变量,某些自变量很重要,不能剔除。此时可能只有岭回归最为适合了。岭回归是当前解决共线性问题最有效的解释办法。

    其他说明

    1. 多重共线性是普遍存在的,轻微的多重共线性问题可不采取措施,如果VIF值大于10说明共线性很严重,这种情况需要处理,如果VIF值在5以下不需要处理,如果VIF介于5~10之间视情况而定。

    2. 如果模型仅用于预测,则只要拟合程度好,可不处理多重共线性问题,存在多重共线性的模型用于预测时,往往不影响预测结果。

    所谓多重共线性是:在多元线性回归模型经典假设中,其重要假定之一是回归模型的解释变量之间不存在线性关系,也就是说,解释变量X1,X2,……,Xk中的任何一个都不能是其他解释变量的线性组合。如果违背这一假定,即线性回归模型中某一个解释变量与其他解释变量间存在线性关系,就称线性回归模型中存在多重共线性。多重共线性违背了解释变量间不相关的古典假设,将给普通最小二乘法带来严重后果。

     所谓多重共线性是指线性回归模型的解释变量之间由于存在精确相关关系或者高度相关关系而使模型评估失真或者不准确。这里,我们总结了8个处理多重共线性问题的可用方法,大家在遇到多重共线性问题时可作参考:

    1、保留重要解释变量,去掉次要或可替代解释变量

    自变量之间存在共线性,说明自变量所提供的信息是重叠的,可以删除不重要的自变量减少重复信息。但从模型中删去自变量时应该注意:从实际经济分析确定为相对不重要并从偏相关系数检验证实为共线性原因的那些变量中删除。如果删除不当,会产生模型设定误差,造成参数估计严重有偏的后果。

    2、改变解释变量的形式

        改变解释变量的形式是解决多重共线性的一种简易方法,例如对于横截面数据采用相对数变量,对于时间序列数据采用增量型变量。

    3、差分法

    4、逐步回归分析

    逐步回归(Stepwise Regression)是一种常用的消除多重共线性、选取“最优”回归方程的方法。其做法是将逐个引入自变量,引入的条件是该自变量经F检验是显著的,每引入一个自变量后,对已选入的变量进行逐个检验,如果原来引入的变量由于后面变量的引入而变得不再显著,那么就将其剔除。引入一个变量或从回归方程中剔除一个变量,为逐步回归的一步,每一步都要进行F 检验,以确保每次引入新变量之前回归方程中只包含显著的变量。这个过程反复进行,直到既没有不显著的自变量选入回归方程,也没有显著自变量从回归方程中剔除为止。

    5、主成份分析

    主成分分析作为多元统计分析的一种常用方法在处理多变量问题时具有其一定的优越性,其降维的优势是明显的,主成分回归方法对于一般的多重共线性问题还是适用的,尤其是对共线性较强的变量之间。

    6、偏最小二乘回归

    7、岭回归

    岭回归估计是通过最小二乘法的改进允许回归系数的有偏估计量存在而补救多重共线性的方法,采用它可以通过允许小的误差而换取高于无偏估计量的精度, 因此它接近真实值的可能性较大。灵活运用岭回归法, 可以对分析各变量之间的作用和关系带来独特而有效的帮助。

    8、增加样本容量

    多重共线性问题的实质是样本信息的不充分而导致模型参数的不能精确估计,因此追加样本信息是解决该问题的一条有效途径。但是,由于资料收集及调查的困难,要追加样本信息在实践中有时并不容易。

    多重共线性是使用线性回归算法时经常要面对的一个问题。在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能;后者干脆假定变量之间是相互独立的,因此从表面上看,也没有多重共线性的问题。但是对于回归算法,不论是一般回归,逻辑回归,或存活分析,都要同时考虑多个预测因子,因此多重共线性是不可避免需要面对的,在很多时候,多重共线性是一个普遍的现象。在构造预测模型时如何处理多重共线性是一个比较微妙的议题。既不能不加控制,又不能一刀切,认为凡是多重共线性就应该消除。

    方差膨胀因子(variance inflation factor,VIF)

    共线性问题的解决方法

    根据上一节的描述,共线性问题有如下几种检验方法:

    • 。检验变量之间的相关系数;
    • VIF。当VIF大于5或10时,代表模型存在严重的共线性问题;
    • 。当条件数大于100、1000时,代表模型存在严重的共线性问题。

    当变量数不多,样本数不是很大时,上述的方法是没问题的,检验某个变量有共线性问题时,可以结合实际业务考虑直接剔除该变量。但是有的时候变量数大到有上千个,VIF的计算需要建立上千个回归模型(条件数仅能判定是否存在共线性,但不能找到对应的变量),这将耗费很长时间。

    事实上我们可以从模型角度来直接规避共线性问题。

    2.1 PCA等降维法

    主成分分析法作为多元统计分析的一种常用方法在处理多变量问题时具有其一定的优越性,其降维的优势是明显的,主成分回归方法对于一般的多重共线性问题还是适用的,尤其是对共线性较强的变量之间。当采取主成分提取了新的变量后,往往这些变量间的组内差异小而组间差异大,起到了消除共线性的问题。

    2.2 逐步回归法

    逐步回归(Stepwise Regression)是一种常用的消除多重共线性、选取“最优”回归方程的方法。其做法是将逐个引入自变量,引入的条件是该自变量经F检验是显著的,每引入一个自变量后,对已选入的变量进行逐个检验,如果原来引入的变量由于后面变量的引入而变得不再显著,那么就将其剔除。引入一个变量或从回归方程中剔除一个变量,为逐步回归的一步,每一步都要进行F 检验,以确保每次引入新变量之前回归方程中只包含显著的变量。这个过程反复进行,直到既没有不显著的自变量选入回归方程,也没有显著自变量从回归方程中剔除为止。

    • t检验和拟合度依次加入各变量来构建回归方程

    2.3 岭回归、L2正则化(ridge regression

    岭回归是一种可用于共线性数据分析的有偏估计回归方法,它是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对条件数很大(病态数据)的拟合要强于最小二乘法。

    在线性回归问题中,最小二乘法实际上是最小化问题:

    。。。。

    而岭回归则是加入了L2惩罚项:

    2.4 LASSO回归

    LASSO回归和岭回归类似,只不过将惩罚项由L2范数改为了L1范数

    。。。。

    L1范数没有L2范数那么圆润,毕竟存在不可导点,而且在L1范数下LASSO回归也给不出解析解啦,但是相对于岭回归,LASSO估计的参数能更容易收敛到0。

    2.5 ElasticNet回归等

    ElasticNet回归同时兼顾了L1和L2惩罚项:

    3、Python实践

    首先捏造一份好的数据,样本量为100,特征数为8,且满足方程:

    其中误差项是期望为0,标准差为1.5的正态分布随机变量。

    import numpy as np
    from sklearn.linear_model import LinearRegression
    from sklearn import cross_validation
    
    coef0=np.array([5,6,7,8,9,10,11,12])
    X1=np.random.rand(100,8)
    y=np.dot(X1,coef0)+np.random.normal(0,1.5,size=100)
    training=np.random.choice([True,False],p=[0.8,0.2],size=100)
    lr1=LinearRegression()
    lr1.fit(X1[training],y[training])
    # 系数的均方误差MSE
    print(((lr1.coef_-coef0)**2).sum()/8)
    # 测试集准确率(R2)
    print(lr1.score(X1[~training],y[~training]))
    # 平均测试集准确率
    print(cross_validation.cross_val_score(lr1,X1,y,cv=5).mean())

    此时平均准确率为0.934955,拟合的系数MSE为0.203657

    然后我们基于这份数据另外构造出两份数据,第二份数据增加两个随机的特征用作对比,第一份数据则增加两个共线性特征:

    X2=np.column_stack([X1,np.dot(X1[:,[0,1]],np.array([1,1]))+np.random.normal(0,0.05,size=100)])
    X2=np.column_stack([X2,np.dot(X2[:,[1,2,3]],np.array([1,1,1]))+np.random.normal(0,0.05,size=100)])
    X3=np.column_stack([X1,np.random.rand(100,2)])

    先来看下它们的条件数

    
    >>>print(np.linalg.cond(X1))
    >>>print(np.linalg.cond(X2))
    >>>print(np.linalg.cond(X3))
    6.29077685383
    110.930612408
    7.25066276479

    可以看到X2的条件数很搭,最小奇异值为0.213,此时还不至于完全共线性。

    拿这两份数据重新用线性回归拟合模型。

    lr2=LinearRegression()
    lr2.fit(X2[training],y[training])
    # 系数的均方误差MSE
    print(((lr2.coef_[:8]-coef0)**2).sum()/8)
    # 测试集准确率(R2)
    print(lr2.score(X2[~training],y[~training]))
    # 平均测试集准确率
    print(cross_validation.cross_val_score(lr2,X2,y,cv=5).mean())
    
    
    lr3=LinearRegression()
    lr3.fit(X3[training],y[training])
    # 系数的均方误差MSE
    print(((lr3.coef_[:8]-coef0)**2).sum()/8)
    # 测试集准确率(R2)
    print(lr3.score(X3[~training],y[~training]))
    # 平均测试集准确率
    print(cross_validation.cross_val_score(lr3,X3,y,cv=5).mean())

    对于第二份共线性构造数据X2,有平均测试集准确率为0.932070,拟合的参数MSE为7.697837。可以看到MSE增加了很多,准确率也下降了0.2%,测试拟合的系数为:

    >>>print(lr2.coef_) [ 10.506618 11.467777 6.35562175 7.56698262 9.44509206 9.81032939 11.66187822 12.29728702 -5.07439399 0.02649089]

    在来看对比用的数据X3,其平均测试集准确率为0.934952,参数MSE为0.171651,与X1无异。

    以上是直接的结果,我们再来看VIF

    import matplotlib.pyplot as plt
    vif2=np.zeros((10,1))
    for i in range(10):
        tmp=[k for k in range(10) if k!=i]
        clf.fit(X2[:,tmp],X2[:,i])
        vifi=1/(1-clf.score(X2[:,tmp],X2[:,i]))
        vif2[i]=vifi
    
    vif3=np.zeros((10,1))
    for i in range(10):
        tmp=[k for k in range(10) if k!=i]
        clf.fit(X3[:,tmp],X3[:,i])
        vifi=1/(1-clf.score(X3[:,tmp],X3[:,i]))
        vif3[i]=vifi  
    plt.figure()
    ax = plt.gca()
    ax.plot(vif2)
    ax.plot(vif3)
    plt.xlabel('feature')
    plt.ylabel('VIF')
    plt.title('VIF coefficients of the features')
    plt.axis('tight')
    plt.show()
    
    

    可以看到第0、1、2、3、8、9个特征的VIF都过高。且可以看出第1个特征相对第0、2、3个特征的VIF较高。

     

    最后我们试着用模型的方法来检测共线性问题

    from sklearn.linear_model import Ridge
    plt.figure()
    n_alphas = 20
    alphas = np.logspace(-1,4,num=n_alphas)
    coefs = []
    for a in alphas:
        ridge = Ridge(alpha=a, fit_intercept=False)
        ridge.fit(X2, y)
        coefs.append(ridge.coef_)
    ax = plt.gca()
    ax.plot(alphas, coefs)
    ax.set_xscale('log')
    handles, labels = ax.get_legend_handles_labels()
    plt.legend(labels=[0,1,2,3,4,5,6,7,8,9])
    plt.xlabel('alpha')
    plt.ylabel('weights')
    plt.title('Ridge coefficients as a function of the regularization')
    plt.axis('tight')
    plt.show()

    岭回归各个系数的岭迹

    其中当alpha取0.1时,岭回归估计的系数分别为

    >>>print(coefs[0]) [  2.70748655   0.95748918   3.53687372   5.2073456    8.70186695   9.84484102  10.67351759  11.74614246   2.46502016   3.19919212]

    可以看到第0、1、2、3、8、9个变量都出现了波动,代表它们之间存在一定的共线性。观察岭迹,我们可以考虑剔除其中波动比较大的第1、8、9个变量。

    另外Lasso回归类似,可以用sklearn中的linear_model.Lasso来学习,这里就不展示了。最后对于逻辑回归任务,sklearn函数内部提供了L1或L2正则化方案,通过它们也可以去检测共线性问题。

    What is the problem with Multicollinearity?

    Multicollinearity occurs when independent variables in a regression model are correlated. This correlation is a problem because independent variables should be independent. If the degree of correlation between variables is high enough, it can cause problems when you fit the model and interpret the results.

    Multicollinearity: Definition, Causes, Examples

    What is Multicollinearity?

    Multicollinearity can adversely affect your regression results.

    Multicollinearity generally occurs when there are high correlations between two or more predictor variables. In other words, one predictor variable can be used to predict the other. This creates redundant information, skewing the results in a regression model. Examples of correlated predictor variables (also called multicollinear predictors) are: a person’s height and weight, age and sales price of a car, or years of education and annual income.

    An easy way to detect multicollinearity is to calculate correlation coefficients for all pairs of predictor variables. If the correlation coefficient, r, is exactly +1 or -1, this is called perfect multicollinearity. If r is close to or exactly -1 or +1, one of the variables should be removed from the model if at all possible.

    It’s more common for multicollineariy to rear its ugly head in observational studies; it’s less common with experimental data. When the condition is present, it can result in unstable and unreliable regression estimates. Several other problems can interfere with analysis of results, including:

    1. t-statistic will generally be very small and coefficient confidence intervals will be very wide. This means that it is harder to reject the null hypothesis.
    2. partial regression coefficient may be an imprecise estimate; standard errors may be very large.
    1. regression coefficients may have sign and/or magnitude changes as they pass from sample to sample.
    2. makes it difficult to gauge the effect of independent variables on dependent variables.

    What Causes Multicollinearity?

    The two types are:

    1. multicollinearity: caused by poorly designed experiments, data that is 100% observational, or data collection methods that cannot be manipulated. In some cases, variables may be highly correlated (usually due to collecting data from purely observational studies) and there is no error on the researcher’s part. For this reason, you should conduct experiments whenever possible, setting the level of the predictor variables in advance.
    1. multicollinearity: caused by you, the researcher, creating new predictor variables.

    Causes for multicollinearity can also include:

    1. data. In some cases, collecting more data can resolve the issue.
    1. variables may be incorrectly used. For example, the researcher may fail to exclude one category, or add a dummy variable for every category (e.g. spring, summer, autumn, winter).
    1. a variable in the regression that is actually a combination of two other variables. For example, including “total investment income” when total investment income = income from stocks and bonds + income from savings interest.
    2. two identical (or almost identical) variables. For example, weight in pounds and weight in kilos, or investment income and savings/bond income.

     

    参考:讲讲共线性问题

    参考:多重共线性问题的几种解决方法

    参考:多重共线性诊断及处理

    参考:Multicollinearity in Regression Analysis: Problems, Detection, and Solutions

    参考:多重共线性问题,如何解决?

    展开全文
  • 多重共线性详解

    千次阅读 2020-12-26 23:04:23
    目录 1、多重共线性的现象 2、出现的原因 3、判别标准 4、检验方法 5、多重共线性有什么影响 6、多重共线性处理方法 7、其他说明 8、多重共线性识别-python代码8.1、vif检验8.2 相关系数8.3 聚类 9、宏观把握共线性...

    解释变量与自变量,被解释变量与因变量

    Y=aX+b
    解释变量被解释变量看,Y是被X解释的变量。因此,X是解释变量,Y是被解释变量。
    自变量因变量看,X是自身变量的量,Y是随着X变化而变化的量。因此,X是自变量,Y是因变量。

    1、多重共线性的现象

    在进行线性回归分析时,容易出现自变量(解释变量)之间彼此相关的现象,我们称这种现象为多重共线性

    适度的多重共线性不成问题,但当出现严重共线性问题时,会导致分析结果不稳定,出现回归系数的符号与实际情况完全相反的情况。
    本应该显著的自变量不显著,本不显著的自变量却呈现出显著性,这种情况下就需要消除多重共线性的影响。

    2、出现的原因

    多重共线性问题就是指一个解释变量的变化引起另一个解释变量的变化。

    原本自变量应该是各自独立的,根据回归分析结果能得知哪些因素对因变量Y有显著影响,哪些没有影响。

    如果各个自变量x之间有很强的线性关系,就无法固定其他变量,也就找不到x和y之间真实的关系了。

    除此以外,多重共线性的原因还可能包括:

    • 数据不足。 (在某些情况下,收集更多数据可以解决共线性问题)
    • 错误地使用虚拟变量。(比如,同时将男、女两个虚拟变量都放入模型,此时必定出现共线性,称为完全共线性)
    • 自变量都享有共同的时间趋势
    • 一个自变量是另一个的滞后,二者往往遵循一个趋势
    • 由于数据收集的基础不够宽,某些自变量可能会一起变动

    3、判别标准

    有多种方法可以检测多重共线性,较常使用的是回归分析中的VIF——方差扩大因子(variance inflation factor)值,VIF值越大,多重共线性越严重。一般认为VIF大于10时(严格是5),代表模型存在严重的共线性问题。

    有时候也会以容差值作为标准,容差值=1/VIF,所以容差值大于0.1则说明没有共线性(严格是大于0.2),VIF和容差值有逻辑对应关系,两个指标任选其一即可。

    除此之外,

    • 直接对自变量进行相关分析,查看相关系数和显著性也是一种判断方法。如果一个自变量和其他自变量之间的相关系数显著,则代表可能存在多重共线性问题。
    • 发现系数估计值的符号不对
    • 某些重要的解释变量 t 值(SPSS中T的数值对回归参数的显著性检验值)低,而不低
    • 当一不太重要的解释变量被删除后回归结果显著变化;

    4、检验方法

    1. 相关性分析,相关系数高于0.8,表明存在多重共线性;但相关系数低,并不能表示不存在多重共线性;(摘抄《计量经济学中级教程》潘省初主编)
    2. vif检验
    3. 条件系数检验

    5、多重共线性有什么影响

    共线性会导致回归参数不稳定,即增加或删除一个样本点或特征,回归系数的估计值会发生很大变化。

    这是因为某些解释变量之间存在高度相关的线性关系,XTX会接近于奇异矩阵,即使可以计算出其逆矩阵,逆矩阵对角线上的元素也会很大,这就意味着参数估计的标准误差较大,参数估计值的精度较低,这样,数据中的一个微小的变动都会导致回归系数的估计值发生很大变化。

    总结共线性对线性模型影响:

    • 回归模型缺乏稳定性。样本的微小扰动都可能带来参数很大的变化;
    • 难以区分每个解释变量的单独影响;
    • 参数的方差增大;
    • 变量的显著性检验失去意义;
    • 影响模型的泛化误差。

    6、多重共线性处理方法

    多重共线性是普遍存在的,通常情况下,如果共线性情况不严重(VIF<5),不需要做特别的处理。如存在严重的多重共线性问题,可以考虑使用以下几种方法处理

    1. 手动移除出共线性的变量
      先做下相关分析,如果发现某两个自变量X(解释变量)的相关系数值大于0.7,则移除掉一个自变量(解释变量),然后再做回归分析。此方法是最直接的方法,但有的时候我们不希望把某个自变量从模型中剔除,这样就要考虑使用其他方法。
    2. 逐步回归法
      让系统自动进行自变量的选择剔除,使用逐步回归分析将共线性的自变量自动剔除出去。此种解决办法有个问题是,可能算法会剔除掉本不想剔除的自变量,如果有此类情况产生,此时最好是使用岭回归进行分析。
    3. 增加样本容量
      增加样本容量是解释共线性问题的一种办法,但在实际操作中可能并不太适合,原因是样本量的收集需要成本时间等。
    4. 岭回归
      上述第1和第2种解决办法在实际研究中使用较多,但问题在于,如果实际研究中并不想剔除掉某些自变量,某些自变量很重要,不能剔除。此时可能只有岭回归最为适合了。岭回归可以减小参数估计量的方差,是当前解决共线性问题最有效的解释办法。

    岭回归是一种改良的最小二乘法,其通过放弃最小二乘法的无偏性,以损失部分信息为代价来寻找效果稍差但回归系数更符合实际情况的模型方程。针对共线性的病态数据,岭回归的耐受性远强于普通线性最小二乘法回归。

    其他方法:

    • 对模型施加某些约束条件

    • 将模型适当变形

    • 差分法
      时间序列数据、线性模型:将原模型变换为差分模型。

    • 主成分分析(PCA)

    • 简单相关系数检验法

    • 变量聚类、方差膨胀因子vif、相关系数、L1 L2正则化:在特征比较多的时候,先变量聚类,每类中选择单特征比较强的,也可以根据1-r²小的选择有代表性的特征(r²表示的是其他变量能否线性解释的部分,1-r²表示的是容忍度,也就是其他变量不能解释的部分;变量聚类是多选一,因此需要选择一个具有代表性的变量,选择容忍度小的变量;另vif就是容忍度的倒数); 在变量聚类的步骤中也可以结合 方差膨胀因子、相关系数以及业务理解来筛选特征; vif选择多少合适(一般样本集在10w以上VIF>10就有严重的共线性问题了,样本集在10w以下,VIF>5也是严重的共线性问题。在小样本时,一般保证在2以下。当然,这也不能保证一定排除了,最后在检验下模型参数,判断是否仍旧存在共线性)

      检验模型参数

      • 看模型系数,和实际业务是否相符合。(注:在进行完证据权重转化后,系数正负,不在具有实际的业务意义。当woe是好客户占比/坏客户占比时,系数都为负,反之系数都为正。(相关原因可以公式推导))
      • 模型R^2较高,通过F检验,系数不能通过t检验

    7、其他说明

    1. 多重共线性是普遍存在的,轻微的多重共线性问题可不采取措施,如果VIF值大于10说明共线性很严重,这种情况需要处理,如果VIF值在5以下不需要处理,如果VIF介于5~10之间视情况而定
    2. 如果模型仅用于预测,则只要拟合程度好,可不处理多重共线性问题,存在多重共线性的模型用于预测时,往往不影响预测结果。(这个“往往不影响预测结果”结论小编自己觉得前提条件“拟合程度好”很重要,小编觉得可能还是有些许影响的,有查到一些论文《多重共线性的检验及对预测目标影响程度的定量分析
      在这里插入图片描述 3. 解释变量理论上的高度相关与观测值高度相关没有必然关系,有可能两个解释变量理论上高度相关,但观测值未必高度相关,反之亦然。所以多重共线性本质上是数据问题
    3. 严重的多重共线性问题,一般可根据经验或通过分析回归结果发现。如影响系数符号,重要的解释变量t值(对回归参数的显著性检验值)很低。要根据不同情况采取必要措施。

    8、多重共线性识别-python代码

    8.1、vif检验

    目前业界检验共线性最常用的方法是VIF检验。VIF越高,多重共线性的影响越严重。

    两种方式,一种方式是直接掉包(https://zhuanlan.zhihu.com/p/56793236?utm_source=qq),另一种方式是自己写的函数,两个结果一致。

    import pandas as pd
    import numpy as np
    #数据
    df = pd.DataFrame([[15.9,16.4,19,19.1,18.8,20.4,22.7,26.5,28.1,27.6,26.3]
                         ,[149.3,161.2,171.5,175.5,180.8,190.7,202.1,212.1,226.1,231.9,239]
                         ,[4.2,4.1,3.1,3.1,1.1,2.2,2.1,5.6,5,5.1,0.7]
                         ,[108.1,114.8,123.2,126.9,132.1,137.7,146,154.1,162.3,164.3,167.6]]).T
    columns = ["var1","var2","var3","var4"]
    df.columns=columns
    
    
    #方式1:直接调包
    #def_function
    def calulate_vif(X):
        from statsmodels.stats.outliers_influence import variance_inflation_factor
        #✨✨✨务必注意✨✨✨,一定要加上常数项,#如果没有常数项列,计算结果天差地别,可能VIF等于好几千
        X[X.shape[1]]=1
        #vif
        vif=[]
        for i in range(X.shape[1]-1):
            #计算第i+1个变量的(第i+1列)的方差膨胀因子
            vif.append(variance_inflation_factor(X.values,i))
        #result_out
        yy=pd.DataFrame(X.columns[:-1,])
        yy.rename(columns={0:"var_name"},inplace=True) 
        yy["vif"]=vif
        print(yy)
    
    #call
    calulate_vif(df[["var1","var2","var3","var4"]])
    
    
    #函数2:自定义函数,结果与调包的结果一致
    #def_function
    def calulate_vif2(x_data):
        var_name=pd.DataFrame(x_data.columns)
        var_name.rename(columns={0:"var_name"},inplace=True)
        vif=[]
        for i in range(x_data.shape[1]):
            y=x_data.loc[:,x_data.columns[i]] 
            y.values.reshape(-1,1)    
            x=x_data.drop([x_data.columns[i]],axis=1)   
            x.values.reshape(-1,1)
    
            model=linear.fit(x,y)
            R_2=linear.score(x,y)
            vif_re=1/(1-R_2)
            vif.append(vif_re)
        var_name["vif"]=vif
        print(var_name)
    
    #call
    calulate_vif2(df[["var1","var2","var3","var4"]])
    

    8.2 相关系数

    #生成数据集
    df = pd.DataFrame([[15.9,16.4,19,19.1,18.8,20.4,22.7,26.5,28.1,27.6,26.3]
                         ,[149.3,161.2,171.5,175.5,180.8,190.7,202.1,212.1,226.1,231.9,239]
                         ,[4.2,4.1,3.1,3.1,1.1,2.2,2.1,5.6,5,5.1,0.7]
                         ,[108.1,114.8,123.2,126.9,132.1,137.7,146,154.1,162.3,164.3,167.6]]).T
    columns = ["var1","var2","var3","var4"]
    df.columns=columns
    
    
    def calulate_cor(cor_data):
        # calculate pearson cor
        coefficient1 =cor_data.corr(method = 'pearson')
        print(coefficient1)
        # Plot
        plt.figure(figsize=(12,10), dpi= 80)
        sns.heatmap(cor_data.corr(), xticklabels=cor_data.corr().columns, yticklabels=cor_data.corr().columns, cmap='RdYlGn', center=0, annot=True)
        # Decorations
        plt.title('Correlogram of mtcars', fontsize=22)
        plt.xticks(fontsize=12)
        plt.yticks(fontsize=12)
        plt.show()
        
    calulate_cor(df[["var1","var2","var3","var4"]])
    

    输出结果为:在这里插入图片描述

    8.3 聚类

    可能不是很好用

    #生成数据集
    df = pd.DataFrame([[15.9,16.4,19,19.1,18.8,20.4,22.7,26.5,28.1,27.6,26.3]
                         ,[149.3,161.2,171.5,175.5,180.8,190.7,202.1,212.1,226.1,231.9,239]
                         ,[4.2,4.1,3.1,3.1,1.1,2.2,2.1,5.6,5,5.1,0.7]
                         ,[108.1,114.8,123.2,126.9,132.1,137.7,146,154.1,162.3,164.3,167.6]]).T
    columns = ["var1","var2","var3","var4"]
    df.columns=columns
    
    #方式一:
    def var_cluster(clusterNum,cluster_data):
        from scipy.cluster.vq import vq,kmeans,whiten
        transed=whiten(np.array(cluster_data.T))  #归一化
        transed
        #cluster
        model = kmeans(transed,clusterNum)
        #cluster_result
        result = vq(transed,model[0])[0]
        result
        #result_out
        aa=pd.DataFrame(cluster_data.columns)
        aa.rename(columns={0:"var_name"},inplace=True)  
        bb=pd.DataFrame(result)
        bb.rename(columns={0:"cluster"},inplace=True)
        var_cluster=pd.concat([aa,bb],axis=1)
        var_cluster.sort_values(by=["cluster"],ascending=(True),inplace=True)
        print(var_cluster)
    
    #call   
    var_cluster(2,df[["var1","var2","var3","var4"]])
    
    
    #方式二:
    def var_cluster2(clusterNum,cluster_data):
        import numpy as np
        from sklearn.cluster import KMeans
    
        #array
        transed=np.array(cluster_data.T)
        #model_fit
        kmeans=KMeans(n_clusters=clusterNum).fit(transed)
        pred=kmeans.predict(transed)
        print(pred)
    
        #result_out
        aa=pd.DataFrame(cluster_data.columns)
        aa.rename(columns={0:"var_name"},inplace=True)  
        bb=pd.DataFrame(pred)
        bb.rename(columns={0:"cluster"},inplace=True)
    
        var_cluster=pd.concat([aa,bb],axis=1)
        var_cluster.sort_values(by=["cluster"],ascending=(True),inplace=True)
        print(var_cluster)
    
    #call 
    var_cluster2(2,df[["var1","var2","var3","var4"]])
    

    参考:

    • https://zhuanlan.zhihu.com/p/72722146
    • https://zhuanlan.zhihu.com/p/96793075
    • https://zhuanlan.zhihu.com/p/146298015

    9、宏观把握共线性问题

    参考:https://zhuanlan.zhihu.com/p/88025370

    9.1、共线性的一般性的影响

    太多相关度很高的特征并没有提供太多的信息量,并没有提高数据可以达到的上限,相反,数据集拥有更多的特征意味着更容易收到噪声的影响,更容易收到特征偏移的影响等等。

    简单举个例子

    N个特征全都不受到到内在或者外在因素干扰的概率为k,则2N个特征全部不受到内在或外在因素干扰的概率必然远小于k。这个问题实际上对于各类算法都存在着一定的不良影响。

    9.2、共线性对线性回归、逻辑回归的影响

    逻辑回归的梯度更新公式用代码表示为:

    weights = weights - alpha * dataMatrix.transpose()* error
    

    其中alpha为学习率,dataMatrix.transpose()为原始数据的矩阵,error=y_pred-y_true

    从这里可以看出,共线性问题对于逻辑回归损失函数的最优化没影响,参数都是一样更新,一样更新到收敛为止。所以对于预测来说没什么影响。

    那共线性会引发的问题

    1. 模型参数估计不准确,有时甚至会出现回归系数的符号与实际情况完全相反的情况,比如逻辑上应该系数为正的特征系数 算出来为负;
    2. 本应该显著的自变量不显著,本不显著的自变量却呈现出显著性(也就是说,无法从p-值的大小判断出变量是否显著——下面会给一个例子);
    3. 多重共线性使参数估计值的方差增大,模型参数不稳定,也就是每次训练得到的权重系数差异都比较大

    其实多重共线性这样理解会简单很多:

    > 假设原始的线性回归公式为:y=w1*x1+w2*x2+w3*x3
    > 训练完毕的线性回归公式为:y=5x1+7x2+10x3
    > 此时加入一个新特征x4,假设x4和x3高度相关,x4=2x3,则:
    > y=w1*x1+w2*x2+w3*x3+w4*x4=w1*x1+w2*x2+(w3+2w4)*x3
    > 因为我们之前拟合出来的最优的回归方程为:y=5x1+7x2+10x3
    > 显然w3+2w4可以合并成一个新的权重稀疏 w5,则:y=w1*x1+w2*x2+w5*x3
    > 显然:y=w1*x1+w2*x2+w3*x3和y=w1*x1+w2*x2+w5*x3是等价的。
    > 那么最终最优的模型应该也是 y=5x1+7x2+10x3
    > 但是考虑到引入了x4,所以w4和w3的权重是分开计算出来的,这就导致了w5=10=w3+2w4,
    > 显然这个方程有无穷多的解,比如w3=4,w4=3,或者w4=-1,w3=12等,
    > 因此导致了模型系数估计的不稳定并且可能会出现负系数的问题。
    

    10、statsmodel库

    statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化。statsmodels包含更多的“经典”频率学派统计方法。

    总结:https://blog.csdn.net/zm147451753/article/details/83107535

    statsmodel的检验项目比较全面,实际上逻辑回归与线性回归比我们想象的要复杂。

    DF Residuals:残差的自由度

    等于 观测数也就是样本数(No. Observations)-参数数目(Df Model+1(常量参数,权重加上偏置的数量))

    Df Model:模型参数个数(不包含常量参数)

    R-squared:可决系数

    R2=1i(y^iyi)2i(y^iyi)2 R^{2}=1-\frac{\sum_{i}\left(\hat{y}_{i}-y_{i}\right)^{2}}{\sum_{i}\left(\hat{y}_{i}-y_{i}\right)^{2}}

    上面分子就是我们训练出的模型预测的所有误差。
    下面分母就是不管什么我们猜的结果就是y的平均数。(瞎猜的误差)

    adj-R-squared:修正可决系数

    Radj2=1(n1)(1R2)np1 R_{a d j}^{2}=1-\frac{(n-1)\left(1-R^{2}\right)}{n-p-1}

    右边式子的R就是原始的R-sqaure,n是样本数量,p是特征的数量。

    在这里插入图片描述

    展开全文
  • 我在看贾平俊的《统计学---基于R》(第二版)时候发现了一个现象:P272 关于共线性识别书中列举了4中方法: 其中第1种: 检验自变量之间的关系系数(书中内容如下) ![图片说明]...
  • 多重线性指自变量问存在线性相关关系,即一个自变量可以用其他一个或几个自变量的线性表达式进行表示。若存在多重线性,计算自变量的偏回归系数...那么当发现多重线性回归模型中存在多重线性时我们该如何处理呢
  • 如果违背这一假定,即线性回归模型中某一个解释变量与其他解释变量间存在线性关系,就称线性回归模型中存在多重共线性多重共线性违背了解释变量间不相关的古典假设,将给普通最小二乘法带来严重后果。这里,我们...
  • 多重共线性问题的几种解决方法

    万次阅读 多人点赞 2018-01-28 16:45:51
    如果违背这一假定,即线性回归模型中某一个解释变量与其他解释变量间存在线性关系,就称线性回归模型中存在多重共线性多重共线性违背了解释变量间不相关的古典假设,将给普通最小二乘法带来严重后果。  所谓...
  • 如何消除多重共线性

    千次阅读 2021-06-13 08:42:13
    介绍 机器学习是一种解决不能明确编码的问题的方法,例如,分类问题。机器学习模型将从数据中学习一种模式,因此我们可以使用它来确定数据属于哪个类。...如果我们不去除多重共线性,我们将永远不会知道一个变量对结果
  • 多重共线性问题

    千次阅读 2020-09-02 13:13:13
    概述 在将数据放入到模型中进行训练时,经常需要检验各维度之间的可能存在的多重共线性的问题。接下来将简单介绍共线性识别和常用...多重共线性识别 一般含有如下指标:容忍度、方差膨胀因子、特征值等几个特征来
  • 文章目录多重共线性@[toc]1 什么是多重共线性1.1 多重共线性含义1.2 多重共线性产生原因2 多重共线性后果2.1 完全型2.2 不完全型3 多重共线性检验3.1 简单相关系数检验3.2 方差膨胀因子法3.3 经验法3.4 逐步回归检测...
  • 多重共线性在python中的解决方法 本文将讨论多重共线性的相关概念及利用python自动化消除多重共线性方法,以供参考,欢迎拍砖 线性模型与非线性模型 关于线性模型与非线性模型的定义,似乎并没有确切的定论,但是...
  • 统计|多重共线性识别及严重后果

    千次阅读 2020-08-30 16:38:22
    如果在多元线性回归中没有考虑多重共线性,就会导致很多不好的后果,因此本博文旨在讲述多重共线性识别多重共线性告诉我们,当变量高度相关时,我们可以考虑主成分分析和岭回归之类的分析方法。变量高度相关就是...
  • 多元线性回归中多重共线性Linear Regression is one of the simplest and most widely used algorithms for Supervised machine learning problems where the output is a numerical quantitative variable and the ...
  • 多重共线性问题 -- 岭回归方法

    千次阅读 2020-02-28 00:18:10
    第二部分,借由1987-2007年的人口、消费和科技对碳排放的影响的数据来说明多重共线性问题(包括如何从定性和定量两个方面判断多重共线性问题)和多重共线性问题对普通最小二乘估计的影响。第三部分,使用岭回归对第...
  • 但这种方法只能对共线性作初步的判断,并不全面。 【1】容忍度(Tolerance):有 Norusis 提出,即以每个自变量作为应变量对其他自变量进行回归分析时得到的残差比例,大小用1减决定系数来表示。该指标越小,则说明该...
  • 前几天她和我说,在百度里有个人连续追着我的回答,三次说...说非线性回归不能转换成线性回归的方法,这里我详细说说这两方面的问题到底是怎么回事(根据我的理解),我发现很多人很怕这个多重共线性的问题,听到非线...
  • 多重共线性VIF

    千次阅读 2020-06-24 15:11:07
    多重共线性是指自变量之间存在线性相关关系,即一个自变量可以是其他一个或几个自变量的线性组合。 方差膨胀系数(variance inflation factor,VIF) 是衡量多元线性回归模型中复 (多重)共线性严重程度的一种度量。...
  • 一个应用MATLAB对数据进行多重共线性检验的小程序。在进行多元线性回归前,通常需要进行多重共线性检验,以保证良好的回归效果。多重共线性的表征方法为VIF值,改程序用于自动计算VIF值。
  • 上篇文章《简单而强大的线性回归详解》(点击跳转)详细介绍了线性回归分析方程、损失方程及求解、模型评估指标等内容,其中在推导多元...本文将详细介绍线性回归中多重共线性问题,以及一种线性回归的缩减(shrinkage...
  • 多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。   1.可以计算X矩阵的秩qr(X)$rank,如果不是满秩的,说明其中有Xi...
  • 一、多重共线性及其危害我有一组自变量:它们满足下列关系:那么我们称这四个变量间存在多重共线性。这就意味着,一个变量可以被另外几个变量来解释,这就会带来两个后果1、尽管...那我们该如何识别多重共线性呢?二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,320
精华内容 6,128
关键字:

多重共线性的判断方法