¿Cómo lidiar con la multicolinealidad al realizar la selección de variables?

28

Tengo un conjunto de datos con 9 variables independientes continuas. Estoy tratando de seleccionar entre estas variables para ajustar un modelo a una sola variable de porcentaje (dependiente) Score. Desafortunadamente, sé que habrá una colinealidad seria entre varias de las variables.

Intenté usar la stepAIC()función en R para la selección de variables, pero ese método, curiosamente, parece sensible al orden en que las variables se enumeran en la ecuación ...

Aquí está mi código R (porque es un porcentaje de datos, uso una transformación logit para Score):

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)

Por alguna razón, descubrí que las variables enumeradas al comienzo de la ecuación terminan siendo seleccionadas por la stepAIC()función, y el resultado puede manipularse enumerando, por ejemplo, Var9primero (siguiendo la tilde).

¿Cuál es una forma más efectiva (y menos controvertida) de ajustar un modelo aquí? En realidad, no estoy decidido a usar la regresión lineal: lo único que quiero es poder entender cuál de las 9 variables realmente está impulsando la variación en la Scorevariable. Preferiblemente, este sería un método que tenga en cuenta el gran potencial de colinealidad en estas 9 variables.

Julie
fuente
66
La colinealidad va a significar, sin embargo, haga el análisis, que es esencialmente imposible determinar si una variable está 'impulsando' la variación más o menos que una variable con la que es altamente colineal. Teniendo en cuenta esta limitación, puede probar el lazo como un medio para seleccionar una pequeña cantidad de variables que predicen de manera óptima, luego informar el conjunto de variables que selecciona y aquellas con las que ese conjunto es altamente colineal. El lazo agrupado es otra opción.
invitado
44
@ invitado: El lazo no funciona particularmente bien en presencia de una fuerte colinealidad, especialmente con respecto al problema de la selección del modelo.
cardenal
2
@cardinal, el lazo funciona bien, pero si se correlacionan varias variables, tenderá a seleccionar solo una de ellas, por lo que sugerí mirar el conjunto de variables altamente colineales. Decidir usar algo más complejo que este 'valor predeterminado' requeriría una evaluación de la utilidad y una noción más sólida de para qué está destinado este modelo.
invitado
2
Es posible que desee examinar la función bicreg {paquete BMA}. Tenga en cuenta que necesita un conjunto de datos de casos completos para que funcione correctamente. Lo encuentro extremadamente útil para la selección del modelo.
Dominic Comtois
1
@guest: Bueno, eso depende mucho de la manera en que se selecciona el parámetro de regularización. En realidad, en ciertos regímenes, el lazo tiene una tendencia (demostrable) a seleccionar parámetros en exceso . El OP me ha preguntado "lo único que quiero es poder entender cuál de las 9 variables realmente está impulsando la variación en la Scorevariable", que es la oración en la que me he centrado demasiado. En presencia de una fuerte colinealidad, el lazo no va a ayudar con eso, al menos en interpretaciones más estrictas de la observación del OP.
cardenal

Respuestas:

14

En primer lugar, un muy buen recurso para este problema es T. Keith, Regresión múltiple y más allá. Hay mucho material en el libro sobre modelado de caminos y selección de variables y creo que allí encontrará respuestas exhaustivas a sus preguntas.

Una forma de abordar la multicolinealidad es centrar los predictores, es decir, restar la media de una serie de cada valor. La regresión de cresta también se puede usar cuando los datos son altamente colineales. Finalmente, la regresión secuencial puede ayudar a comprender las relaciones causa-efecto entre los predictores, junto con el análisis de la secuencia de tiempo de los eventos predictores.

¿Las 9 variables muestran colinealidad? Para el diagnóstico, puede usar el factor de inflación de varianza de Cohen 2003. Un valor VIF> = 10 indica alta colinealidad y errores estándar inflados. Entiendo que está más interesado en la relación causa-efecto entre los predictores y los resultados. De lo contrario, la multicolinealidad no se considera un problema grave para la predicción, como puede confirmar al verificar el MAE de los datos fuera de la muestra con los modelos construidos agregando sus predictores uno a la vez. Si sus predictores tienen un poder de predicción marginal, encontrará que el MAE disminuye incluso en presencia de multicolinealidad modelo.

Robert Kubrick
fuente
16

Debido a que es tan difícil determinar qué variables descartar, a menudo es mejor no descartar variables. Dos formas de proceder a lo largo de esta línea son (1) usar un método de reducción de datos (por ejemplo, agrupación de variables o componentes principales) y poner puntajes de resumen en el modelo en lugar de variables individuales y (2) poner todas las variables en el modelo pero no probar por el efecto de una variable ajustada por los efectos de las variables competidoras. Para (2), las pruebas fragmentarias de variables competidoras son poderosas porque las variables colineales unen fuerzas en la prueba general de asociación de grado múltiple de libertad, en lugar de competir entre sí como cuando se prueban variables individualmente.

Frank Harrell
fuente
yoi podría explicar por favor, simplementeand put summary scores into the model
SIslam
1
Mis notas del curso en biostat.mc.vanderbilt.edu/rms entran en detalles
Frank Harrell
1

Si desea realizar una selección de variables en presencia de una alta colinealidad, puedo recomendar el paquete l0ara , que se ajusta a GLM penalizados L0 utilizando un procedimiento de cresta adaptativo iterativo . Como este método se basa en última instancia en la regresión regularizada por crestas, puede tratar muy bien con la colinealidad, y en mis simulaciones produjo mucho menos falsos positivos y al mismo tiempo ofreció un excelente rendimiento de predicción en comparación con, por ejemplo, LASSO, red elástica o LASSO adaptativo. Alternativamente, también puedes probar el paquete L0Learncon una combinación de penalización L0 y L2. La penalización L0 favorece la escasez (es decir, modelos pequeños) mientras que la penalización L2 regulariza la colinealidad. También se sugiere a menudo una red elástica (que usa una combinación de una penalización L1 y L2), pero en mis pruebas esto produjo más falsos positivos, más los coeficientes estarán muy sesgados. Este sesgo se puede eliminar si usa métodos penalizados L0 en su lugar (también conocido como el mejor subconjunto): es un llamado estimador de oráculo, que simultáneamente obtiene coeficientes de parámetros consistentes e imparciales. Los parámetros de regularización en todos estos métodos deben optimizarse mediante validación cruzada para proporcionar un rendimiento óptimo de predicción fuera de la muestra. Si también desea obtener niveles de significancia e intervalos de confianza en sus parámetros, también puede hacerlo a través de bootstrapping no paramétrico.

El algoritmo iterativo de cresta adaptativa de l0ara(a veces denominado cresta adaptativa rota), como la red elástica, posee un efecto de agrupación, lo que hará que seleccione variables altamente correlacionadas en grupos tan pronto como ingresen a su modelo. Esto tiene sentido, por ejemplo, si tuviera dos variables casi colineales en su modelo, dividiría el efecto por igual entre ambas.

Si está analizando datos de proporción, es mejor usar un modelo de regresión logística por cierto: el l0arapaquete le permite hacerlo en combinación con una penalización L0; para el L0Learnpaquete, esto se admitirá en breve.

Tom Wenseleers
fuente