Como reduzir os preditores da maneira certa para um modelo de regressão logística


9

Então, eu tenho lido alguns livros (ou partes deles) sobre modelagem ("Estratégias de modelagem de regressão" de F. Harrell, entre outros), já que minha situação atual é que preciso fazer um modelo logístico baseado em dados de resposta binária. Eu tenho dados contínuos, categóricos e binários (preditores) no meu conjunto de dados. Basicamente, eu tenho cerca de 100 preditores agora, o que obviamente é demais para um bom modelo. Além disso, muitos desses preditores são relacionados, pois geralmente são baseados na mesma métrica, embora um pouco diferente.

De qualquer forma, o que tenho lido, usando regressão univariada e técnicas passo a passo, são algumas das piores coisas que você pode fazer para reduzir a quantidade de preditores. Eu acho que a técnica do LASSO está bem (se eu entendi direito), mas obviamente você não pode usá-lo em 100 preditores e acha que algum bem virá disso.

Então, quais são minhas opções aqui? Eu realmente só tenho que me sentar, conversar com todos os meus supervisores e pessoas inteligentes no trabalho e realmente pensar sobre quais os 5 melhores preditores poderiam / deveriam ser (podemos estar errados) ou que abordagem (s) devo (s) considerar em vez disso?

E sim, eu também sei que esse tópico é muito discutido (online e em livros), mas às vezes parece um pouco esmagador quando você é um pouco novo nesse campo de modelagem.

EDITAR:

Primeiro de tudo, o tamanho da minha amostra é de 1 mil pacientes (o que é muito no meu campo), e desses há entre 70-170 respostas positivas (ou seja, 170 respostas sim versus cerca de 900 respostas em um dos casos) . Basicamente, a idéia é prever toxicidade após o tratamento com radiação. Eu tenho alguns dados prospectivos de resposta binária (ou seja, a toxicidade, você possui (1) ou não (0)) e, em seguida, tenho vários tipos de métricas. Algumas métricas são específicas do paciente, por exemplo, idade, medicamentos usados, volume de órgãos e alvos, diabetes etc., e então eu tenho algumas métricas específicas do tratamento com base no campo de tratamento simulado para o alvo. A partir disso, posso recuperar vários preditores, o que geralmente é altamente relevante em meu campo, uma vez que a maior parte da toxicidade está altamente correlacionada com a quantidade de radiação (iedose) recebida. Por exemplo, se eu tratar um tumor pulmonar, existe o risco de atingir o coração com uma certa dose. Posso então calcular a quantidade x do volume cardíaco que recebe a quantidade x da dose, por exemplo " basta escolher uma para começar (embora seja isso que experimentos anteriores tentaram, é claro, e o que desejo fazer também), porque preciso saber "exatamente" em que grau há realmente uma grande correlação entre toxicidade cardíaca e dose de volume (novamente, como exemplo, existem outras métricas semelhantes, nas quais a mesma estratégia é aplicada). Então sim, é assim que meu conjunto de dados se parece. Algumas métricas diferentes e algumas que são um pouco semelhantes. basta escolher uma para começar (embora seja isso que experimentos anteriores tentaram, é claro, e o que desejo fazer também), porque preciso saber "exatamente" em que grau há realmente uma grande correlação entre toxicidade cardíaca e dose de volume (novamente, como exemplo, existem outras métricas semelhantes, nas quais a mesma estratégia é aplicada). Então sim, é assim que meu conjunto de dados se parece. Algumas métricas diferentes e algumas que são um pouco semelhantes. é como o meu conjunto de dados se parece. Algumas métricas diferentes e algumas que são um pouco semelhantes. é como o meu conjunto de dados se parece. Algumas métricas diferentes e algumas que são um pouco semelhantes.

O que eu quero fazer é criar um modelo preditivo para que eu possa prever quais pacientes correm o risco de obter algum tipo de toxicidade. E como os dados de resposta são binários, minha ideia principal era, obviamente, usar um modelo de regressão logística. Pelo menos é o que outras pessoas fizeram no meu campo. No entanto, ao examinar muitos desses trabalhos, onde isso já foi feito, alguns deles parecem errados (pelo menos ao ler esses tipos específicos de livros de modelagem, como os de F. Harrel). Muitos usam a análise de regressão univariada para escolher preditores, e os usam em análises multivariadas (algo que é desaconselhado se não me engano), e também muitos usam técnicas passo a passo para reduzir a quantidade de preditores. Claro que nem tudo é ruim. Muitos usam LASSO, PCA, validação cruzada, bootstrapping etc., mas os que eu observei,

No que diz respeito à seleção de recursos, provavelmente é onde estou agora. Como escolho / encontro os preditores corretos para usar no meu modelo? Eu tentei essas abordagens univariadas / passo a passo, mas toda vez que penso: "Por que fazê-lo, se estiver errado?". Mas talvez seja uma boa maneira de mostrar, pelo menos no final, como um "bom modelo" feito da maneira correta se compara a um "modelo ruim" feito da maneira errada. Então, eu provavelmente poderia fazê-lo da maneira um pouco errada agora, o que eu preciso de ajuda é obter uma direção para fazê-lo da maneira certa.

Desculpe pela edição e por ser tão longa.

EDIÇÃO 2: Apenas um exemplo rápido de como meus dados se parecem:

'data.frame':   1151 obs. of  100 variables:
 $ Toxicity              : Factor w/ 2 levels "0","1": 2 1 1 1 1 1 1 1 1 1 ...
 $ Age                   : num  71.9 64 52.1 65.1 63.2 ...
 $ Diabetes              : Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Risk.Category         : Ord.factor w/ 3 levels "LOW"<"INTERMEDIATE"<..: 1 1 1 1 2 1 1 1 1 3 ...
 $ Organ.Volume.CC       : num  136.1 56.7 66 136.6 72.8 ...
 $ Target.Volume.CC      : num  102.7 44.2 58.8 39.1 56.3 ...
 $ D1perc                : num  7961 7718 7865 7986 7890 ...
 $ D1.5CC                : num  7948 7460 7795 7983 7800 ...
 $ D1CC                  : num  7996 7614 7833 7997 7862 ...
 $ D2perc                : num  7854 7570 7810 7944 7806 ...
 $ D2.5CC                : num  7873 7174 7729 7952 7604 ...
 $ D2CC                  : num  7915 7313 7757 7969 7715 ...
 $ D3perc                : num  7737 7379 7758 7884 7671 ...
 $ D3.5CC                : num  7787 6765 7613 7913 7325 ...
 $ D3CC                  : num  7827 6953 7675 7934 7480 ...
 $ D4perc                : num  7595 7218 7715 7798 7500 ...
 $ D5perc                : num  7428 7030 7638 7676 7257 ...
 $ DMEAN                 : num  1473 1372 1580 1383 1192 ...
 $ V2000CGY              : num  24.8 23.7 25.9 22.3 19.3 ...
 $ V2000CGY_CC           : num  33.7 13.4 17.1 30.4 14 ...
 $ V2500CGY              : num  22.5 21.5 24 20.6 17.5 ...
 $ V2500CGY_CC           : num  30.7 12.2 15.9 28.2 12.7 ...
 $ V3000CGY              : num  20.6 19.6 22.4 19.1 15.9 ...
 $ V3000CGY_CC           : num  28.1 11.1 14.8 26.2 11.6 ...
 $ V3500CGY              : num  18.9 17.8 20.8 17.8 14.6 ...
 $ V3500CGY_CC           : num  25.7 10.1 13.7 24.3 10.6 ...
 $ V3900CGY              : num  17.5 16.5 19.6 16.7 13.6 ...
 $ V3900CGY_CC           : num  23.76 9.36 12.96 22.85 9.91 ...
 $ V4500CGY              : num  15.5 14.4 17.8 15.2 12.2 ...
 $ V4500CGY_CC           : num  21.12 8.18 11.76 20.82 8.88 ...
 $ V5000CGY              : num  13.9 12.8 16.4 14 11 ...
 $ V5000CGY_CC           : num  18.91 7.25 10.79 19.09 8.03 ...
 $ V5500CGY              : num  12.23 11.14 14.84 12.69 9.85 ...
 $ V5500CGY_CC           : num  16.65 6.31 9.79 17.33 7.17 ...
 $ V6000CGY              : num  10.56 9.4 13.19 11.34 8.68 ...
 $ V6000CGY_CC           : num  14.37 5.33 8.7 15.49 6.32 ...
 $ V6500CGY              : num  8.79 7.32 11.35 9.89 7.44 ...
 $ V6500CGY_CC           : num  11.96 4.15 7.49 13.51 5.42 ...
 $ V7000CGY              : num  6.76 5.07 9.25 8.27 5.86 ...
 $ V7000CGY_CC           : num  9.21 2.87 6.1 11.3 4.26 ...
 $ V7500CGY              : num  4.61 2.37 6.22 6.13 4 ...
 $ V7500CGY_CC           : num  6.27 1.34 4.11 8.38 2.91 ...
 $ V8000CGY              : num  0.7114 0.1521 0.0348 0.6731 0.1527 ...
 $ V8000CGY_CC           : num  0.9682 0.0863 0.023 0.9194 0.1112 ...
 $ V8200CGY              : num  0.087 0 0 0 0 ...
 $ V8200CGY_CC           : num  0.118 0 0 0 0 ...
 $ V8500CGY              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ V8500CGY_CC           : num  0 0 0 0 0 0 0 0 0 0 ...
 $ n_0.02                : num  7443 7240 7371 7467 7350 ...
 $ n_0.03                : num  7196 6976 7168 7253 7112 ...
 $ n_0.04                : num  6977 6747 6983 7055 6895 ...
 $ n_0.05                : num  6777 6542 6811 6871 6693 ...
 $ n_0.06                : num  6592 6354 6649 6696 6503 ...
 $ n_0.07                : num  6419 6180 6496 6531 6325 ...
 $ n_0.08                : num  6255 6016 6350 6374 6155 ...
 $ n_0.09                : num  6100 5863 6211 6224 5994 ...
 $ n_0.1                 : num  5953 5717 6078 6080 5840 ...
 $ n_0.11                : num  5813 5579 5950 5942 5692 ...
 $ n_0.12                : num  5679 5447 5828 5809 5551 ...
 $ n_0.13                : num  5551 5321 5709 5681 5416 ...
 $ n_0.14                : num  5428 5201 5595 5558 5285 ...
 $ n_0.15                : num  5310 5086 5485 5439 5160 ...
 $ n_0.16                : num  5197 4975 5378 5324 5039 ...
 $ n_0.17                : num  5088 4868 5275 5213 4923 ...
 $ n_0.18                : num  4982 4765 5176 5106 4811 ...
 $ n_0.19                : num  4881 4666 5079 5002 4702 ...
 $ n_0.2                 : num  4783 4571 4985 4901 4597 ...
 $ n_0.21                : num  4688 4478 4894 4803 4496 ...
 $ n_0.22                : num  4596 4389 4806 4708 4398 ...
 $ n_0.23                : num  4507 4302 4720 4616 4303 ...
 $ n_0.24                : num  4421 4219 4636 4527 4210 ...
 $ n_0.25                : num  4337 4138 4555 4440 4121 ...
 $ n_0.26                : num  4256 4059 4476 4355 4035 ...
 $ n_0.27                : num  4178 3983 4398 4273 3951 ...
 $ n_0.28                : num  4102 3909 4323 4193 3869 ...
 $ n_0.29                : num  4027 3837 4250 4115 3790 ...
 $ n_0.3                 : num  3955 3767 4179 4039 3713 ...
 $ n_0.31                : num  3885 3699 4109 3966 3639 ...
 $ n_0.32                : num  3817 3633 4041 3894 3566 ...
 $ n_0.33                : num  3751 3569 3975 3824 3496 ...
 $ n_0.34                : num  3686 3506 3911 3755 3427 ...
 $ n_0.35                : num  3623 3445 3847 3689 3361 ...
 $ n_0.36                : num  3562 3386 3786 3624 3296 ...
 $ n_0.37                : num  3502 3328 3725 3560 3233 ...
 $ n_0.38                : num  3444 3272 3666 3498 3171 ...
 $ n_0.39                : num  3387 3217 3609 3438 3111 ...
 $ n_0.4                 : num  3332 3163 3553 3379 3053 ...
 $ n_0.41                : num  3278 3111 3498 3321 2996 ...
 $ n_0.42                : num  3225 3060 3444 3265 2941 ...
 $ n_0.43                : num  3173 3010 3391 3210 2887 ...
 $ n_0.44                : num  3123 2961 3339 3156 2834 ...
 $ n_0.45                : num  3074 2914 3289 3103 2783 ...
 $ n_0.46                : num  3026 2867 3239 3052 2733 ...
 $ n_0.47                : num  2979 2822 3191 3002 2684 ...
 $ n_0.48                : num  2933 2778 3144 2953 2637 ...
 $ n_0.49                : num  2889 2734 3097 2905 2590 ...

E se eu executar table(data$Toxicity)a saída é:

> table(data$Toxicity)
   0    1 
1088   63 

Novamente, isso é para um tipo de toxicidade. Eu tenho outros 3 também.


11
O que você pretende fazer? Previsão ou inferência, ou algo mais?
precisa saber é o seguinte

Isso é chamado de seleção de recurso . Se você precisar usar a regressão, os recursos categóricos terão um ponto-único, mas para os métodos em árvore, você poderá usá-los como estão. Você pode até descobrir seus termos preditivos de interação ou associação n-way e usá-los.
smci 21/03/19

"Eu realmente só tenho que me sentar, conversar com as pessoas e realmente pensar / raciocinar sobre os principais preditores?" Inferno não, a intuição é um ponto de partida, mas é por isso que existem métodos de seleção de recursos; Os resultados de muitas experiências superam a intuição.
smci 21/03/19

11
@smci desculpe por não estar claro. Então, no meu campo (oncologia por radiação), fazemos planos de tratamento, que basicamente são uma representação em 3D de como a radiação / dose é distribuída em torno de um alvo. Infelizmente, isso não pode ser feito sem atingir pelo menos uma pequena quantidade de tecido saudável. Portanto, neste mapa 3D, por assim dizer, posso obter informações sobre o tamanho de um volume que recebe uma quantidade x de radiação / dose. Mas, como você pode imaginar, posso "perguntar" em etapas como "quanta radiação recebe 1% desse volume da estrutura" e depois 2%, 3%. Em princípio, os valores serão um pouco semelhantes.
Denver Dang

11
@smci, se a previsão é o objetivo do OP, a correlação não deve ser preocupante. A alta correlação entre as variáveis ​​seria realmente uma grande preocupação ao tentar interpretar as variáveis ​​incluídas no modelo.
StatsStudent

Respostas:


4

Algumas das respostas que você recebeu sobre a seleção de recursos por push estão fora da base.

O laço ou melhor, a rede elástica fará a seleção de recursos, mas, como indicado acima, você ficará bastante desapontado com a volatilidade do conjunto de recursos "selecionados". Acredito que a única esperança real na sua situação é a redução de dados, ou seja, aprendizado não supervisionado, como enfatizo em meu livro. A redução de dados traz mais interpretabilidade e especialmente mais estabilidade. Eu recomendo componentes principais esparsos ou clustering variável seguido por componentes principais regulares em clusters.

O conteúdo das informações no seu conjunto de dados é muito, muito baixo para que qualquer algoritmo de seleção de recurso seja confiável.


Antes de tudo, obrigado por reservar um tempo para comentar. Em segundo lugar, se não me engano, o aprendizado não supervisionado é quando você não utiliza (ou não possui) a resposta específica da (s) variável (s) de resposta (ex. 1 ou 0) e faz o computador "adivinhar "como a distribuição deve ser dividida. Mas a regressão logística (e linear) é supervisionada até onde eu sei? Então sua recomendação é abandonar essa metodologia? Por um lado, gosto da idéia, mas, por outro, a regressão logística e probit é como quase todos os trabalhos de modelagem em meu campo (dados semelhantes aos meus) estão fazendo até agora.
Denver Dang

Então, eu não estaria saindo mal aqui, ou eu apenas tenho que assumir que todo mundo está fazendo isso "errado" desde sempre?
Denver Dang

3
Nem todo mundo, mas a maioria das pessoas, definitivamente está fazendo errado. Esse foi o principal motivador para escrever estratégias de modelagem de regressão . O objetivo da redução de dados é diminuir a quantidade de aprendizado supervisionado que a regressão logística é solicitada a realizar. Por exemplo, você pode reduzir 100 recursos candidatos para efetivamente 5 pontuações de cluster e precisar estimar apenas 5 parâmetros + interceptação.
Frank Harrell

2
Como você se sente sobre modelos de coeficiente variável neste caso (como acrescentei à minha resposta)?
precisa

@FrankHarrell parece bastante interessante. Mas desculpe-me por perguntar, por que o aprendizado supervisionado é ruim, ou pelo menos um pouco ruim, como parece estar sugerindo?
Denver Dang

8

+1 para "às vezes parece um pouco esmagador". Realmente depende (como Harrell afirma claramente; veja a seção no final do Capítulo 4) se você deseja fazer

  • Você precisará usar a validação cruzada para escolher o grau de penalização, o que destruirá sua capacidade de fazer inferência (construa intervalos de confiança nas previsões), a menos que você use métodos avançados de inferência de alta dimensão (por exemplo, Dezeure et al 2015 ; I já não tentou essas abordagens, mas eles parecem sensatas ...)

  • análise exploratória : divirta-se, seja transparente e honesto, não cite nenhum valor-p.

Para o caso de uso específico que você descreveu agora (vários dos seus preditores representam essencialmente uma distribuição cumulativa da dose recebida por diferentes frações do coração), convém procurar modelos de coeficiente variável (um pouco difícil de procurar) , que basicamente se encaixam em uma curva suave para o efeito do CDF (eles podem ser implementados no mgcvpacote de R ).


O tamanho da minha amostra é +1000 e, dependendo de qual variável de resposta (eu tenho 4), tenho entre 75-170 respostas positivas (ou negativas, dependendo de como você a vê) do +1000. Não sei se isso facilita alguma coisa, ou seja, posso descartar algumas etapas, pois o conjunto de amostras é bastante grande (pelo menos no meu campo).
Denver Dang

A validação cruzada destruiria a capacidade de fazer inferência? Talvez. Eu estou pensando que alguém poderia inicializar antes da validação cruzada para obter intervalos de confiança para previsões. Isso pode ser possível com 1000 observações.
JTH 21/03/19

inferência pós-seleção é realmente difícil; se você usar todo o conjunto de dados para ajustar os hiperparâmetros (como a força da penalização), estará na mesma situação. Você teria que descrever sua abordagem + CV de inicialização antes que eu possa dizer se eu acreditar que podia obras ...
Ben Bolker

0

Existem muitas abordagens diferentes. O que eu recomendaria é tentar alguns simples, na seguinte ordem:


11
Eu acredito que todos esses três métodos serão considerados instáveis.
23719 Frank Harrell

isso depende de como você define instável. Na prática, você geralmente usa algum tipo de validação cruzada como k-fold ou leave-one-out e julga com base no desempenho geral + variação (também conhecido como o método 1SE), que apresenta os recursos que você acaba escolhendo.
Resnet 21/03/19

O bootstrapping e a validação cruzada validam apenas algum índice preditivo para o processo que gera o modelo. Isso resulta em uma boa estimativa desse índice para um modelo selecionado usando esse processo, mas não fornece nenhum conforto para a estrutura de um modelo que foi desenvolvido uma vez, ou seja, o modelo geral. Observe a estrutura selecionada (ou seja, os recursos selecionados) nas resamples para ver a volatilidade.
22419 Frank Harrell
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.