Măsuri de coliniaritate

O altă abordare pentru a identifica multicoliniaritatea este prin intermediul factorului de inflație a varianței. VIF indică procentul de varianță umflată pentru coeficientul fiecărei variabile. Pornind de la o valoare de 1 (fără coliniaritate), un VIF între 1-5 indică o coliniaritate moderată, în timp ce valorile de peste 5 indică o coliniaritate ridicată. Printre cazurile în care un VIF ridicat ar fi acceptabil se numără utilizarea termenilor de interacțiune, a termenilor polinomiali sau a variabilelor fictive (variabile nominale cu trei sau mai multe categorii). Matricile de corelație permit identificarea corelației dintre perechile de variabile, în timp ce VIF permite evaluarea generală a multicoliniarității. Matricea de corelație pentru majoritatea variabilelor continue este prezentată mai jos pentru a evidenția diferitele perechi de variabile coliniarizate. VIF poate fi calculat cu ajutorul pachetului statsmodels; blocul de cod de mai jos prezintă valorile VIF cu variabile coliniare incluse (stânga) și eliminate (dreapta).

matrice de corelație pentru variabilele continue; coeficientul Kendall (imagine de autor)
# 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)

Valorile VIF pentru variabilele predictive (imagine de autor)

Valorile VIF corespund cu matricea de corelație; de exemplu, pentru perechea de variabile NOX și INDUS, coeficientul de corelație este peste 0.5 (0,61), iar valorile VIF respective sunt peste 5. Eliminarea variabilelor coliniare RAD și NOX a îmbunătățit valorile VIF. Eliminarea variabilelor coliniarizate numai pe baza celei mai mari cifre VIF nu este o modalitate garantată de a construi cel mai performant model, după cum se elaborează în secțiunea următoare.

Constituim un model de bază prin eliminarea tuturor variabilelor coliniarizate identificate în matricea de corelație (prezentată mai sus), așteptând ca TAX și RAD să fie eliminate în continuare.

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

Evaluarea cifrelor VIF ale variabilelor predictive în modelul de bază (imagine de autor)

În timp ce se pare că renunțarea la variabila TAX pe baza VIF pare a fi mai bună, o abordare prudentă este de a verifica prin intermediul metricii R pătrat ajustat (ajustat în funcție de numărul de predictori, metrica crește doar dacă următoarea variabilă adăugată îmbunătățește modelul mai mult decât ar fi de așteptat din întâmplare).

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

Rezumat al metricilor modelului (w/o TAX) (imagine de autor)
# Without RAD
model = sm.OLS(y, sm.add_constant(X_noRAD)).fit()
print_model = model.summary()
print(print_model)

.

Sumarul metricilor modelului (fără RAD) (imagine de autor)

De la R mai mare ajustat-pătrat ajustat, putem deduce că modelul este mai performant dacă se renunță la variabila RAD! Odată rezolvată problema multicoliniarității, următorul pas ar putea fi explorarea adăugării de termeni de interacțiune pentru a spori potențial performanța modelului.

.

Lasă un comentariu