(vif包建议5以上则存在共线性问题) from statsmodels.stats.outliers_influence import variance_inflation_factor as vif vif(np.array(DataFrame),索引数) #两个参数第一个必须是包含所有解释变量的数组,第二个即为索引值。 features=data.columns removefeatures=[] for i in range(len(features)): vifs=vif(...
def checkVIF_new(df): from statsmodels.stats.outliers_influence import variance_inflation_factor # 默认情况下不会添加截距,使得获得的VIF值偏大; # 因此,在数据框中再增加一列,代表一个常数(使用常数1)。这将是方程式的截距项。 df['c'] = 1 # name = df.columns x = np.matrix(df) VIF_list =...
在Python中,可以使用statsmodels库中的variance_inflation_factor函数来计算方差膨胀因子。该函数接受一个包含自变量的Dataframe作为参数,并返回每个自变量的方差膨胀因子。 下面是一个使用variance_inflation_factor函数计算方差膨胀因子的示例代码: ```python import pandas as pd from statsmodels.stats.outliers_influence imp...
下面的定义函数中直接调用的variance_inflation_factor函数计算的VIF,得到的结果是不对的。 defcheckVIF(df):fromstatsmodels.stats.outliers_influenceimportvariance_inflation_factorname=df.columnsx=np.matrix(df)VIF_list=[variance_inflation_factor(x,i)foriinrange(x.shape[1])]VIF=pd.DataFrame({'feature':...
statsmodels提供了一个名为variance_inflation_factor()的函数来计算VIF。 语法:statmodels.stats.outliers_influence.variance_inflation_factor(exog,exog_idx) 主要参数: exog:一个数组,包含对其执行线性回归的特征。 exog_idx:要测量其对其他特征的影响的附加特征的索引。
vif =[variance_inflation_factor(ck, i) for i in range(ck.shape[1])]print(vif)Variables VIFa47.136986301369774b28.931506849315081c80.31506849315096d40.438356164383549 即使输入相同,结果也大不相同。一般来说,statsmodel VIF 函数的结果似乎是错误的,但我不确定这是因为我调用它的方式还是函数本身的问题。
多重线性回归模型的主要假设之一是我们的预测变量(自变量)彼此不相关。我们希望预测变量(自变量)与反应变量(因变量)相关,而不是彼此之间具有相关性。方差膨胀因子 ( Variance Inflation Factor,以下简称 VIF ),是 「指解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比」。
重点:在利用Python的statmodels模块调用variance_inflation_factor计算时,一定要加常数项,不然VIF都会很大,参见Python计算方差膨胀因子VIF的对比测试。 计算代码为: # 计算方差膨胀因子defcheck_vif():input_path="E:\\Data\\"df=pd.read_csv(input_path+'data.csv',header=0,encoding='gbk')df=df.drop(['y...
多重线性回归模型的主要假设之一是我们的预测变量(自变量)彼此不相关。我们希望预测变量(自变量)与反应变量(因变量)相关,而不是彼此之间具有相关性。方差膨胀因子 ( Variance Inflation Factor,以下简称 VIF ),是「指解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比」。