Reduzindo o número de variáveis ​​em uma regressão múltipla


9

Eu tenho um grande conjunto de dados que consiste nos valores de várias centenas de variáveis ​​financeiras que podem ser usadas em uma regressão múltipla para prever o comportamento de um fundo de índice ao longo do tempo. Eu gostaria de reduzir o número de variáveis ​​para dez ou mais, mantendo o máximo de poder preditivo possível. Adicionado: o conjunto reduzido de variáveis ​​precisa ser um subconjunto do conjunto de variáveis ​​original para preservar o significado econômico das variáveis ​​originais. Assim, por exemplo, não devo terminar com combinações lineares ou agregados das variáveis ​​originais.

Alguns pensamentos (provavelmente ingênuos) sobre como fazer isso:

  1. Execute uma regressão linear simples com cada variável e escolha os dez com os maiores valores de . Obviamente, não há garantia de que as dez melhores variáveis ​​individuais combinadas sejam o melhor grupo de dez.R2
  2. Execute uma análise de componentes principais e tente encontrar as dez variáveis ​​originais com as maiores associações com os primeiros eixos principais.

Eu não acho que posso executar uma regressão hierárquica porque as variáveis ​​não estão realmente aninhadas. Tentar todas as combinações possíveis de dez variáveis ​​é inviável computacionalmente porque existem muitas combinações.

Existe uma abordagem padrão para resolver esse problema de redução do número de variáveis ​​em uma regressão múltipla?

Parece que isso seria um problema suficientemente comum e haveria uma abordagem padrão.

Uma resposta muito útil seria aquela que não apenas menciona um método padrão, mas também fornece uma visão geral de como e por que ele funciona. Como alternativa, se não houver uma abordagem padrão, mas múltiplas com diferentes pontos fortes e fracos, uma resposta muito útil seria aquela que discuta seus prós e contras.

O comentário do whuber abaixo indica que a solicitação no último parágrafo é muito ampla. Em vez disso, aceitaria como boa resposta uma lista das principais abordagens, talvez com uma breve descrição de cada uma. Depois de ter os termos, posso desenterrar os detalhes de cada um.


11
Mike, você pode navegar pelo Capítulo 3 da ESL , se não estiver familiarizado com isso. A página no link fornecido indica um PDF legal e gratuito do texto.
cardeal

Você pode esclarecer se deseja manter apenas, digamos, dez das variáveis ​​originais ou também se interessaria por métodos que usem um pequeno subconjunto de combinações lineares das variáveis ​​originais (sendo o último algo como uma regressão tradicional de componentes principais daria a você).
cardeal

3
Esta resposta fornece um exemplo concreto de um dos (muitos) problemas com o método 1. Um comentário de @cardinal à resposta de Frank Harrell chega ao cerne do problema com o método 2: qualquer coisa que você faça apenas com as variáveis ​​independentes, sem considerar suas relacionamentos com a variável dependente, corre o risco de ser irrelevante ou pior. No que diz respeito às respostas padrão ou "canônicas", pedir uma aqui é um pouco como pedir uma discussão de todos os métodos para encontrar pontos racionais nas curvas elípticas, com seus prós e contras :-).
whuber

2
Conforme observado por outras pessoas aqui, o método 1 levará a problemas. Para um tratamento intuitivamente acessível do porquê disso é verdade / para uma descrição de outro dos problemas dessa abordagem, leia: stats.stackexchange.com/questions/20836/…
gung - Reinstate Monica

11
Obrigado a whuber e gung pelas explicações dos problemas com a primeira idéia.
Mike Spivey

Respostas:



6

O método 1 não funciona. O método 2 tem esperança, dependendo de como você o faz. É melhor inserir os componentes principais em ordem decrescente de variação explicada. Uma abordagem mais interpretável é fazer o agrupamento variável e, em seguida, reduzir cada cluster a uma única pontuação (sem usar Y) e ajustar um modelo às pontuações do cluster.


+1. Por "agrupamento variável", você quer dizer análise fatorial - essa é uma estratégia que eu poderia usar (também antes de olhar para y). Penso na análise de agrupamentos como observações de agrupamento em vez de variáveis, mas tenho apenas conhecimento superficial de análises de agrupamentos.
gung - Restabelece Monica

11
Não parece haver nenhuma razão a priori para acreditar que as direções da variação máxima dos preditores estejam necessariamente altamente correlacionadas com a resposta . Talvez eu esteja enganado ou tenha entendido mal o seu comentário. Você poderia esclarecer?
cardeal

11
Além disso, parece que o OP não é (muito) que descreve de componentes principais de regressão em seu método 2.
cardeal

Eu não estava completamente claro na minha postagem original, mas preciso de um subconjunto das variáveis ​​originais. Portanto, uma análise ou agrupamento direto de componentes principais não é realmente o que estou procurando.
7608 Mike Spivey

11
O agrupamento variável está relacionado à análise fatorial, mas é mais simples. As variáveis ​​são agrupadas em como elas se correlacionam. Veja a varclusfunção no Hmiscpacote R ou PROC VARCLUS no SAS. A redução de dados pode ajudar no subconjunto de variáveis ​​se você tiver um pouco de cautela; você pode remover um cluster inteiro se seu valor- for 0,3. Nos componentes principais, existem técnicas como a redução de bateria, em que você aproxima os PCs com um subconjunto de suas variáveis ​​constituintes. P
31575 Frank Fellowski

3

No capítulo 5 do Data Mining with R, o autor mostra algumas maneiras de escolher os preditores mais úteis. (No contexto da bioinformática, em que cada linha de amostra possui mais de 12.000 colunas!)

Ele primeiro usa alguns filtros com base na distribuição estatística. Por exemplo, se você tiver meia dúzia de preditores, todos com média e sd semelhantes, poderá se safar mantendo apenas um deles.

Ele então mostra como usar uma floresta aleatória para descobrir quais são os preditores mais úteis. Aqui está um exemplo abstrato independente. Você pode ver que eu tenho 5 bons preditores, 5 ruins. O código mostra como manter os melhores 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')]

A última abordagem do autor é usar um algoritmo hierárquico de agrupamento para agrupar preditores semelhantes em, digamos, 30 grupos. Se você quiser 30 preditores diversos, escolha um de cada um desses 30 grupos, aleatoriamente.

Aqui está um código, usando os mesmos dados de amostra acima, para escolher 3 das 10 colunas:

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 

Meus dados de amostra não se adequam a essa abordagem, porque eu tenho 5 bons preditores e 5 que são apenas ruído. Se todos os 10 preditores foram ligeiramente correlacionada com y, e teve uma boa chance de ser ainda melhor quando usado em conjunto (o que é perfeitamente possível no domínio financeiro), então esta pode ser uma boa abordagem.


2

Você pode considerar usar um método como o LASSO que regularize os mínimos quadrados, selecionando uma solução que minimize a única norma do vetor de parâmetros. Acontece que, na prática, isso tem o efeito de minimizar o número de entradas diferentes de zero no vetor de parâmetro. Embora o LASSO seja popular em alguns círculos estatísticos, muitos outros métodos relacionados foram considerados no mundo do sensor de compressão.


Obrigado. Vou procurar LASSO. (Parece que ele está mencionado na referência cardeal dá, também.)
Mike Spivey
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.