wiki:Multicollinearity
close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Multicolinealidad

Véase la implementación en MMS: CheckMulticollinearity.

Introducción

Cuando modelamos una variable output Y en función de un regresor lineal múltiple X\beta debemos prestar atención a la presencia de multicolinealidad de las variables explicativas (inputs).
La multicolinealidad se presenta cuando las columnas (inputs) de X son linealmente dependientes o existe una alta correlación lineal en un subconjunto de las mismas.

Un grado de multicolinealidad puede conducirnos a una matriz inestable numéricamente y el método de estimación puede fallar.
Por otra parte, incluso teniendo éxito en la estimación los resultados arrojarán un conjunto de parámetros a partir de los cuales las interpretaciones serán inexactas, es decir, los parámetros que se obtengan serán en general poco precisos, la relación entre regresores hace difícil cuantificar con precisión el efecto que cada regresor(input) ejerce sobre el regresando(output), lo que determina que las varianzas de los parámetros sean elevadas. Entonces, ante una alta correlación lineal es imposible variar un input que depende linealmente de otros manteniendo éstos fijos.

En relación a la multicolinealidad se nos presentan dos problemas:

1. Singularidad numérica: Imposibilidad de estimar.

2. Quasi-singularidad numérica: Difícil interpretación y significatividad baja de los parámetros, perturbaciones pequeñas en los inputs provocan variaciones grandes en los parámetros.

El primero de los problemas es fácil de detectar: no podemos estimar. Sin embargo, el segundo de los problemas es más sutil pues incluso podemos tener unas estimaciones donde el ajuste del modelo es bueno.

Por lo tanto, en presencia de una matriz singular A necesitamos emplear métodos robustos como la Descomposición en valores singulares: SVD
A partir de la SVD podemos obtener los p valores propios ordenados:

\lambda_1<\lambda_2< ... <\lambda_p

Cuando \lambda_1=0 o \lambda_1\sim 0 se tiene que, la matriz es singular o está muy cercana a la singularidad.

Un procedimiento de detección de multicolinealidad consiste en analizar el Número de condición: K(A)

K(A) = \sqrt{\frac{\lambda_p}{\lambda_1}}

se tiene que:

K(A) \underset{\lambda_1\rightarrow 0}{\rightarrow} \infty

El problema de la multicolinealidad es grave cuando el número de condición toma un valor entre 20 y 30. Si este indicador supera el valor de 30, el problema sería ya manifiestamente grave.

La SVD también puede emplearse para determinar subconjuntos de variables con alta correlación ... ¿Cómo?
Observando los vectores propios asociados a los valores propios próximos a 0. Éstos, contienen los coeficientes de la combinación lineal de las variables (hay que mirar los coeficientes "distintos" de 0).

Otra forma de analizar el grado de multicolinealidad entre las columnas de A cuando es matriz no singular es calcular para todo i el estadístico Factor de inflación de la varianza VIF_i asociado a la columna i:

Ponemos cada variable X_i en función de las demas variables explicativas:

 X_i = cte + a_1X_1 + a_2X_2 + ... + a_{i-1}X_{i-1} + a_{i+1}X_{i+1} + ... + a_pX_p + e

 VIF_i = \frac{1}{1-R_i^2}

donde R_i^2 es el coeficiente de determinación obtenido al efectuar la regresión de X_i sobre el resto de las variables regresoras.

Estos estadísticos miden la razón entre la varianza observada y la que habría sido en caso de que X_i estuviera incorrelada con el resto de variables regresoras del modelo.
Entonces, valores grandes de VIF indican un grado de multicolinealidad alto, se suele usar VIF_i>5

Propuestas de implementación en MMS

¿Qué ofrecemos en MMS en relación a la multicolinealidad?

  • El cálculo del VIF
  • El cálculo de SVD y la selección de variables colineales según la tolerancia.

CheckMulticollinearity

Implementación en MMS

Por cuestiones de necesidad se introdujo un primer mecanismo de chequeo que facilita en un buen número de casos la localización de los culpables de los conocidos "errores Choleski".

El método, denominado ::CheckMulticollinearity, pertenece a los objetos @Submodel. Ofrece un conjunto vacío en caso de no detectar ningún problema de colinealidad o un conjunto con los nombres de los parámetros involucrados en el primer problema de colinealidad detectado:

Set <submodel>::CheckMulticollinearity(?);

El mecanismo tal y como está implementado sólo devuelve el primer problema detectado, de modo que tras solucionar el problema es necesario pasar el chequeo de nuevo para ver si aparecen nuevos problemas.

Se adjunta un ejemplo para observar su funcionamiento.

Last modified 7 years ago Last modified on Jun 7, 2012, 11:46:52 AM

Attachments (1)

Download all attachments as: .zip