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.

Version 17 (modified by Pedro Gea, 13 years ago) (diff)

Name changed from proposal/Multicollinearity to Multicollinearity

Multicolinealidad

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

Introducción

Por hacer: Llevar las ecuaciones a LaTeX y pulir algunas ideas que están sueltas, incluir referencias.

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.
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ámetrosa a partir de los cuales las interpretaciones serán inexactas, es decir, será difícil sustentar el discurso "variando un input mientras el resto se mantiene fijo" ya que 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.
  1. 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.

El segundo de los problemas es más sutil pues incluso podemos tener unas estimaciones donde el ajuste del modelo es bueno.

En presencia de una matriz singular necesitamos emplear métodos robustos como la descomposición en valores singulares: SVD.
A partir de la SVD podemos obtener los p valores propios \lambda_1<\lambda_2< ... <\lambda_p, y así, cuando \lamda_1=0 o \lamda_1\sim 0 se tiene que la matriz es singular o está muy cercana a la singularidad.
También se suele analizar el número de condición K(A) = \sqrt{\frac{\lambda_p}{\lambda_1}} que tiende a infinito cuando \lambda_1 tiende a 0.

La SVD también puede emplearse para determinar subconjuntos de variables con alta correlación .... ¿como?
Observando los vectores propios asociados a los valores propios pequeños (cercanos a 0), éstos contienen los coeficientes de la combinación lineal (hay que mirar los coeficiente "distintos" de 0).

Para analizar el grado de multicolinealidad entre las columnas de A cuando A es no singular podemos calcular los estadísticos VIF_i asociado a la columna i:

 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}

Valores de VIF grandes indican 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.

Attachments (1)

Download all attachments as: .zip