32 votos

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

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

He intentado utilizar la función stepAIC() en R para la selección de variables, pero ese método, curiosamente, parece ser sensible al orden en el que las variables están listadas en la ecuación...

Aquí está mi código en R (como se trata de datos de porcentaje, utilizo 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, he descubierto que las variables listadas al principio de la ecuación terminan siendo seleccionadas por la función stepAIC(), y el resultado puede ser manipulado al listar, por ejemplo, Var9 primero (después de la tilde).

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

9 votos

La colinealidad va a significar, sin importar cómo se haga el análisis, que es prácticamente imposible determinar si una variable está 'impulsando' la variación más o menos que una variable con la que está altamente colineal. Teniendo en cuenta esta limitación, podrías intentar el lasso como medio para seleccionar un pequeño número de variables que predicen de manera óptima, luego reportar el conjunto de variables que selecciona y aquellas con las que ese conjunto está altamente colineal. El lasso agrupado es otra opción.

4 votos

@guest: El lazo no funciona particularmente bien en presencia de fuerte colinealidad, especialmente en relación con el problema de selección de modelos.

0 votos

@cardinal, ¿cuáles son las alternativas entonces?

19voto

dan90266 Puntos 609

Porque es tan difícil determinar qué variables desechar, a menudo es mejor no desechar variables. Dos formas de proceder en esta línea son (1) utilizar un método de reducción de datos (por ejemplo, clustering de variables o componentes principales) y colocar puntuaciones resumidas en el modelo en lugar de variables individuales y (2) colocar todas las variables en el modelo pero no probar el efecto de una variable ajustada por los efectos de variables competidoras. Para (2), las pruebas de bloques de variables competidoras son poderosas porque las variables colineales se unen en la prueba general de asociación de múltiples grados de libertad, en lugar de competir entre sí como cuando se prueban variables individualmente.

2 votos

¿Podrías por favor explicar de manera sencilla y poner las puntuaciones resumen en el modelo

1 votos

Mis notas del curso en biostat.mc.Vanderbilt.edu/rms entran en detalle

19voto

rvk Puntos 11

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

Una forma de abordar la multicolinealidad es centrar los predictores, es decir, restar la media de una serie a cada valor.

La regresión de Ridge también se puede utilizar cuando los datos son altamente colineales.

Finalmente, la regresión secuencial puede ayudar a comprender las relaciones causa-efecto entre los predictores, en conjunto con el análisis de la secuencia temporal de los eventos predictores.

¿Mostraron las 9 variables colinealidad? Para el diagnóstico, puedes usar el factor de inflación de la varianza de Cohen 2003. Un valor de VIF >= 10 indica una alta colinealidad y errores estándar inflados. Entiendo que estás más interesado en la relación causa-efecto entre los predictores y los resultados. Si no lo estás, la multicolinealidad no se considera un problema grave para la predicción, ya que puedes confirmar comprobando el error absoluto medio de los datos fuera de muestra frente a los modelos construidos agregando tus predictores uno a la vez. Si tus predictores tienen un poder de predicción marginal, encontrarás que el MAE disminuye incluso en presencia de multicolinealidad en el modelo.

0 votos

¿Puedes centrar los predictores usando otros métodos de escala como min-max o IQR?

3voto

kentaromiura Puntos 3361

Si deseas llevar a cabo la selección de variables en presencia de alta colinealidad, puedo recomendar el paquete l0ara, el cual ajusta GLMs penalizados con L0 utilizando un procedimiento de crestas adaptativas iterativas. Dado que este método se basa en última instancia en la regresión regularizada por crestas, puede manejar muy bien la colinealidad, y en mis simulaciones produjo muchos menos falsos positivos mientras aún presentaba un excelente rendimiento predictivo en comparación con, por ejemplo, LASSO, elastic net o adaptive LASSO. Alternativamente, también podrías probar el paquete L0Learn con una combinación de una penalización L0 y L2. La penalización L0 favorece la esparsidad (es decir, modelos pequeños) mientras que la penalización L2 regulariza la colinealidad. Elastic net (que utiliza una combinación de penalización L1 y L2) también se sugiere a menudo, pero en mis pruebas esto produjo muchos más falsos positivos, además los coeficientes estarán muy sesgados. Este sesgo se puede eliminar si se utilizan métodos penalizados con L0 en su lugar (también conocido como mejor subconjunto); es un estimador oráculo, que obtiene simultáneamente coeficientes de parámetros consistentes e imparciales. Los parámetros de regularización en todos estos métodos deben optimizarse a través de validación cruzada para obtener un rendimiento óptimo de predicción fuera de la muestra. Si también deseas obtener niveles de significancia e intervalos de confianza en tus parámetros entonces también puedes hacer esto mediante bootstrap no paramétrico.

El algoritmo de crestas adaptativas iterativas de l0ara (a veces referido como crestas adaptativas rotas), al igual que elastic net, posee un efecto de agrupamiento, lo que hará que seleccione variables altamente correlacionadas en grupos tan pronto como entren en tu modelo. Esto tiene sentido, por ejemplo, si tuvieras dos variables casi colineales en tu modelo dividiría el efecto equitativamente entre ambas.

Por cierto, si estás analizando datos de proporciones es mejor utilizar un modelo de regresión logística; por cierto, el paquete l0ara te permite hacerlo en combinación con una penalización L0; esto también será compatible con el paquete L0Learn próximamente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X