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, Var9
primero (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 Score
variable. Preferiblemente, este sería un método que tenga en cuenta el gran potencial de colinealidad en estas 9 variables.
Score
variable", 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.Respuestas:
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.
fuente
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.
fuente
and put summary scores into the model
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
l0ara
paquete le permite hacerlo en combinación con una penalización L0; para elL0Learn
paquete, esto se admitirá en breve.fuente