Come gestire la multicollinearità quando si esegue la selezione delle variabili?


28

Ho un set di dati con 9 variabili indipendenti continue. Sto cercando di scegliere tra queste variabili per adattarsi a un modello per una sola percentuale variabile (dipendente), Score. Sfortunatamente, so che ci sarà una seria collinearità tra alcune delle variabili.

Ho provato a usare la stepAIC()funzione in R per la selezione delle variabili, ma quel metodo, stranamente, sembra sensibile all'ordine in cui le variabili sono elencate nell'equazione ...

Ecco il mio codice R (poiché sono dati percentuali, utilizzo una trasformazione logit per Punteggio):

library(MASS)
library(car)

data.tst = read.table("data.txt",header=T)
data.lm = lm(logit(Score) ~ Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 +
             Var8 + Var9, data = data.tst)

step = stepAIC(data.lm, direction="both")
summary(step)

Per qualche motivo, ho scoperto che le variabili elencate all'inizio dell'equazione finiscono per essere selezionate dalla stepAIC()funzione e il risultato può essere manipolato elencando, ad esempio, Var9prima (seguendo la tilde).

Qual è un modo più efficace (e meno controverso) di adattare un modello qui? In realtà non sono stanco di usare la regressione lineare: l'unica cosa che voglio è riuscire a capire quale delle 9 variabili sta realmente guidando la variazione nella Scorevariabile. Preferibilmente, questo sarebbe un metodo che tiene conto del forte potenziale di collinearità in queste 9 variabili.


6
La collinearità significherà, indipendentemente dall'analisi, che è sostanzialmente impossibile determinare se una variabile "guida" la variazione più o meno di una variabile con la quale è altamente collineare. Tenendo presente questa limitazione, è possibile provare il lazo come mezzo per selezionare un piccolo numero di variabili che prevedono in modo ottimale, quindi riportare l'insieme di variabili che seleziona e quelle con cui l'insieme è altamente collineare. Il lazo raggruppato è un'altra opzione.
ospite

4
@guest: il lazo non funziona particolarmente bene in presenza di una forte collinearità, soprattutto per quanto riguarda il problema della selezione del modello.
cardinale

2
@ cardinale, il lazo va bene, ma se diverse variabili sono correlate tenderà a selezionarne solo una, motivo per cui ho suggerito di guardare l'insieme di variabili altamente collineari. Decidere di utilizzare qualcosa di più complesso di questo "default" richiederebbe una valutazione dell'utilità e una nozione più forte di ciò a cui questo modello è destinato.
ospite

2
Potresti voler esaminare la funzione bicreg {pacchetto BMA}. Si noti che è necessario un set di dati per casi completi affinché funzioni correttamente. Lo trovo estremamente utile per la selezione del modello.
Dominic Comtois,

1
@guest: Beh, dipende molto dal modo in cui viene selezionato il parametro di regolarizzazione. In realtà, in alcuni regimi, il lazo ha una tendenza (dimostrabile) a selezionare più parametri. L'OP ha chiesto "l'unica cosa che voglio è essere in grado di capire su quale delle 9 variabili sta realmente guidando la variazione nella Scorevariabile", che è la frase su cui potrei essermi troppo concentrato. In presenza di una forte collinearità, il lazo non aiuterà a ciò, almeno nelle interpretazioni più rigorose dell'osservazione del PO.
cardinale

Risposte:


14

Prima di tutto, un'ottima risorsa per questo problema è T. Keith, Multiple Regressione e Beyond. Nel libro c'è molto materiale sulla modellazione dei percorsi e sulla selezione delle variabili e penso che troverai risposte esaurienti alle tue domande lì.

Un modo per affrontare la multicollinearità è centrare i predittori, ovvero sottrarre la media di una serie da ciascun valore. La regressione della cresta può essere utilizzata anche quando i dati sono altamente collineari. Infine, la regressione sequenziale può aiutare a comprendere le relazioni causa-effetto tra i predittori, unitamente all'analisi della sequenza temporale degli eventi predittori.

Tutte e 9 le variabili mostrano collinearità? Per la diagnosi è possibile utilizzare il fattore di inflazione della varianza di Cohen 2003. Un valore VIF> = 10 indica elevata collinearità ed errori standard gonfiati. Capisco che tu sia più interessato alla relazione causa-effetto tra predittori e risultati. In caso contrario, la multicollinearità non è considerata un problema serio per la previsione, come è possibile confermare controllando il MAE dei dati fuori campione rispetto ai modelli creati aggiungendo i predittori uno alla volta. Se i tuoi predittori hanno un potere di previsione marginale, scoprirai che il MAE diminuisce anche in presenza della multicollinearità del modello.


16

Poiché è così difficile determinare quali variabili eliminare, spesso è meglio non eliminare le variabili. Due modi per procedere lungo questa linea sono (1) utilizzare un metodo di riduzione dei dati (ad esempio, clustering variabile o componenti principali) e inserire punteggi di riepilogo nel modello anziché singole variabili e (2) inserire tutte le variabili nel modello ma non testare per l'effetto di una variabile corretta per gli effetti delle variabili concorrenti. Per (2), i test di blocco delle variabili concorrenti sono potenti perché le variabili collineari uniscono le forze nel test di associazione a più gradi complessivi di libertà, invece di competere l'una contro l'altra come quando si verificano le variabili individualmente.


potresti semplicemente spiegareand put summary scores into the model
SIslam

1
Le note del mio corso su biostat.mc.vanderbilt.edu/rms entrano nei dettagli
Frank Harrell,

1

Se si desidera effettuare una selezione variabile in presenza di elevata collinearità, posso consigliare il pacchetto l0ara , che si adatta ai GLM penalizzati L0 utilizzando una procedura di cresta adattativa iterativa . Dato che questo metodo si basa in ultima analisi sulla regressione regolarizzata della cresta, può gestire molto bene la collinearità e nelle mie simulazioni ha prodotto molti meno falsi positivi pur offrendo ottime prestazioni di previsione rispetto ad esempio a LASSO, rete elastica o LASSO adattivo. In alternativa, puoi anche provare il pacchetto L0Learncon una combinazione di una penalità L0 e L2. La penalità L0 favorisce quindi la scarsità (cioè i piccoli modelli) mentre la penalità L2 regolarizza la collinearità. Spesso viene anche suggerita una rete elastica (che utilizza una combinazione di penalità L1 e L2), ma nei miei test questo ha prodotto molti più falsi positivi, oltre a coefficienti fortemente distorti. Questo pregiudizio è possibile eliminare se si utilizzano invece metodi penalizzati L0 (ovvero il miglior sottoinsieme): è un cosiddetto stimatore di oracoli, che ottiene contemporaneamente coefficienti di parametri coerenti e imparziali. I parametri di regolarizzazione in tutti questi metodi devono essere ottimizzati tramite validazione incrociata per fornire prestazioni di predizione ottimali fuori dal campione. Se desideri anche ottenere livelli di significatività e intervalli di confidenza sui tuoi parametri, puoi farlo anche tramite bootstrap non parametrico.

L'algoritmo iterativo della cresta adattativa di l0ara(a volte indicato come cresta adattiva rotta), come la rete elastica, possiede un effetto di raggruppamento, che gli farà selezionare variabili altamente correlate in gruppi non appena entreranno nel tuo modello. Ciò ha senso, ad esempio se nel modello fossero presenti due variabili quasi collineari, l'effetto si dividerebbe equamente su entrambi.

Se stai analizzando i dati proporzionali, stai meglio usando un modello di regressione logistica tra l'altro - il l0arapacchetto ti consente di farlo in combinazione con una penalità L0; per il L0Learnpacchetto questo sarà supportato a breve.

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.