Come testare la multicollinearità in python


Nell’analisi di regressione, la multicollinearità si verifica quando due o più variabili predittive sono altamente correlate tra loro, in modo tale da non fornire informazioni univoche o indipendenti nel modello di regressione.

Se il grado di correlazione è sufficientemente elevato tra le variabili predittive, ciò può causare problemi durante l’adattamento e l’interpretazione del modello di regressione.

Il modo più semplice per rilevare la multicollinearità in un modello di regressione è calcolare una metrica nota come fattore di inflazione della varianza, spesso abbreviato VIF .

VIF misura la forza della correlazione tra le variabili predittive in un modello. Assume un valore compreso tra 1 e infinito positivo.

Utilizziamo le seguenti regole pratiche per interpretare i valori VIF:

  • VIF = 1: non esiste alcuna correlazione tra una determinata variabile predittrice e qualsiasi altra variabile predittrice nel modello.
  • VIF compreso tra 1 e 5: esiste una correlazione moderata tra una determinata variabile predittiva e altre variabili predittive nel modello.
  • VIF > 5 : esiste una forte correlazione tra una determinata variabile predittrice e altre variabili predittive nel modello.

L’esempio seguente mostra come rilevare la multicollinearità in un modello di regressione in Python calcolando i valori VIF per ciascuna variabile predittrice nel modello.

Esempio: test di multicollinearità in Python

Supponiamo di avere il seguente DataFrame panda che contiene informazioni su vari giocatori di basket:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' rating ': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   ' points ': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   ' assists ': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   ' rebounds ': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view DataFrame
print (df)

	rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

Supponiamo di voler adattare un modello di regressione lineare multipla utilizzando il punteggio come variabile di risposta e punti , assist e rimbalzi come variabili predittive.

Per calcolare il VIF per ciascuna variabile predittrice nel modello, possiamo utilizzare la funzione variance_inflation_factor() dalla libreria statsmodels :

 from patsy import damatrices
from statsmodels. stats . outliers_influence import variance_inflation_factor

#find design matrix for regression model using 'rating' as response variable 
y ,

#create DataFrame to hold VIF values
vive_df = pd. DataFrame ()
vive_df[' variable '] = X.columns 

#calculate VIF for each predictor variable 
vive_df[' VIF '] = [variance_inflation_factor(X. values , i) for i in range(X. shape [1])]

#view VIF for each predictor variable 
print (viv_df)

	       Variable VIF
0 101.258171 Intercept
1 1.763977 points
2 1.959104 assists
3 1.175030 rebounds

Possiamo vedere i valori VIF per ciascuna delle variabili predittive:

  • punti: 1,76
  • assist: 1,96
  • rimbalzi: 1.18

Nota: ignorare il VIF per “Intercetta” nel modello poiché questo valore non è rilevante.

Poiché ciascuno dei valori VIF delle variabili predittive nel modello è vicino a 1, la multicollinearità non è un problema nel modello.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in Python:

Come eseguire una semplice regressione lineare in Python
Come eseguire regressioni lineari multiple in Python
Come creare un grafico residuo in Python

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *