Riduzione del numero di variabili in una regressione multipla


9

Ho un ampio set di dati costituito dai valori di diverse centinaia di variabili finanziarie che potrebbero essere utilizzate in una regressione multipla per prevedere il comportamento di un fondo indicizzato nel tempo. Vorrei ridurre il numero di variabili a dieci o giù di lì, pur mantenendo il maggior potere predittivo possibile. Aggiunto: l'insieme ridotto di variabili deve essere un sottoinsieme dell'insieme di variabili originale per preservare il significato economico delle variabili originali. Pertanto, ad esempio, non dovrei finire con combinazioni lineari o aggregati delle variabili originali.

Alcuni (probabilmente ingenui) pensieri su come farlo:

  1. Esegui una regressione lineare semplice con ogni variabile e scegli le dieci con i valori più grandi . Naturalmente, non vi è alcuna garanzia che le dieci migliori variabili individuali combinate siano il miglior gruppo di dieci.R2
  2. Eseguire un'analisi dei componenti principali e provare a trovare le dieci variabili originali con le associazioni più grandi con i primi assi principali.

Non credo di poter eseguire una regressione gerarchica perché le variabili non sono realmente nidificate. Provare tutte le possibili combinazioni di dieci variabili è computazionalmente impossibile perché ci sono troppe combinazioni.

Esiste un approccio standard per affrontare questo problema di riduzione del numero di variabili in una regressione multipla?

Sembra che questo sarebbe un problema sufficientemente comune che ci sarebbe un approccio standard.

Una risposta molto utile potrebbe essere quella che non menziona solo un metodo standard, ma fornisce anche una panoramica di come e perché funziona. In alternativa, se non esiste un approccio standard ma piuttosto uno con più punti di forza e di debolezza, una risposta molto utile sarebbe quella che discute i loro pro e contro.

Il commento di Whuber di seguito indica che la richiesta nell'ultimo paragrafo è troppo ampia. Invece, accetterei come buona risposta un elenco dei principali approcci, forse con una descrizione molto breve di ciascuno. Una volta che ho i termini posso scavare i dettagli su ciascuno di me.


1
Mike, potresti consultare il capitolo 3 di ESL , se non hai familiarità con esso. La pagina al link fornisce un PDF gratuito e legale del testo.
cardinale

Puoi chiarire se stai cercando di mantenere, diciamo, solo dieci delle variabili originali o sei anche interessato a metodi che usano un piccolo sottoinsieme di combinazioni lineari delle variabili originali (quest'ultima è ciò che assomiglia a una tradizionale regressione di componenti principali ti darei).
cardinale

3
Questa risposta fornisce un esempio concreto di uno dei (molti) problemi con il metodo 1. Un commento di @cardinal alla risposta di Frank Harrell arriva al nocciolo del problema con il metodo 2: qualsiasi cosa tu faccia con le sole variabili indipendenti, senza considerare il loro relazioni con la variabile dipendente, i rischi sono irrilevanti o peggiori. Per quanto riguarda le risposte standard o "canoniche", chiederne una qui è un po 'come chiedere una discussione di tutti i metodi per trovare punti razionali sulle curve ellittiche, con i loro pro e contro :-).
whuber

2
Come notato da altri qui, il metodo 1 porterà a problemi. Per un trattamento intuitivamente accessibile del perché sia ​​vero / una descrizione di un altro dei problemi con questo approccio, potresti voler leggere questo: stats.stackexchange.com/questions/20836/…
gung -

1
Grazie a whuber e gung per le spiegazioni dei problemi con la prima idea.
Mike Spivey,

Risposte:



6

Il metodo 1 non funziona. Il metodo 2 ha speranza a seconda di come lo fai. È meglio inserire i componenti principali in ordine decrescente di varianza spiegato. Un approccio più interpretabile è quello di fare un cluster variabile, quindi ridurre ciascun cluster a un singolo punteggio (non usando Y), quindi adattare un modello con i punteggi del cluster.


+1. Con "clustering variabile" intendi l' analisi fattoriale, che è una strategia che potrei usare (anche prima di guardare y). Penso all'analisi dei cluster come osservazioni di raggruppamento piuttosto che variabili, ma ho solo una conoscenza superficiale delle analisi dei cluster.
gung - Ripristina Monica

1
Non sembra che ci sia una ragione a priori per credere che le direzioni della varianza massima dei predittori siano necessariamente altamente correlate alla risposta . Forse mi sbaglio o ho frainteso il tuo commento. Potresti chiarire?
cardinale

1
Inoltre, sembra che l'OP non stia (abbastanza) descrivendo la regressione dei componenti principali nel suo Metodo 2.
Cardinale

Non ero completamente chiaro nel mio post originale, ma ho bisogno di un sottoinsieme delle variabili originali. Quindi un'analisi diretta dei componenti principali o il clustering non è proprio quello che sto cercando.
Mike Spivey,

1
Il clustering variabile è correlato all'analisi fattoriale ma è più semplice. Le variabili sono raggruppate nel modo in cui sono correlate tra loro. Vedere la varclusfunzione nel Hmiscpacchetto R o PROC VARCLUS in SAS. La riduzione dei dati può aiutare con il sottoimpostazione delle variabili se si presta un po 'di cautela; è possibile rimuovere un intero cluster se il suo valore è 0,3. Con i componenti principali ci sono tecniche come la riduzione della batteria in cui essenzialmente si approssimano i PC con un sottoinsieme delle loro variabili costitutive. P
Frank Harrell,

3

Nel capitolo 5 di Data Mining con R, l'autore mostra alcuni modi per scegliere i predittori più utili. (Nel contesto della bioinformatica, in cui ogni riga del campione ha più di 12.000 colonne!)

Prima usa alcuni filtri basati sulla distribuzione statistica. Ad esempio, se hai una mezza dozzina di predittori tutti con una media e una sd simili, allora puoi cavartela semplicemente conservandone una.

Quindi mostra come utilizzare una foresta casuale per trovare quali sono i predittori più utili. Ecco un esempio astratto autonomo. Puoi vedere che ho 5 buoni predittori, 5 cattivi. Il codice mostra come mantenere solo i migliori 3.

set.seed(99)

d=data.frame(
  y=c(1:20),
  x1=log(c(1:20)),
  x2=sample(1:100,20),
  x3=c(1:20)*c(11:30),
  x4=runif(20),
  x5=-c(1:20),
  x6=rnorm(20),
  x7=c(1:20),
  x8=rnorm(20,mean=100,sd=20),
  x9=jitter(c(1:20)),
  x10=jitter(rep(3.14,20))
  )

library(randomForest)
rf=randomForest(y~.,d,importance=T)
print(importance(rf))
#         %IncMSE IncNodePurity
# x1  12.19922383    130.094641
# x2  -1.90923082      6.455262
# ...

i=importance(rf)
best3=rownames(i)[order(i[,"%IncMSE"],decreasing=T)[1:3]]
print(best3)
#[1] "x1" "x5" "x9"

reduced_dataset=d[,c(best3,'y')]

L'ultimo approccio dell'autore sta usando un algoritmo di clustering gerarchico per raggruppare predittori simili in, diciamo, in 30 gruppi. Se desideri 30 diversi predittori, scegli uno da ciascuno di questi 30 gruppi, in modo casuale.

Ecco un po 'di codice, usando gli stessi dati di esempio sopra, per scegliere 3 delle 10 colonne:

library(Hmisc)
d_without_answer=d[,names(d)!='y']
vc=varclus(as.matrix(d_without_answer))
print(cutree(vc$hclust,3))
# x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 
#  1   2   1   3   1   1   1   2   1   3 

I miei dati di esempio non si adattano affatto a questo approccio, perché ho 5 buoni predittori e 5 che sono solo rumore. Se tutti i 10 predittori sono stati un po 'correlata con y, e ha avuto una buona possibilità di essere ancora meglio se usati insieme (che è del tutto possibile nel dominio finanziario), allora questo può essere un approccio buono.


2

Potresti prendere in considerazione l'utilizzo di un metodo come LASSO che regolarizza i minimi quadrati selezionando una soluzione che minimizzi la norma del vettore di parametri. Si scopre che ciò ha in pratica l'effetto di ridurre al minimo il numero di voci diverse da zero nel vettore dei parametri. Sebbene LASSO sia popolare in alcuni ambienti statistici, molti altri metodi correlati sono stati considerati nel mondo del rilevamento compressivo.


Grazie. Alzerò lo sguardo su LASSO. (Sembra che sia menzionato anche nei riferimenti cardinali di riferimento.)
Mike Spivey,
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.