15 votos

¿Cuál es un ejemplo de multicolinealidad perfecta?

¿Cuál es un ejemplo de colinealidad perfecta en términos de la matriz de diseño $X$ ?

Me gustaría un ejemplo en el que $\hat \beta = (X'X)^{-1}X'Y$ no se puede estimar porque $(X'X)$ no es invertible.

0 votos

Revisé el post recomendado por Colinearity y me pareció suficiente para entenderlo, pero un simple ejemplo con datos añadiría claridad.

3 votos

¿Qué quiere decir con "en términos de X e Y"? Colinealidad existe entre las variables X, Y no tiene nada que ver.

1 votos

He ajustado la pregunta para que sea más específica en cuanto a $X$

27voto

Silverfish Puntos 6909

Aquí hay un par de escenarios bastante comunes que producen multicolinealidad perfecta, es decir, situaciones en las que las columnas de la matriz de diseño son linealmente dependientes. Recordemos que, según el álgebra lineal, esto significa que hay una combinación lineal de columnas de la matriz de diseño (cuyos coeficientes no son todos cero) que es igual a cero. He incluido algunos ejemplos prácticos para ayudar a explicar por qué este escollo golpea tan a menudo - ¡me he encontrado con casi todos ellos!

  1. Una variable es múltiplo de otra independientemente de que haya un término de intercepción: quizás porque se ha registrado la misma variable dos veces utilizando unidades diferentes (por ejemplo, "longitud en centímetros" es precisamente 100 veces mayor que "longitud en metros") o porque se ha registrado una variable una vez como número bruto y otra como proporción o porcentaje, cuando el denominador es fijo (por ejemplo, "área de la placa de Petri colonizada" y "porcentaje de la placa de Petri colonizada" serán múltiplos exactos el uno del otro si el área de cada placa de Petri es la misma). Tenemos colinealidad porque si $w_i = ax_i$ donde $w$ y $x$ son variables (columnas de su matriz de diseño) y $a$ es una constante escalar, entonces $1(\vec w) - a(\vec x)$ es una combinación lineal de variables que es igual a cero.

  2. Hay un término de intercepción y una variable difiere de otra por una constante Esto ocurrirá si se centra una variable ( $w_i = x_i - \bar x$ ) e incluyen tanto el $x$ y centrado $w$ en su regresión. También ocurrirá si sus variables se miden en diferentes sistemas de unidades que difieren por una constante, por ejemplo, si $w$ es la "temperatura en kelvin" y $x$ como "temperatura en °C" entonces $w_i = x_i + 273.15$ . Si consideramos el término de intercepción como una variable que siempre es $1$ (representado como una columna de unos, $\vec 1_n$ en la matriz de diseño) entonces teniendo $w_i = x_i + k$ para alguna constante $k$ significa que $1(\vec w) - 1(\vec x) - k(\vec 1_n)$ es una combinación lineal del $w$ , $x$ y $1$ columnas de la matriz de diseño que es igual a cero.

  3. Hay un término de intercepción y una variable viene dada por una transformación afín de otra : es decir, se tienen variables $w$ y $x$ , relacionado con $w_i = ax_i + b$ donde $a$ y $b$ son constantes. Por ejemplo, esto ocurre si se normaliza una variable como $z_i = \frac{x_i - \bar x}{s_x}$ e incluyen tanto el $x$ y estandarizado $z$ variables en su regresión. También ocurre si registra $w$ como "temperatura en °F" y $x$ como "temperatura en °C", ya que esos sistemas de unidades no comparten un cero común, sino que están relacionados por $w_i = 1.8x_i + 32$ . O en un contexto empresarial, supongamos que hay un coste fijo $b$ (por ejemplo, cubriendo la entrega) para cada pedido, así como un coste $\$ a $ per unit sold; then if $\$w_i$ es el coste del pedido $i$ y $x_i$ es el número de unidades pedidas, tenemos $w_i = ax_i + b$ . La combinación lineal de interés es $1(\vec w) - a(\vec x) - b(\vec 1_n) = \vec 0$ . Tenga en cuenta que si $a=1$ entonces (3) incluye (2) como un caso especial; si $b=0$ entonces (3) incluye (1) como un caso especial.

  4. Hay un término de intercepción y la suma de varias variables es fija (por ejemplo, en la famosa "trampa de la variable ficticia") Por ejemplo, si tiene un "porcentaje de clientes satisfechos", un "porcentaje de clientes insatisfechos" y un "porcentaje de clientes ni satisfechos ni insatisfechos", estas tres variables siempre sumarán 100 (salvo error de redondeo). Una de estas variables, o bien el término de intercepción, debe eliminarse de la regresión para evitar la colinealidad. La "trampa de la variable ficticia" se produce cuando se utilizan variables indicadoras (más comunes, pero menos útiles, denominadas "ficticias") para cada nivel posible de una variable categórica. Por ejemplo, supongamos que los jarrones se fabrican en colores rojo, verde o azul. Si se registra la variable categórica "color" mediante tres variables indicadoras ( red , green y blue serían variables binarias, almacenadas como 1 para "sí" y 0 para "no") entonces para cada jarrón sólo una de las variables sería un uno, y por lo tanto red + green + blue = 1 . Como hay un vector de unos para el término de intercepción, la combinación lineal 1(red) + 1(green) + 1(blue) - 1(1) = 0 . El remedio habitual en este caso es suprimir el intercepto, o suprimir uno de los indicadores (por ejemplo, dejar fuera red ) que se convierte en una línea de base o nivel de referencia. En este caso, el coeficiente de regresión para green indicaría el cambio en la respuesta media asociada al cambio de un jarrón rojo a uno verde, manteniendo constantes las demás variables explicativas.

  5. Hay al menos dos subconjuntos de variables, cada uno con una suma fija independientemente de que haya un término de intercepción: supongamos que los jarrones de (4) se fabrican en tres tamaños y que la variable categórica del tamaño se almacena como tres variables indicadoras adicionales. Tendríamos large + medium + small = 1 . Entonces tenemos la combinación lineal 1(large) + 1(medium) + 1(small) - 1(red) - 1(green) - 1(blue) = 0 incluso cuando no hay un término de intercepción. No es necesario que los dos subconjuntos compartan la misma suma, por ejemplo, si tenemos variables explicativas $u, v, w, x$ de manera que cada $u_i + v_i = k_1$ y $x_i + y_i = k_2$ entonces $k_2(\vec u) + k_2(\vec v) - k_1(\vec w) - k_1(\vec x) = \vec 0$ .

  6. Una variable se define como una combinación lineal de varias otras variables Por ejemplo, si se registra la longitud $l$ , anchura $w$ y el perímetro $p$ de cada rectángulo, entonces $p_i = 2l_i + 2w_i$ por lo que tenemos la combinación lineal $1(\vec p) - 2(\vec l) - 2(\vec w) = \vec 0$ . Un ejemplo con un término de intercepción: supongamos que un negocio de venta por correo tiene dos líneas de productos, y que registramos ese pedido $i$ consistía en $u_i$ del primer producto a coste unitario $\$ a $ and $ v_i $ of the second at unit cost $\$b$ con gastos de envío fijos $\$ c $. If we also include the order cost $\$x$ como variable explicativa, entonces $x_i = a u_i + b v_i + c$ y así $1(\vec x) - a(\vec u) - b(\vec v) -c(\vec 1_n) = \vec 0$ . Esta es una generalización obvia de (3). También nos da una forma diferente de pensar en (4): una vez que conocemos todas, excepto una, del subconjunto de variables cuya suma es fija, entonces la restante es su complemento, por lo que puede expresarse como una combinación lineal de ellas y su suma. Si sabemos que el 50% de los clientes están satisfechos y el 20% insatisfechos, entonces el 100% - 50% - 20% = 30% no debe estar ni satisfecho ni insatisfecho; si sabemos que el jarrón no es rojo ( red=0 ) y es verde ( green=1 ) entonces sabemos que no es azul ( blue = 1(1) - 1(red) - 1(green) = 1 - 0 - 1 = 0 ).

  7. Una variable es constante y cero independientemente de si hay un término de intercepción: en un estudio observacional, una variable será constante si la muestra no presenta una variación suficiente (¡alguna!). Es posible que haya una variación en la población que no se capte en la muestra, por ejemplo, si hay un valor modal muy común: quizás el tamaño de la muestra es demasiado pequeño y, por tanto, es poco probable que incluya valores que difieran de la moda, o las mediciones no son lo suficientemente precisas como para detectar pequeñas variaciones de la moda. También puede haber razones teóricas para la falta de variación, sobre todo si se está estudiando una subpoblación. En un estudio de viviendas de nueva construcción en Los Ángeles, no sería sorprendente que cada punto de datos tuviera AgeOfProperty = 0 y State = California ¡! En un estudio experimental, puede haber medido una variable independiente que está bajo control experimental. Si una de sus variables explicativas $x$ sea a la vez constante y cero, entonces tenemos inmediatamente que la combinación lineal $1(\vec x)$ (con coeficiente cero para cualquier otra variable) es $\vec 0$ .

  8. Hay un término de intercepción y al menos una variable es constante : si $x$ es constante para que cada $x_i = k \neq 0$ entonces la combinación lineal $1(\vec x) - k(\vec 1_n) = \vec 0$ .

  9. Al menos dos variables son constantes independientemente de que exista un término de intercepción: si cada $w_i = k_1 \neq 0$ y $x_i = k_2 \neq 0$ entonces la combinación lineal $k_2(\vec w) - k_1(\vec x) = \vec 0$ .

  10. Número de columnas de la matriz de diseño, $k$ supera el número de filas, $n$ Incluso cuando no existe una relación conceptual entre las variables, es necesario desde el punto de vista matemático que las columnas de la matriz de diseño sean linealmente dependientes cuando $k > n$ . Simplemente no es posible tener $k$ vectores linealmente independientes en un espacio con un número de dimensiones inferior a $k$ Por ejemplo, mientras que se pueden dibujar dos vectores independientes en una hoja de papel (un plano bidimensional, $\mathbb R^2$ ), cualquier otro vector dibujado en la página debe estar dentro de su ámbito, y por lo tanto ser una combinación lineal de ellos. Tenga en cuenta que un término de intercepción contribuye con una columna de unos a la matriz de diseño, por lo que cuenta como uno de sus $k$ columnas. (Este escenario suele denominarse "gran $p$ , pequeño $n$ " problema: véase también esta pregunta relacionada con el CV .)

Ejemplos de datos con código R

Cada ejemplo ofrece una matriz de diseño $X$ la matriz $X'X$ (nótese que siempre es cuadrado y simétrico) y $\det (X'X)$ . Tenga en cuenta que si $X'X$ es singular (determinante cero, por tanto no invertible) entonces no podemos estimar $\hat \beta = (X'X)^{-1}X'y$ . La condición de que $X'X$ sea no singular es equivalente a la condición de que $X$ tiene rango completo por lo que sus columnas son linealmente independientes: ver esta pregunta de Math SE o este y su contrario .

(1) Una columna es múltiplo de otra

# x2 = 2 * x1
# Note no intercept term (column of 1s) is needed
X <- matrix(c(2, 4, 1, 2, 3, 6, 2, 4), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    4
#[2,]    1    2
#[3,]    3    6
#[4,]    2    4

t(X) %*% X
#     [,1] [,2]
#[1,]   18   36
#[2,]   36   72

round(det(t(X) %*% X), digits = 9)
#0

(2) Término de intercepción y una variable difiere de otra por una constante

# x1 represents intercept term
# x3 = x2 + 2
X <- matrix(c(1, 2, 4, 1, 1, 3, 1, 3, 5, 1, 0, 2), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    4
#[2,]    1    1    3
#[3,]    1    3    5
#[4,]    1    0    2

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    4    6   14
#[2,]    6   14   26
#[3,]   14   26   54

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, cols now linearly independent
# x2 = x1 + 2 with no intercept column
X <- matrix(c(2, 4, 1, 3, 3, 5, 0, 2), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    4
#[2,]    1    3
#[3,]    3    5
#[4,]    0    2

t(X) %*% X
#     [,1] [,2]
#[1,]   14   26
#[2,]   26   54
# Can you see how this matrix is related to the previous one, and why?

round(det(t(X) %*% X), digits = 9)
#80
# Non-zero determinant so X'X is invertible

(3) El término de intercepción y una variable es una transformación afín de otra

# x1 represents intercept term
# x3 = 2*x2 - 3
X <- matrix(c(1, 2, 1, 1, 1, -1, 1, 3, 3, 1, 0, -3), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    1
#[2,]    1    1   -1
#[3,]    1    3    3
#[4,]    1    0   -3

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    4    6    0
#[2,]    6   14   10
#[3,]    0   10   20

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, cols now linearly independent
# x2 = 2*x1 - 3 with no intercept column
X <- matrix(c(2, 1, 1, -1, 3, 3, 0, -3), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    1
#[2,]    1   -1
#[3,]    3    3
#[4,]    0   -3

t(X) %*% X
#     [,1] [,2]
#[1,]   14   10
#[2,]   10   20
# Can you see how this matrix is related to the previous one, and why?

round(det(t(X) %*% X), digits = 9)
#180
# Non-zero determinant so X'X is invertible

(4) El término de intercepción y la suma de varias variables es fija

# x1 represents intercept term
# x2 + x3 = 10
X <- matrix(c(1, 2, 8, 1, 1, 9, 1, 3, 7, 1, 0, 10), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    8
#[2,]    1    1    9
#[3,]    1    3    7
#[4,]    1    0   10

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    4    6   34
#[2,]    6   14   46
#[3,]   34   46  294

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, then columns now linearly independent
# x1 + x2 = 10 with no intercept column
X <- matrix(c(2, 8, 1, 9, 3, 7, 0, 10), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    8
#[2,]    1    9
#[3,]    3    7
#[4,]    0   10

t(X) %*% X
#     [,1] [,2]
#[1,]   14   46
#[2,]   46  294
# Can you see how this matrix is related to the previous one, and why?

round(det(t(X) %*% X), digits = 9)
#2000
# Non-zero determinant so X'X is invertible

(4a) Término de intercepción con la variable ficticia trampa

# x1 represents intercept term
# x2 + x3 + x4 = 1
X <- matrix(c(1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0), ncol = 4, byrow=TRUE)

X
#     [,1] [,2] [,3] [,4]
#[1,]    1    0    0    1
#[2,]    1    1    0    0
#[3,]    1    0    1    0
#[4,]    1    1    0    0
#[5,]    1    0    1    0

t(X) %*% X
#     [,1] [,2] [,3] [,4]
#[1,]    5    2    2    1
#[2,]    2    2    0    0
#[3,]    2    0    2    0
#[4,]    1    0    0    1
# This matrix has a very natural interpretation - can you work it out?

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, then columns now linearly independent
# x1 + x2 + x3 = 1 with no intercept column
X <- matrix(c(0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0), ncol = 3, byrow=TRUE)  

X
#     [,1] [,2] [,3]
#[1,]    0    0    1
#[2,]    1    0    0
#[3,]    0    1    0
#[4,]    1    0    0
#[5,]    0    1    0

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    2    0    0
#[2,]    0    2    0
#[3,]    0    0    1
# Can you see how this matrix is related to the previous one?

round(det(t(X) %*% X), digits = 9)
#4
# Non-zero determinant so X'X is invertible

(5) Dos subconjuntos de variables con suma fija

# No intercept term needed
# x1 + x2 = 1
# x3 + x4 = 1
X <- matrix(c(0,1,0,1,1,0,0,1,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0), ncol = 4, byrow=TRUE)

X
#     [,1] [,2] [,3] [,4]
#[1,]    0    1    0    1
#[2,]    1    0    0    1
#[3,]    0    1    1    0
#[4,]    1    0    0    1
#[5,]    1    0    1    0
#[6,]    0    1    1    0

t(X) %*% X
#     [,1] [,2] [,3] [,4]
#[1,]    3    0    1    2
#[2,]    0    3    2    1
#[3,]    1    2    3    0
#[4,]    2    1    0    3
# This matrix has a very natural interpretation - can you work it out?

round(det(t(X) %*% X), digits = 9)
#0

(6) Una variable es combinación lineal de otras

# No intercept term
# x3 = x1 + 2*x2
X <- matrix(c(1,1,3,0,2,4,2,1,4,3,1,5,1,2,5), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    1    3
#[2,]    0    2    4
#[3,]    2    1    4
#[4,]    3    1    5
#[5,]    1    2    5

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]   15    8   31
#[2,]    8   11   30
#[3,]   31   30   91

round(det(t(X) %*% X), digits = 9)
#0

(7) Una variable es constante y cero

# No intercept term
# x3 = 0
X <- matrix(c(1,1,0,0,2,0,2,1,0,3,1,0,1,2,0), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    1    0
#[2,]    0    2    0
#[3,]    2    1    0
#[4,]    3    1    0
#[5,]    1    2    0

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]   15    8    0
#[2,]    8   11    0
#[3,]    0    0    0

round(det(t(X) %*% X), digits = 9)
#0

(8) Término de intercepción y una variable constante

# x1 is intercept term, x3 = 5
X <- matrix(c(1,1,5,1,2,5,1,1,5,1,1,5,1,2,5), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    1    5
#[2,]    1    2    5
#[3,]    1    1    5
#[4,]    1    1    5
#[5,]    1    2    5

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    5    7   25
#[2,]    7   11   35
#[3,]   25   35  125

round(det(t(X) %*% X), digits = 9)
#0

(9) Dos variables constantes

# No intercept term, x2 = 2, x3 = 5
X <- matrix(c(1,2,5,2,2,5,1,2,5,1,2,5,2,2,5), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    5
#[2,]    2    2    5
#[3,]    1    2    5
#[4,]    1    2    5
#[5,]    2    2    5

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]   11   14   35
#[2,]   14   20   50
#[3,]   35   50  125

round(det(t(X) %*% X), digits = 9)
#0

(10) $k > n$

# Design matrix has 4 columns but only 3 rows
X <- matrix(c(1,1,1,1,1,2,4,8,1,3,9,27), ncol = 4, byrow=TRUE)

X
#     [,1] [,2] [,3] [,4]
#[1,]    1    1    1    1
#[2,]    1    2    4    8
#[3,]    1    3    9   27

t(X) %*% X
#     [,1] [,2] [,3] [,4]
#[1,]    3    6   14   36
#[2,]    6   14   36   98
#[3,]   14   36   98  276
#[4,]   36   98  276  794

round(det(t(X) %*% X), digits = 9)
#0

13voto

Bruce ONeel Puntos 391

Este es un ejemplo con 3 variables, $y$ , $x1$ y $x2$ , relacionados por la ecuación

$$ y = x1 + x2 + \epsilon $$

donde $\epsilon \sim N(0,1)$

Los datos particulares son

         y x1 x2
1 4.520866  1  2
2 6.849811  2  4
3 6.539804  3  6

Por lo tanto, es evidente que x2 es un múltiplo de x1 por lo que tenemos una colinealidad perfecta.

Podemos escribir el modelo como

$$ Y = X \beta + \epsilon$$

donde:

$$ Y = \begin{bmatrix}4.52 \\6.85 \\6.54\end{bmatrix}$$

$$ X = \begin{bmatrix}1 & 1 & 2\\1 & 2 & 4 \\1 & 3 & 6\end{bmatrix}$$

Así que tenemos

$$ XX' = \begin{bmatrix}1 & 1 & 2\\1 & 2 & 4 \\1 & 3 & 6\end{bmatrix} \begin{bmatrix}1 & 1 & 1\\1 & 2 & 3 \\2 & 4 & 6\end{bmatrix} = \begin{bmatrix}6 & 11 & 16\\11 & 21 & 31 \\16 & 31 & 46\end{bmatrix} $$

Ahora calculamos el determinante de $XX'$ :

$$ \det XX' = 6\begin{vmatrix}21 & 31 \\31 & 46\end{vmatrix} - 11 \begin{vmatrix}11 & 31 \\16 & 46\end{vmatrix} + 16\begin{vmatrix}11 & 21 \\16 & 31\end{vmatrix}= 0$$

En R podemos demostrarlo de la siguiente manera:

> x1 <- c(1,2,3)

crear x2 , un múltiplo de x1

> x2 <- x1*2

crear y, una combinación lineal de x1 , x2 y algo de aleatoriedad

> y <- x1 + x2 + rnorm(3,0,1)

observe que

> summary(m0 <- lm(y~x1+x2))

no logra estimar un valor para el x2 coeficiente:

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   3.9512     1.6457   2.401    0.251
x1            1.0095     0.7618   1.325    0.412
x2                NA         NA      NA       NA

Residual standard error: 0.02583 on 1 degrees of freedom
Multiple R-squared:      1,     Adjusted R-squared:  0.9999 
F-statistic: 2.981e+04 on 1 and 1 DF,  p-value: 0.003687

La matriz del modelo $X$ es:

> (X <- model.matrix(m0))

(Intercept) x1 x2
1           1  1  2
2           1  2  4
3           1  3  6

Así que $XX'$ es

> (XXdash <- X %*% t(X))
   1  2  3
1  6 11 16
2 11 21 31
3 16 31 46

que no es invertible, como demuestra

> solve(XXdash)
Error in solve.default(XXdash) : 
  Lapack routine dgesv: system is exactly singular: U[3,3] = 0

O:

det(XXdash) [1] 0

5voto

Martin Robins Puntos 1893

Para ver las cosas de otra manera $$x^4+5x^2+4=(x^2+1)(x^2+4)$$

es reducible sobre $\mathbb R$ pero no tiene ningún arraigo real.

1 votos

El ejemplo de la escolaridad y la edad es muy bueno, aunque vale la pena señalar que la relación se mantiene sólo mientras todos están en la escuela. La extensión lógica de esto es cuando se tiene la edad, los años de escolarización y los años de trabajo, que pueden continuar la relación más allá de la graduación. (Por supuesto, en la práctica esa multicolinealidad rara vez tiende a ser perfecta -siempre hay excepciones, como los niños que empezaron la escuela a una edad diferente porque venían de un país distinto-, pero suele ser bastante grave).

0 votos

@Silverfish ¡buenos puntos! Acabo de hacer algunas ediciones/correcciones.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X