¿Cuál es un ejemplo de multicolinealidad perfecta?

12

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

Quisiera un ejemplo donde β = ( X ' X ) - 1 X ' Y no puede estimarse porque ( X ' X ) no es invertible.β^=(XX)1XY(XX)

TsTeaTime
fuente
Revisé la publicación recomendada para Colinearity y sentí que era suficiente para entender, pero un ejemplo simple usando datos agregaría claridad.
TsTeaTime
2
¿Qué quieres decir con "en términos de X e Y"? La colinearidad existe entre las variables X, Y no tiene nada que ver con eso.
gung - Restablece a Monica
1
He ajustado la pregunta para que sea más específica con respecto a X
TsTeaTime
1
Como se muestra en la línea multicolineal de en singularidad de X X , también puede leer esta pregunta: stats.stackexchange.com/q/70899/3277 . XXX
ttnphns

Respuestas:

10

Aquí hay un ejemplo con 3 variables, y , x1 y x2 , relacionados por la ecuación

y=x1+x2+ε

donde ε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 tanto, tenemos una colinealidad perfecta.

Podemos escribir el modelo como

Y=Xβ+ε

dónde:

Y=[4.526.856.54]

X=[112124136]

Entonces tenemos

XX=[112124136][111123246]=[61116112131163146]

Ahora calculamos el determinante de XX :

detXX=6|21313146|11|11311646|+16|11211631|=0

En R podemos mostrar esto de la siguiente manera:

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

crear x2, un múltiplo dex1

> x2 <- x1*2

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

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

observa eso

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

no puede estimar un valor para el x2coeficiente:

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 modelo X es:

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

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

Entonces 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 lo muestra

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

O:

det (XXdash) [1] 0

Robert Long
fuente
21

Aquí hay un par de escenarios bastante comunes que producen una multicolinealidad perfecta, es decir, situaciones en las que las columnas de la matriz de diseño dependen linealmente. Recuerde del álgebra lineal que 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 un múltiplo de otra , independientemente de si hay un término de intercepción: tal vez porque ha registrado la misma variable dos veces utilizando diferentes unidades (por ejemplo, "longitud en centímetros" es exactamente 100 veces mayor que "longitud en metros") o porque ha registrado una variable una vez como número bruto y una vez como proporción o porcentaje, cuando el denominador es fijo (por ejemplo, "área de placa de Petri colonizada" y "porcentaje de placa de Petri colonizada" serán múltiplos exactos entre sí si el área de cada placa de Petri es lo mismo). Tenemos colinealidad porque si donde w y x son variables (columnas de su matriz de diseño) y awi=axiwxaes una constante escalar, entonces es una combinación lineal de variables que es igual a cero.1(w)a(x)

  2. Hay un término de intercepción y una variable difiere de otra en una constante : esto sucederá si centra una variable ( ) e incluye tanto x sin procesar como w centrado en su regresión. También ocurrirá si sus variables se miden en diferentes sistemas unitarios que difieren en una constante, por ejemplo, si w es "temperatura en kelvin" yx 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 (representada como una columna de unos,wi=xix¯xwwxwi=xi+273.151, en la matriz de diseño), entonces tenerwi=xi+kpara alguna constanteksignifica que1(w )-1(x )-k(1 n)es una combinación lineal dew,xy1columnas de la matriz de diseño que es igual a cero.1nwi=xi+kk1(w)1(x)k(1n)wx1

  3. Hay un término de intercepción y una variable viene dada por una transformación afín de otra : es decir, tiene variables y x , relacionadas por w i = a x i + b donde a y b son constantes. Por ejemplo, esto sucede si estandariza una variable como z i = x i - ˉ xwxwi=axi+bab e incluyevariablesx sinprocesaryzestandarizadasen tu regresión. También ocurre si registrawcomo "temperatura en ° F"yxcomo "temperatura en ° C", ya que esos sistemas unitarios no comparten un cero común pero están relacionados porwi=1.8xi+32. O en un contexto comercial, suponga que hay un costo fijob(por ejemplo, la entrega de cobertura) para cada pedido, así como un costo$apor unidad vendida; entonces si$wies el costo del pedidoiyxizi=xix¯sxxzwxwi=1.8xi+32b$a$wiixies el número de unidades ordenadas, tenemos . La combinación lineal de interés es 1 ( w ) - a ( x ) - b ( 1 n ) = 0 . Tenga en cuenta que si a = 1 , (3) incluye (2) como un caso especial; si b = 0 , entonces (3) incluye (1) como un caso especial.wi=axi+b1(w)a(x)b(1n)=0a=1b=0

  4. Hay un término de intercepción y la suma de varias variables es fija (por ejemplo, en la famosa "trampa de variables ficticias") : por ejemplo, si tiene "porcentaje de clientes satisfechos", "porcentaje de clientes insatisfechos" y "porcentaje de clientes que no están satisfechos ni insatisfecho ", entonces estas tres variables siempre sumarán (salvo error de redondeo) a 100. Una de estas variables, o alternativamente, el término de intercepción, debe eliminarse de la regresión para evitar la colinealidad. La "trampa de variable ficticia" se produce cuando utiliza variables indicadoras (más comúnmente pero menos útiles, llamadas "variables ficticias") para cada nivel posible de una variable categórica. Por ejemplo, supongamos que los floreros se producen en esquemas de color rojo, verde o azul. Si registró la variable categórica "redgreeny blueserían variables binarias, almacenadas como 1"sí" y 0"no"), entonces, para cada florero, solo una de las variables sería una, 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 aquí es eliminar la intercepción o eliminar uno de los indicadores (por ejemplo, omitir red) que se convierte en una línea de base o un nivel de referencia. En este caso, el coeficiente de regresión para greenindicaría el cambio en la respuesta media asociada con el cambio de un jarrón rojo a uno verde, manteniendo constantes otras variables explicativas.

  5. Hay al menos dos subconjuntos de variables, cada una con una suma fija , independientemente de si hay un término de intercepción: supongamos que los floreros en (4) se produjeron en tres tamaños, y la variable categórica para el tamaño se almacenó como tres variables indicadoras adicionales . Nos hubiera gustado large + medium + small = 1. Luego tenemos la combinación lineal 1(large) + 1(medium) + 1(small) - 1(red) - 1(green) - 1(blue) = 0, incluso cuando no hay término de intercepción. Los dos subconjuntos no necesitan compartir la misma suma, por ejemplo, si tenemos variables explicativas modo que cada u i + v i = k 1 y x i + y i = ku,v,w,xui+vi=k1 luego k 2 ( u ) + k 2 ( v ) - k 1 ( w ) - k 1 ( x ) = 0 .xi+yi=k2k2(u)+k2(v)k1(w)k1(x)=0

  6. Una variable se define como una combinación lineal de varias otras variables : por ejemplo, si registra la longitud , el ancho wy el perímetro p de cada rectángulo, entonces p i = 2 l i + 2 w i entonces tenemos la combinación lineal 1 ( p ) - 2 ( l ) - 2 ( w ) = 0lwppi=2li+2wi1(p)2(l)2(w)=0. Un ejemplo de un término de intersección: supongamos que una empresa de pedidos por correo tiene dos líneas de productos, y grabar ese orden consistía en U i del primer producto en el costo unitario $ una y v i del segundo al costo unitario $ b , con cargo de entrega fijo $ c . Si también incluimos el costo del pedido $ x como una variable explicativa, entonces x i = a u i + b v i + c y entonces 1 ( x ) -iui$avi$b$c$xxi=aui+bvi+c . Esta es una generalización obvia de (3). También nos da una forma diferente de pensar sobre (4): una vez que conocemos todos menos uno de los subconjuntos de variables cuya suma es fija, entonces el restante es su complemento, por lo que puede expresarse como una combinación lineal de ellos y su suma . Si sabemos que el 50% de los clientes estaban satisfechos y el 20% estaban insatisfechos, entonces 100% - 50% - 20% = 30% no deben estar satisfechos ni insatisfechos; Si sabemos que el florero no es rojo () y es verde (), entonces sabemos que no es azul ().1(x)a(u)b(v)c(1n)=0red=0green=1blue = 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 su muestra no exhibe suficiente variación (¡ninguna!). Puede haber una variación en la población que no se captura en su muestra, por ejemplo, si hay un valor modal muy común: quizás el tamaño de su muestra es demasiado pequeño y, por lo tanto, es poco probable que incluya valores que difieran del modo, o sus mediciones fueron insuficientemente preciso para detectar pequeñas variaciones del modo. Alternativamente, puede haber razones teóricas para la falta de variación, particularmente si está estudiando una subpoblación. En un estudio de propiedades de nueva construcción en Los Ángeles, no sería sorprendente que cada punto de datos tenga AgeOfProperty = 0yState = California! En un estudio experimental, es posible que haya medido una variable independiente que está bajo control experimental. Si una de sus variables explicativas es constante y cero, entonces tenemos inmediatamente que la combinación lineal 1 ( x ) (con coeficiente cero para cualquier otra variable) es 0 .x1(x)0

  8. xxi=k01(x)k(1n)=0

  9. wi=k10xi=k20k2(w)k1(x)=0

  10. knk>nkkR2kpn

Ejemplos de datos con código R

XXXdet(XX)XXβ^=(XX)1XyXXXvea esta pregunta de Math SE , o esta y su inverso .

(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) Interceptar término y una variable difiere de otra por 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) Interceptar término 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 fijo

# 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 trampa variable ficticia

# 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 una 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

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
Lepisma
fuente
4

Algunos ejemplos triviales para ayudar a la intuición:

  1. x1x2
    • x1=100x2X
  2. x1=1x2x3
    • x2=95x3+32x1X
  3. x1=1x2x3
    • x2=x35x1X

Hay una multitud de formas tales que una columna de datos será una función lineal de sus otros datos. Algunos de ellos son obvios (por ejemplo, metros vs. centímetros) mientras que otros pueden ser más sutiles (por ejemplo, edad y años de escolaridad para niños más pequeños).

x1Xx21

Matthew Gunn
fuente
1
El ejemplo de escolaridad y edad es muy bueno, aunque vale la pena señalar que la relación se mantiene solo mientras todos todavía están en la escuela. La extensión lógica de eso es cuando tienes edad, años de escolaridad y años de trabajo, lo que puede continuar la relación más allá de la graduación. (Por supuesto, en la práctica, tales multicolinealidad rara vez tiende a ser perfecto - siempre hay excepciones, como los niños que comenzaron la escuela a una edad diferente porque venían de un país diferente -. Pero a menudo es muy grave)
pececillo de plata
@Silverfish buenos puntos! Acabo de hacer algunas ediciones / correcciones.
Matthew Gunn