zoukankan      html  css  js  c++  java
  • 多重共线性检验-方差膨胀系数(VIF)

      方差膨胀系数(variance inflation factor,VIF)是衡量多元线性回归模型中复 (多重)共线性严重程度的一种度量。它表示回归系数估计量的方差与假设自变量间不线性相关时方差相比的比值。

      多重共线性是指自变量之间存在线性相关关系,即一个自变量可以是其他一个或几个自变量的线性组合。若存在多重共线性,计算自变量的偏回归系数时矩阵不可逆。其表现主要有:整个模型的方差分析结果与各个自变量的回归系数的检验结果不一致,专业判断有统计学意义的自变量检验结果却无意义,自变量的系数或符号与实际情况严重不符等。
    检验方法主要有:容忍度(Tolerance)和方差膨胀系数(Variance inflation factor,VIF)。其中最常用的是VIF,计算公式为:
    VIF的取值大于1。VIF值越接近于1,多重共线性越轻,反之越重。当多重共线性严重时,应采取适当的方法进行调整 [3]  。容忍度的值界于0至1之间,当容忍度值较小时,表示此自变量与其他自变量之间存在共线性。容忍度这个变量回归系数的估计值不够稳定,则回归系数的计算值也会有很大误差。方差膨胀系数是容忍度的倒数,VIF越大,表示自变量的容忍度越小,越有共线性问题。
      通常以10作为判断边界。当VIF<10,不存在多重共线性;当10<=VIF<100,存在较强的多重共线性;当VIF>=100, 存在严重多重共线性。

    import numpy as np
    from sklearn.linear_model import LinearRegression

    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]))


    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)])

    import matplotlib.pyplot as plt
    clf=LinearRegression()
    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

    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()

  • 相关阅读:
    [MacOS]Sublime text3 安装(一)
    [RHEL8]开启BBR
    PAT Advanced 1136 A Delayed Palindrome (20分)
    PAT Advanced 1144 The Missing Number (20分)
    PAT Advanced 1041 Be Unique (20分)
    PAT Advanced 1025 PAT Ranking (25分)
    PAT Advanced 1022 Digital Library (30分)
    PAT Advanced 1019 General Palindromic Number (20分)
    PAT Advanced 1011 World Cup Betting (20分)
    PAT Advanced 1102 Invert a Binary Tree (25分)
  • 原文地址:https://www.cnblogs.com/liu-304711/p/10945717.html
Copyright © 2011-2022 走看看