Tratando con multicolinealidad

13

Aprendí que usando el vif()método de carpaquete, podemos calcular el grado de multicolinealidad de las entradas en un modelo. En wikipedia , si el vifvalor es mayor que 5entonces, podemos considerar que la entrada sufre un problema de multicolinealidad. Por ejemplo, he desarrollado un modelo de regresión lineal utilizando el lm()método y vif()da lo siguiente. Como podemos ver, las entradas ub, lby tbestán sufriendo de multicolinealidad.

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

Para evitar el problema de multicolinealidad y, por lo tanto, hacer que mi modelo sea más robusto, he interactuado entre uby lb, y ahora la tabla vif del nuevo modelo es la siguiente:

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

No hay mucha diferencia en los R^2valores y tampoco hay mucha diferencia en los errores de las pruebas de CV de una sola omisión en los dos casos anteriores.

Mis preguntas son:

  1. ¿Está bien evitar el problema de multicolinealidad tomando la interacción como se muestra arriba?

  2. ¿Hay alguna manera mejor de presentar un problema de multicolinealidad en comparación con los resultados del método vif anteriores.

Por favor dame tus sugerencias.

Gracias.

samarasa
fuente
¿Es su modelo de regresión log-log (la interacción como restricción está bien con ellos)? En wiki hay un artículo más completo sobre el problema de multicolinealidad en.wikipedia.org/wiki/Multicollinearity. También sugiero explorar la etiqueta de multicolinealidad en este sitio, parece ser una pregunta frecuente.
Dmitrij Celov
@Dmitrij Celov: Gracias. No, mi modelo es la regresión lineal simple y sin registros ...
samarasa

Respuestas:

11

Parece incluir el término de interacción ub:lb, pero no uby lbellos mismos como predictores separados. Esto violaría el llamado "principio de marginalidad" que establece que los términos de orden superior solo deben incluir variables presentes en términos de orden inferior ( Wikipedia para empezar ). Efectivamente, ahora está incluyendo un predictor que es solo el producto basado en elementos de uby lb.

VIFj es solo donde es el valor cuando ejecuta una regresión con su variable predictor original como criterio predicho por todos los predictores restantes (que también es la elemento diagonal -ésimo de , el inverso de la matriz de correlación de los predictores). Un VIF-valor de 50 indica que por lo tanto se obtiene un de 0,98 cuando se predice con los otros predictores, lo que indica que es casi completamente redundante (para la misma , de 0,97).11Rj2Rj2R2jjRx1R2ubublbR2

Comenzaría a hacer todas las correlaciones por pares entre los predictores, y ejecutaría las regresiones antes mencionadas para ver qué variables predicen uby lbpara ver si la redundancia se explica fácilmente. Si es así, puede eliminar los predictores redundantes. También puede examinar la regresión de crestas ( lm.ridge()del paquete MASSen R).

Los diagnósticos de multicolinealidad más avanzados utilizan la estructura de valor propio de donde es la matriz de diseño de la regresión (es decir, todos los predictores como vectores de columna). La condición es donde y son los más grandes y los más pequeños ( ) valores propios de . En R, puede usar , donde el modelo generalmente usa las variables estandarizadas.XtXXκλmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

Geométricamente, le da una idea sobre la forma de la nube de datos formada por los predictores. Con 2 predictores, el diagrama de dispersión podría verse como una elipse con 2 ejes principales. luego le dice cuán "plana" es esa elipse, es decir, es una medida de la relación entre la longitud del eje más grande y la longitud del eje principal más pequeño. Con 3 predictores, puede tener forma de cigarro y 3 ejes principales. Cuanto más "plana" esté su nube de datos en alguna dirección, más redundantes serán las variables cuando se tomen juntas.κκ

Hay algunas reglas generales para los valores no críticos de (escuché menos de 20). Pero tenga en cuenta que no es invariable en las transformaciones de datos que solo cambian la unidad de las variables, como la estandarización. Esto es a diferencia de VIF: le dará el mismo resultado que (siempre y cuando no hay términos multiplicativos en el modelo), pero , y es casi seguro que difieren.κκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))

lince
fuente
Con respecto a la primera nota: para el modelo multivariante, parece correcto dejar solo el término de interacción, ya que este último solo significa que restringe los coeficientes para ub lb( ) , pero para un modelo de regresión lineal general es como usted señaló (+1) ^ _ ^ Por cierto lb - límite inferior, ub - límite superior ?! Si es así, haga la diferencia de dos , probablemente sea la mejor transformación. u b - l balogub+aloglb=alogublbublb
Dmitrij Celov
@Dmitrij: No, ub + lb + sb = 100.
samarasa
¿Hay alguna buena representación gráfica para la multicolinealidad? Por favor, sugiérame si hay algún método en R para esto.
samarasa
2
@kkp Las únicas formas en que puedo pensar en este momento son: pairs()para matrices de diagrama de dispersión que muestran toda la distribución por pares de los predictores. El paquete scatterplot3dse puede usar para visualizar el diagrama de dispersión de 3 variables. Vea esta respuesta para dibujar la elipse cuya relación de eje es igual a en el caso bivariado. También puede consultar el paquete que ofrece diagnósticos de multicolinealidad adicionales, tal vez gráficos. κ2perturb
caracal
1

También debe considerar el valor P durante la consideración variable.

  1. Si el valor P es muy bajo (p <0.05) y VIF es alto (> 5), entonces puede considerar otras variables insignificantes. Y reconstruye tu modelo.
  2. Si tiene un valor P y VIF altos, entonces esta variable será insignificante.
Manish Kumar
fuente