Cómo reducir los predictores de la manera correcta para un modelo de regresión logística

9

Así que he estado leyendo algunos libros (o partes de ellos) sobre modelado ("Estrategias de modelado de regresión" de F. Harrell, entre otros), ya que mi situación actual en este momento es que necesito hacer un modelo logístico basado en datos de respuesta binaria. Tengo datos (predictores) continuos, categóricos y binarios en mi conjunto de datos. Básicamente tengo alrededor de 100 predictores en este momento, lo que obviamente es demasiado para un buen modelo. Además, muchos de estos predictores están relacionados, ya que a menudo se basan en la misma métrica, aunque un poco diferente.

De todos modos, lo que he estado leyendo, usando regresión univariada y técnicas escalonadas, es una de las peores cosas que puede hacer para reducir la cantidad de predictores. Creo que la técnica LASSO está bastante bien (si entendí eso correctamente), pero obviamente no puedes usar eso en 100 predictores y pensar que algo bueno saldrá de eso.

¿Cuáles son mis opciones aquí? ¿Realmente solo tengo que sentarme, hablar con todos mis supervisores y personas inteligentes en el trabajo, y realmente pensar cuáles podrían ser / deberían ser los 5 mejores predictores (podríamos estar equivocados), o qué enfoques debería considerar en su lugar?

Y sí, también sé que este tema es muy discutido (en línea y en libros), pero a veces parece un poco abrumador cuando eres un poco nuevo en este campo de modelado.

EDITAR:

En primer lugar, el tamaño de mi muestra es de +1000 pacientes (que es mucho en mi campo), y de esos hay entre 70-170 respuestas positivas (es decir, 170 respuestas sí versus aproximadamente 900 sin respuestas en uno de los casos) . Básicamente, la idea es predecir la toxicidad después del tratamiento con radiación. Tengo algunos datos prospectivos de respuesta binaria (es decir, la toxicidad, ya sea que la tenga (1) o no (0)), y luego tengo varios tipos de métricas. Algunas métricas son específicas del paciente, por ejemplo, edad, medicamentos utilizados, volumen de órganos y objetivos, diabetes, etc., y luego tengo algunas métricas específicas de tratamiento basadas en el campo de tratamiento simulado para el objetivo. A partir de eso, puedo recuperar varios predictores, que a menudo es muy relevante en mi campo, ya que la mayoría de la toxicidad está altamente correlacionada con la cantidad de radiación (es decir, dosis) recibida. Entonces, por ejemplo, si trato un tumor pulmonar, existe el riesgo de golpear el corazón con una cierta cantidad de dosis. Luego puedo calcular la cantidad x del volumen cardíaco que recibe la cantidad x de dosis, por ejemplo, " t simplemente elija uno para comenzar (aunque eso es lo que los experimentos anteriores han intentado, por supuesto, y lo que deseo hacer también), porque necesito saber "exactamente" en qué grado existe una gran correlación entre la toxicidad cardíaca y dosis de volumen (nuevamente, como ejemplo, hay otras métricas similares, donde se aplica la misma estrategia). Entonces sí, así es como se ve mi conjunto de datos. Algunas métricas diferentes y algunas métricas que son algo similares. t simplemente elija uno para comenzar (aunque eso es lo que los experimentos anteriores han intentado, por supuesto, y lo que deseo hacer también), porque necesito saber "exactamente" en qué grado existe una gran correlación entre la toxicidad cardíaca y dosis de volumen (nuevamente, como ejemplo, hay otras métricas similares, donde se aplica la misma estrategia). Entonces sí, así es como se ve mi conjunto de datos. Algunas métricas diferentes y algunas métricas que son algo similares. es más o menos cómo se ve mi conjunto de datos. Algunas métricas diferentes y algunas métricas que son algo similares. es más o menos cómo se ve mi conjunto de datos. Algunas métricas diferentes y algunas métricas que son algo similares.

Lo que luego quiero hacer es crear un modelo predictivo para poder predecir qué pacientes tendrán riesgo de sufrir algún tipo de toxicidad. Y dado que los datos de respuesta son binarios, mi idea principal era, por supuesto, usar un modelo de regresión logística. Al menos eso es lo que otras personas han hecho en mi campo. Sin embargo, al revisar muchos de estos documentos, donde ya se ha hecho, algunos de ellos simplemente parecen incorrectos (al menos cuando se leen estos tipos específicos de libros de modelos como el de F. Harrel). Muchos usan el análisis de regresión univariante para elegir predictores, y los usan en análisis multivariados (algo que se desaconseja si no me equivoco), y también usan técnicas escalonadas para reducir la cantidad de predictores. Por supuesto, no todo es malo. Muchos usan LASSO, PCA, validación cruzada, bootstrapping, etc., pero los que he visto,

Con respecto a la selección de funciones, aquí es probablemente donde estoy ahora. ¿Cómo elijo / encuentro los predictores correctos para usar en mi modelo? He intentado estos enfoques univariados / escalonados, pero cada vez pienso: "¿Por qué hacerlo, si está mal?". Pero tal vez sea una buena manera de mostrar, al menos al final, cómo un "buen modelo" hecho de la manera correcta se enfrenta a un "mal modelo" hecho de la manera incorrecta. Así que probablemente podría hacerlo de una manera un poco incorrecta ahora, para lo que necesito ayuda es para obtener una dirección para hacerlo de la manera correcta.

Perdón por la edición, y por ser tan larga.

EDIT 2: solo un ejemplo rápido de cómo se ven mis datos:

'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 ...

Y si ejecuto table(data$Toxicity)la salida es:

> table(data$Toxicity)
   0    1 
1088   63 

Nuevamente, esto es para un tipo de toxicidad. Tengo 3 otros también.

Denver Dang
fuente
1
¿Qué pretendes hacer? ¿Predicción o inferencia, o algo más?
Stephan Kolassa
Esto se llama selección de características . Si debe usar la regresión, entonces las características categóricas tienen un punto clave, pero para los métodos de árbol puede usarlas tal cual. Incluso podría descubrir sus términos de interacción o asociación n-way más predictivos, y usarlos.
smci
"¿Realmente solo tengo que sentarme, hablar con la gente y realmente pensar / razonar los predictores principales?" Demonios, no, la intuición es un punto de partida, pero es por eso que hay métodos de selección de características; Los resultados de muchos experimentos superan a la intuición.
smci
1
@smci lo siento por no estar claro. Entonces, en mi campo (oncología de radiación) hacemos planes de tratamiento, que básicamente es una representación 3D de cómo se distribuye la radiación / dosis alrededor de un objetivo. Desafortunadamente, esto no se puede hacer sin golpear al menos una pequeña cantidad de tejido sano. Entonces, a partir de este mapa 3D, por ejemplo, puedo obtener información sobre cuán grande recibe un volumen x de radiación / dosis. Pero como puede imaginar, puedo "preguntar" en pasos como "cuánta radiación recibe el 1% de este volumen de estructura", y luego el 2%, el 3%. En principio, los valores serán algo similares.
Denver Dang
1
@smci, si la predicción es el objetivo de los PO, entonces la correlación no debería ser motivo de preocupación. La alta correlación entre las variables realmente solo sería una gran preocupación al tratar de interpretar las variables incluidas en el modelo.
StatsStudent

Respuestas:

4

Algunas de las respuestas que recibió sobre la selección de funciones push están fuera de la base.

El lazo o mejor la red elástica harán la selección de características, sino como a cabo en punta por encima de usted será muy decepcionado por la volatilidad del conjunto de características "seleccionados". Creo que la única esperanza real en su situación es la reducción de datos, es decir, el aprendizaje no supervisado, como enfatizo en mi libro. La reducción de datos trae más interpretabilidad y especialmente más estabilidad. Recomiendo componentes principales dispersos o agrupamiento variable seguido de componentes principales regulares en grupos.

El contenido de información en su conjunto de datos es muy, muy bajo para que cualquier algoritmo de selección de características sea confiable.

Frank Harrell
fuente
En primer lugar, gracias por tomarse el tiempo para comentar. En segundo lugar, si no me equivoco, el aprendizaje no supervisado es cuando no hace uso (o no tiene) la respuesta particular de las variables de respuesta (es decir, 1 o 0), y hace que la computadora "adivine "cómo se debe dividir la distribución. ¿Pero la regresión logística (y lineal) es supervisada hasta donde yo sé? ¿Entonces tu recomendación es abandonar esa metodología? Por un lado, me gusta la idea, pero por otro lado, la regresión logística y probit es la forma en que casi todos los trabajos de modelado en mi campo (datos similares al mío) lo han estado haciendo hasta ahora.
Denver Dang
Entonces, ¿no estaría yendo por las ramas aquí, o simplemente tengo que asumir que todos los demás lo han estado haciendo "mal" para siempre?
Denver Dang
3
No todos, pero la mayoría de las personas definitivamente lo han estado haciendo mal. Este fue un motivador principal para escribir estrategias de modelado de regresión . El objetivo de la reducción de datos es disminuir la cantidad de aprendizaje supervisado que se le pide a la regresión logística que haga. Por ejemplo, puede reducir 100 características candidatas a 5 puntajes de grupo de manera efectiva, luego debe estimar solo 5 parámetros + intercepción.
Frank Harrell
2
¿Cómo te sientes acerca de los modelos de coeficientes variables en este caso (como agregué a mi respuesta)?
Ben Bolker
@FrankHarrell suena bastante interesante. Pero perdón por preguntar, ¿por qué el aprendizaje supervisado es malo, o al menos algo malo, ya que parece que estás insinuando?
Denver Dang
8

+1 para "a veces parece un poco abrumador". Realmente depende (como dice Harrell claramente; vea la sección al final del Capítulo 4) si desea hacer

  • Tendrá que usar la validación cruzada para elegir el grado de penalización, lo que destruirá su capacidad de hacer inferencia (construir intervalos de confianza en las predicciones) a menos que use métodos de inferencia de alta dimensión de vanguardia (por ejemplo, Dezeure et al 2015 ; I No he probado estos enfoques, pero parecen razonables ...)

  • análisis exploratorio : diviértete, sé transparente y honesto, no cites ningún valor p.

Para el caso de uso particular que ha descrito ahora (un grupo de predictores representa esencialmente una distribución acumulativa de la dosis recibida por diferentes fracciones del corazón), es posible que desee buscar modelos de coeficientes variables (un poco difícil de buscar) , que básicamente se ajustan a una curva suave para el efecto del CDF (se pueden implementar en el mgcvpaquete de R ).

Ben Bolker
fuente
Mi tamaño de muestra es +1000, y dependiendo de qué variable de respuesta (tengo 4), tengo entre 75-170 respuestas positivas (o negativas, dependiendo de cómo lo veas) del +1000. No sé si eso facilita algo, es decir, puedo descartar algunos pasos ya que el conjunto de muestras es bastante grande (al menos en mi campo).
Denver Dang
¿La validación cruzada destruiría la capacidad de hacer inferencia? Tal vez. Estoy pensando que uno podría iniciar antes de la validación cruzada para obtener intervalos de confianza para las predicciones. Esto puede ser factible con 1000 observaciones.
JTH
la inferencia posterior a la selección es realmente difícil; Si usa todo el conjunto de datos para ajustar los hiperparámetros (como la fuerza de la penalización), entonces se encuentra en la misma situación. Tendría que describir su enfoque de arranque + CV antes de que pueda decir si creo que podría funcionar ...
Ben Bolker
0

Hay muchos enfoques diferentes. Lo que recomendaría es probar algunos simples, en el siguiente orden:

resnet
fuente
1
Creo que los tres métodos serán inestables.
Frank Harrell
depende de cómo se defina inestable. En la práctica, usualmente usa algún tipo de validación cruzada como k-fold o leave-one-out y juzga en función del rendimiento general + varianza (también conocido como el método 1SE), que características elige al final.
Resnet
Bootstrapping y validación cruzada solo validan algún índice predictivo para el proceso que genera el modelo. Esto da como resultado una buena estimación de ese índice para un modelo seleccionado usando ese proceso, pero no proporciona ninguna comodidad para la estructura de un modelo que se desarrolló una vez, es decir, el modelo general. Observe la estructura seleccionada (es decir, las características seleccionadas) en las muestras para ver la volatilidad.
Frank Harrell