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 14 (modified by Pedro Gea, 14 years ago) (diff)

Name changed from Multicollinearity to proposal/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 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 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 un alta correlación lineal es imposible variar un input que depende linealmente de otros manteniendo éstos fijo.

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

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

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 singularidad necesitamos emplear métodos robustos como la descomposición en valores singulares SVD. A partir de la SVD podemos obtener los p valores propios l_1<l_2<...<l_p, cuando l_1 es 0 o "casi 0" la matriz singular o está muy cercana a la singularidad. También se suele analizar el número de condición k(A) = sqrt(l_p/l_1) que tiene a infinito cuando l_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, estos 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_1*X_1 + a_2*X_2 + ... + a_{i-1}*X_{i-1} + a_{i+1}*X_{i+1} + ... + a_p*X_p + e
  VIF_i = 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?

  • cálculo del VIF
  • cálculo de SVD y selección de variables colineales según 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 denuevo para ver si aparecen nuevos problemas.

Se adjunta un ejemplo para observar su funcionamiento.

Attachments (1)

Download all attachments as: .zip