Cos’è la multicollinearità perfetta? (definizione ed esempi)


In statistica, 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 tra le variabili è sufficientemente elevato, ciò può causare problemi durante l’adattamento e l’interpretazione del modello di regressione.

Il caso più estremo di multicollinearità è chiamato multicollinearità perfetta . Ciò si verifica quando due o più variabili predittive hanno una relazione lineare esatta tra loro.

Ad esempio, supponiamo di avere il seguente set di dati:

Si noti che i valori della variabile predittore x 2 sono semplicemente i valori di x 1 moltiplicati per 2.

esempio di multicollinearità perfetta

Questo è un esempio di multicollinearità perfetta .

Il problema della multicollinearità perfetta

Quando in un set di dati è presente una multicollinearità perfetta, i minimi quadrati ordinari non sono in grado di produrre stime dei coefficienti di regressione.

Infatti, non è possibile stimare l’effetto marginale di una variabile predittrice (x 1 ) sulla variabile di risposta (y) mantenendo costante un’altra variabile predittrice (x 2 ) perché x 2 si muove sempre esattamente quando si muove x 1 .

In breve, la multicollinearità perfetta rende impossibile stimare un valore per ciascun coefficiente in un modello di regressione.

Come gestire la multicollinearità perfetta

Il modo più semplice per gestire la multicollinearità perfetta è rimuovere una delle variabili che ha una relazione lineare esatta con un’altra variabile.

Ad esempio, nel nostro set di dati precedente, potremmo semplicemente rimuovere x 2 come variabile predittrice.

Quindi adatteremo un modello di regressione utilizzando x 1 come variabile predittrice e y come variabile di risposta.

Esempi di multicollinearità perfetta

Gli esempi seguenti mostrano i tre scenari più comuni di perfetta multicollinearità nella pratica.

1. Una variabile predittrice è multipla di un’altra

Supponiamo di voler utilizzare “altezza in centimetri” e “altezza in metri” per prevedere il peso di una determinata specie di delfini.

Ecco come potrebbe apparire il nostro set di dati:

Si noti che il valore di “altezza in centimetri” è semplicemente uguale a “altezza in metri” moltiplicato per 100. Questo è un caso di multicollinearità perfetta.

Se proviamo ad adattare un modello di regressione lineare multipla in R utilizzando questo set di dati, non saremo in grado di produrre una stima del coefficiente per la variabile predittrice “metri”:

 #define data
df <- data. frame (weight=c(400, 460, 470, 475, 490, 440, 430, 490, 500, 540),
                 m=c(1.3, .7, .6, 1.3, 1.2, 1.5, 1.2, 1.6, 1.1, 1.4),
                 cm=c(130, 70, 60, 130, 120, 150, 120, 160, 110, 140))

#fit multiple linear regression model
model <- lm(weight~m+cm, data=df)

#view summary of model
summary(model)

Call:
lm(formula = weight ~ m + cm, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-70,501 -25,501 5,183 19,499 68,590 

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 458,676 53,403 8,589 2.61e-05 ***
m 9.096 43.473 0.209 0.839    
cm NA NA NA NA    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 41.9 on 8 degrees of freedom
Multiple R-squared: 0.005442, Adjusted R-squared: -0.1189 
F-statistic: 0.04378 on 1 and 8 DF, p-value: 0.8395

2. Una variabile predittrice è una versione trasformata di un’altra

Supponiamo di voler utilizzare “punti” e “punti in scala” per prevedere la valutazione dei giocatori di basket.

Supponiamo che la variabile “punti scalati” sia calcolata come:

Punti scalati = (punti – μ punti ) / σ punti

Ecco come potrebbe apparire il nostro set di dati:

Tieni presente che ogni valore di “punti scalati” è semplicemente una versione standardizzata di “punti”. Questo è un caso di multicollinearità perfetta.

Se proviamo ad adattare un modello di regressione lineare multipla in R utilizzando questo set di dati, non saremo in grado di produrre una stima del coefficiente per la variabile predittrice “punti scalati”:

 #define data
df <- data. frame (rating=c(88, 83, 90, 94, 96, 78, 79, 91, 90, 82),
                 pts=c(17, 19, 24, 29, 33, 15, 14, 29, 25, 22))

df$scaled_pts <- (df$pts - mean(df$pts)) / sd(df$pts)

#fit multiple linear regression model
model <- lm(rating~pts+scaled_pts, data=df)

#view summary of model
summary(model)

Call:
lm(formula = rating ~ pts + scaled_pts, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-4.4932 -1.3941 -0.2935 1.3055 5.8412 

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 67.4218 3.5896 18.783 6.67e-08 ***
pts 0.8669 0.1527 5.678 0.000466 ***
scaled_pts NA NA NA NA    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.953 on 8 degrees of freedom
Multiple R-squared: 0.8012, Adjusted R-squared: 0.7763 
F-statistic: 32.23 on 1 and 8 DF, p-value: 0.0004663

3. La trappola della variabile fittizia

Un altro scenario in cui può verificarsi una perfetta multicollinearità è noto come trappola delle variabili dummy . Questo è quando vogliamo prendere una variabile categoriale in un modello di regressione e convertirla in una “variabile fittizia” che assume i valori di 0, 1, 2, ecc.

Ad esempio, supponiamo di voler utilizzare le variabili predittive “età” e “stato civile” per prevedere il reddito:

Per utilizzare lo “stato civile” come variabile predittrice, dobbiamo prima convertirlo in una variabile fittizia.

Per fare ciò, possiamo lasciare “Single” come valore di base, poiché ciò accade più spesso, e assegnare valori pari a 0 o 1 a “Sposato” e “Divorzio” come segue:

Un errore sarebbe creare tre nuove variabili dummy come segue:

In questo caso, la variabile “Single” è una perfetta combinazione lineare delle variabili “Sposato” e “Divorziato”. Questo è un esempio di multicollinearità perfetta.

Se proviamo ad adattare un modello di regressione lineare multipla in R utilizzando questo set di dati, non saremo in grado di produrre una stima dei coefficienti per ciascuna variabile predittrice:

 #define data
df <- data. frame (income=c(45, 48, 54, 57, 65, 69, 78, 83, 98, 104, 107),
                 age=c(23, 25, 24, 29, 38, 36, 40, 59, 56, 64, 53),
                 single=c(1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0),
                 married=c(0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1),
                 divorced=c(0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0))

#fit multiple linear regression model
model <- lm(income~age+single+married+divorced, data=df)

#view summary of model
summary(model)

Call:
lm(formula = income ~ age + single + married + divorced, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-9.7075 -5.0338 0.0453 3.3904 12.2454 

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 16.7559 17.7811 0.942 0.37739   
age 1.4717 0.3544 4.152 0.00428 **
single -2.4797 9.4313 -0.263 0.80018   
married NA NA NA NA   
divorced -8.3974 12.7714 -0.658 0.53187   
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8.391 on 7 degrees of freedom
Multiple R-squared: 0.9008, Adjusted R-squared: 0.8584 
F-statistic: 21.2 on 3 and 7 DF, p-value: 0.0006865

Risorse addizionali

Una guida alla multicollinearità e al VIF nella regressione
Come calcolare il VIF in R
Come calcolare VIF in Python
Come calcolare VIF in Excel

Aggiungi un commento

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