Trattare con multicollinearità


13

Ho imparato che usando il vif()metodo del carpacchetto, possiamo calcolare il grado di multicollinearità degli input in un modello. Da Wikipedia , se il vifvalore è maggiore di 5allora possiamo considerare che l'input soffre di problemi di multicollinearità. Ad esempio, ho sviluppato un modello di regressione lineare usando il lm()metodo e vif()fornisce quanto segue. Come possiamo vedere, gli ingressi ub, lbe tbsono affetti da multicollinearità.

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

Al fine di evitare il problema della multicollinearità e quindi di rendere il mio modello più robusto, ho preso l'interazione tra ube lb, e ora la tabella vif del nuovo modello è la seguente:

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

Non c'è molta differenza nei R^2valori e così come non c'è molta differenza negli errori dai test CV di un abbandono in entrambi i due casi precedenti.

Le mie domande sono:

  1. Va bene evitare il problema della multicollinearità prendendo l'interazione come mostrato sopra?

  2. Esiste un modo migliore per presentare il problema della multicollinearità rispetto ai risultati del metodo vif di cui sopra.

Per favore, forniscimi i tuoi suggerimenti.

Grazie.


La regressione log-log del tuo modello (l'interazione come restrizione è ok con loro)? Nel wiki c'è un articolo più completo sulla questione della multicollinearità en.wikipedia.org/wiki/Multicollinearity Inoltre suggerisco di esplorare il tag multicollinearity su questo sito, sembra essere una domanda frequente.
Dmitrij Celov,

@Dmitrij Celov: grazie. No, il mio modello è una semplice regressione lineare senza registri ...
samarasa,

Risposte:


11

Sembra che tu includa il termine di interazione ub:lb, ma non ube lbse stessi come predittori separati. Ciò violerebbe il cosiddetto "principio di marginalità" che afferma che i termini di ordine superiore dovrebbero includere solo le variabili presenti in termini di ordine inferiore ( Wikipedia per cominciare ). In effetti, ora stai includendo un predittore che è solo il prodotto saggio di ube lb.

VIFj è solo dove è il valore quando si esegue una regressione con la variabile predittore originale come criterio previsto da tutti i predittori rimanenti (è anche il -esimo elemento diagonale di , l'inverso della matrice di correlazione dei predittori). Un valore VIF di 50 indica quindi che si ottiene un di .98 quando si prevede con gli altri predittori, indicando che è quasi completamente ridondante (lo stesso per , di .97).11Rj2Rj2R2jjRx1R2ubublbR2

Vorrei iniziare a fare tutte le correlazioni a coppie tra predittori ed eseguire le regressioni sopra menzionate per vedere quali variabili prevedono ube lbper vedere se la ridondanza è facilmente spiegabile. In tal caso, è possibile rimuovere i predittori ridondanti. Puoi anche esaminare la regressione della cresta ( lm.ridge()dal pacchetto MASSin R).

La diagnostica multicollinearità più avanzata utilizza la struttura di autovalori di dove è la matrice di progettazione della regressione (vale a dire, tutti i predittori come vettori di colonna). La condizione è dove e sono i più grandi e i più piccoli ( ) autovalori di . In R, è possibile utilizzare , dove il modello utilizza in genere le variabili standardizzate.XtXXκλmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

Geometricamente, ti dà un'idea della forma del cloud di dati formato dai predittori. Con 2 predittori, il grafico a dispersione potrebbe apparire come un'ellisse con 2 assi principali. ti dice quindi quanto è "piatta" quell'ellisse, ovvero una misura per il rapporto tra la lunghezza dell'asse maggiore e la lunghezza dell'asse principale più piccolo. Con 3 predittori, potresti avere una forma di sigaro e 3 assi principali. Più "piatto" è il cloud dei dati in una certa direzione, più ridondanti sono le variabili quando vengono prese insieme.κκ

Ci sono alcune regole empiriche per i valori acritici di (ho sentito meno di 20). Ma tieni presente che non è invariante nelle trasformazioni di dati che cambiano semplicemente l'unità delle variabili, come la standardizzazione. Questo è diverso da VIF: ti darà lo stesso risultato di (purché non ci siano termini moltiplicativi nel modello), ma e differirà quasi sicuramente.κκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))


Per quanto riguarda la prima nota: per il modello multivariato sembra ok lasciare solo un termine di interazione, poiché quest'ultimo significa solo limitare i coef per ub lb( ) , ma per un modello di regressione lineare generale è come hai sottolineato (+1) ^ _ ^ A proposito lb - limite inferiore, ub - limite superiore ?! in tal caso fare la differenza di due , è probabilmente la migliore trasformazione. u b - l balogub+aloglb=alogublbublb
Dmitrij Celov,

@Dmitrij: No, ub + lb + sb = 100.
samarasa,

C'è qualche bella rappresentazione grafica per la multicollinearità? Vi prego di suggerirmi se esiste un metodo in R per questo.
samarasa,

2
@kkp Gli unici modi a cui riesco a pensare adesso sono: pairs()per le matrici scatterplot che mostrano tutta la distribuzione a coppie dei predittori. Il pacchetto scatterplot3dpuò essere utilizzato per visualizzare il grafico a dispersione di 3 variabili. Vedi questa risposta per disegnare l'ellisse il cui rapporto d'asse è uguale a nel caso bivariato. Potresti anche controllare il pacchetto che offre ulteriori diagnosi di multicollinearità, forse grafica. κ2perturb
Caracal,

1

Dovresti anche considerare il valore P durante la considerazione variabile.

  1. Se il valore P è molto basso (p <0,05), allora e VIF è alto (> 5), allora dovresti considerare altre variabili insignificanti. E ricostruisci il tuo modello.
  2. Se il valore P e VIF sono entrambi elevati, questa variabile sarà insignificante.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.