Kollinearitási intézkedések

A multikollinearitás azonosításának másik megközelítése a varianciainflációs faktor segítségével történik. A VIF azt jelzi, hogy az egyes változók együtthatói esetében a variancia hány százaléka inflálódik. Az 1 értéktől kezdve (nincs kollinearitás) az 1-5 közötti VIF mérsékelt kollinearitást, míg az 5 feletti értékek nagyfokú kollinearitást jeleznek. Néhány eset, amikor a magas VIF elfogadható, a kölcsönhatási feltételek, polinomiális feltételek vagy dummy változók (három vagy több kategóriával rendelkező nominális változók) használata. A korrelációs mátrixok lehetővé teszik a változópárok közötti korreláció azonosítását, míg a VIF lehetővé teszi a multikollinearitás általános értékelését. Az alábbiakban a legtöbb folytonos változó korrelációs mátrixát mutatjuk be, hogy kiemeljük a különböző kollineáris változópárokat. A VIF kiszámítható a statsmodels csomag segítségével; az alábbi kódblokk a VIF-értékeket mutatja be a kollineáris változók bevonásával (balra) és eltávolításával (jobbra).

korrelációs mátrix a folytonos változókhoz; Kendall együttható (kép a szerző által)
# Setting the predictor variables
X_o = df_wdummy]
X_r1 = df_wdummy]#
from statsmodels.stats.outliers_influence import variance_inflation_factorvif = pd.Series()], index=X_o.columns,
name='vif_full')
vif_r = pd.Series()], index=X_r1.columns,
name='vif_collinear_rvmd')
pd.concat(, axis=1)

VIF értékek a prediktor változókhoz (kép a szerző által)

A VIF értékek megfelelnek a korrelációs mátrixnak; például a NOX és INDUS változópár esetében a korrelációs együttható 0 felett van.5 (0,61), és a megfelelő VIF-értékek 5 felett vannak. A RAD és NOX kollineáris változók eltávolítása javította a VIF-számokat. A kollineáris változók elhagyása kizárólag a legmagasabb VIF-érték alapján nem garantált módja a legjobb teljesítményű modell létrehozásának, amint azt a következő szakaszban kifejtjük.

A korrelációs mátrixban azonosított (fent látható) összes kollineáris változó elhagyásával alapmodellt alkotunk, a TAX és a RAD elhagyásáig.

# Baseline variables 
X_bl = df_wdummy]
y_bl = df_wdummy# Explore mitigating multi-collinearity
vif_bl = pd.Series()], index=X_bl.columns,
name='vif_bl')X_noTAX = X_bl.drop(,axis=1)
X_noRAD = X_bl.drop(,axis=1)
vif_noTAX = pd.Series()],
index=X_noTAX.columns, name='vif_noTAX')
vif_noRAD = pd.Series()],
index=X_noRAD.columns, name='vif_noRAD')
pd.concat(, axis=1)

A prediktorváltozók VIF-számának értékelése az alapmodellben (a szerző képe)

Míg a TAX változó elhagyása a VIF alapján jobbnak tűnik, egy óvatos megközelítés a kiigazított R-négyzet metrikán keresztül történő ellenőrzés (a prediktorok számával kiigazítva a metrika csak akkor nő, ha a következő hozzáadott változó jobban javítja a modellt, mint ahogy az véletlenszerűen várható lenne).

# Without TAX
model = sm.OLS(y, sm.add_constant(X_noTAX)).fit()
print_model = model.summary()
print(print_model)

Modellmetrikák összefoglalása (TAX nélkül) (a szerző képe)
# Without RAD
model = sm.OLS(y, sm.add_constant(X_noRAD)).fit()
print_model = model.summary()
print(print_model)

Modellmetrikák összefoglalása (RAD nélkül) (kép a szerző által)

A magasabb korrigált R-négyzet alakú ábrán, arra következtethetünk, hogy a modell jobban teljesít a RAD változó elhagyásával! Mivel a multikollinearitás problémája megoldódott, a következő lépés lehet a kölcsönhatási feltételek hozzáadásának vizsgálata a modell teljesítményének potenciális növelése érdekében.

Szólj hozzá!