Python使用VIF實(shí)現(xiàn)檢測(cè)多重共線性
多重共線性是指多元回歸模型中有兩個(gè)或兩個(gè)以上的自變量,它們之間具有高度的相關(guān)性。當(dāng)某些特征高度相關(guān)時(shí),我們可能很難區(qū)分它們對(duì)因變量的個(gè)體影響。多重共線性可以使用各種技術(shù)來檢測(cè),其中一種技術(shù)是方差膨脹因子(VIF)。
在VIF方法中,我們選擇每個(gè)特征并將其與所有其他特征進(jìn)行回歸。對(duì)于每個(gè)回歸,因子計(jì)算如下:

其中,R平方是線性回歸中的決定系數(shù)。它的值介于0和1之間。
正如我們從公式中看到的,R平方的值越大,VIF越大。因此,VIF越大,相關(guān)性越強(qiáng)。這與較高的R平方值表示較強(qiáng)的共線性的事實(shí)一致。通常,VIF高于5表示高多重共線性。
使用statmodels實(shí)現(xiàn)VIF
statsmodels提供了一個(gè)名為variance_inflation_factor()的函數(shù)來計(jì)算VIF。
語法:statmodels.stats.outliers_influence.variance_inflation_factor(exog,exog_idx)
主要參數(shù):
exog:一個(gè)數(shù)組,包含對(duì)其執(zhí)行線性回歸的特征。
exog_idx:要測(cè)量其對(duì)其他特征的影響的附加特征的索引。
示例
下例中使用的數(shù)據(jù)集包含500人的身高、體重、性別和體重指數(shù)。這里的因變量是指數(shù)。
import pandas as pd
# the dataset
data = pd.read_csv('BMI.csv')
# printing first few rows
print(data.head())
輸出
Gender Height Weight Index
0 Male 174 96 4
1 Male 189 87 2
2 Female 185 110 4
3 Female 195 104 3
4 Male 149 61 3
方法
每個(gè)特征索引都被傳遞給variance_inflation_factor()以找到相應(yīng)的VIF。
這些值以Pandas DataFrame的形式存儲(chǔ)。
from statsmodels.stats.outliers_influence import variance_inflation_factor
# creating dummies for gender
data['Gender'] = data['Gender'].map({'Male':0, 'Female':1})
# the independent variables set
X = data[['Gender', 'Height', 'Weight']]
# VIF dataframe
vif_data = pd.DataFrame()
vif_data["feature"] = X.columns
# calculating VIF for each feature
vif_data["VIF"] = [variance_inflation_factor(X.values, i)
for i in range(len(X.columns))]
print(vif_data)
輸出
feature VIF
0 Gender 2.028864
1 Height 11.623103
2 Weight 10.688377
正如我們所看到的,身高和體重具有非常高的VIF值,表明這兩個(gè)變量高度相關(guān)。這是預(yù)料之中的,因?yàn)橐粋€(gè)人的身高確實(shí)會(huì)影響他們的體重。因此,將這兩個(gè)特征一起考慮會(huì)導(dǎo)致具有高多重共線性的模型。
到此這篇關(guān)于Python使用VIF實(shí)現(xiàn)檢測(cè)多重共線性的文章就介紹到這了,更多相關(guān)Python檢測(cè)多重共線性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?OpenCV實(shí)現(xiàn)圖片預(yù)處理的方法詳解
這篇文章主要為大家詳細(xì)介紹了Python?OpenCV實(shí)現(xiàn)圖片預(yù)處理的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下2022-09-09
Python QButtonGroup類詳細(xì)介紹及常用方法
QButtonGroup是PyQt5 中用于管理多個(gè)按鈕邏輯分組的類,常用于實(shí)現(xiàn)單選或多選功能,本文給大家介紹Python QButtonGroup類的常用方法,感興趣的朋友跟隨小編一起看看吧2024-10-10
Python中實(shí)現(xiàn)常量(Const)功能
這篇文章主要介紹了Python中實(shí)現(xiàn)常量(Const)功能,python語言本身沒有提供const,本文使用一個(gè)類來實(shí)現(xiàn)常量定義功能,并介紹了使用方法,需要的朋友可以參考下2015-01-01
卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明
這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法
這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
python和flask中返回JSON數(shù)據(jù)的方法
下面小編就為大家整理了一篇python和flask中返回JSON數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
python數(shù)據(jù)結(jié)構(gòu)的排序算法
下面是是對(duì)python數(shù)據(jù)結(jié)構(gòu)的排序算法的一些講解及示意圖,感興趣的小伙伴一起來學(xué)習(xí)吧2021-08-08
Python實(shí)現(xiàn)希爾排序,歸并排序和桶排序的示例代碼
希爾、歸并、快速排序算法可歸為同一類,它們的共同點(diǎn)都是建立在分治思想之上。把大問題分拆成小問題,解決所有小問題后,再合并每一個(gè)小問題的結(jié)果,最終得到對(duì)原始問題的解答。本文將介紹這三種算法的實(shí)現(xiàn)代碼,需要的可以參考一下2022-04-04

