Что является примером совершенной мультиколлинеарности?


12

Что является примером идеальной коллинеарности с точки зрения матрицы дизайна ?X

Я хотел бы привести пример, в котором не может быть оценен, потому что не является обратимым.β^=(XX)1XY(XX)


Я просмотрел рекомендованный пост по колинеарности и почувствовал, что этого достаточно для понимания, но простой пример с использованием данных внесет ясность.
TsTeaTime

2
Что вы подразумеваете под "с точки зрения X и Y"? Колинеарность существует среди переменных X, Y не имеет к этому никакого отношения.
gung - Восстановить Монику

1
Я X
исправил

1
Как показывает мультиколлинеарий в сингулярности вы можете также прочитать этот вопрос: stats.stackexchange.com/q/70899/3277 . X XXXX
ttnphns

Ответы:


10

Вот пример с 3 переменными, , и , связанными уравнениемyx1x2

y=x1+x2+ε

гдеεN(0,1)

Конкретные данные

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

Таким образом, очевидно, что кратно поэтому мы имеем идеальную коллинеарность.x2x1

Мы можем написать модель как

Y=Xβ+ε

где:

Y=[4.526.856.54]

X=[112124136]

Итак, мы имеем

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

Теперь вычислим определитель :XX

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

В R мы можем показать это следующим образом:

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

создать x2, кратныйx1

> x2 <- x1*2

создать у, линейную комбинацию x1, x2и некоторые случайности

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

обратите внимание, что

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

Не удается оценить значение для x2коэффициента:

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

Модель матрицы имеет вид:X

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

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

Так являетсяXX

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

который не является обратимым, как показано

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

Или:

дет (XXdash) [1] 0


21

Вот несколько довольно распространенных сценариев, создающих совершенную мультиколлинеарность, то есть ситуации, в которых столбцы матрицы проектирования линейно зависимы. Напомним из линейной алгебры, что это означает, что существует линейная комбинация столбцов матрицы проекта (чьи коэффициенты не все равны нулю), которая равна нулю. Я привел несколько практических примеров, которые помогут объяснить, почему эта ловушка случается так часто - я столкнулся почти со всеми из них!

  1. Одна переменная кратна другой , независимо от того, существует ли термин перехват: возможно, потому что вы записали одну и ту же переменную дважды, используя разные единицы (например, «длина в сантиметрах» точно в 100 раз больше, чем «длина в метрах») или потому что Вы записали переменную один раз в виде необработанного числа и один раз в виде пропорции или процента, когда знаменатель фиксирован (например, «площадь колонии чашки Петри» и «процент колонизации чашки Петри» будут точными числами, кратными друг другу, если площадь каждой чашки Петри то же самое). У нас есть коллинеарность, потому что, если где и - переменные (столбцы матрицы проекта), а - скалярная постоянная, w x a 1 ( w ) - a ( x )wi=axiwxa1(w)a(x)является линейной комбинацией переменных, равной нулю.

  2. Существует термин «перехват», и одна переменная отличается от другой константой : это произойдет, если вы отцентрируете переменную ( ) и в регрессию как необработанные и центрированные . Это также произойдет, если ваши переменные измеряются в разных единичных системах, которые отличаются на постоянную величину, например, если - это «температура в Кельвинах», а как «температура в ° C», тогда . Если мы рассматриваем член перехвата как переменную, которая всегда равна (представлена ​​в виде столбца единиц, , в матрице дизайна), то для некоторой константыwi=xix¯xwwxwi=xi+273.1511nwi=xi+kkозначает, что является линейной комбинацией столбцов , и матрицы проектирования, равной нулю.1(w)1(x)k(1n)wx1

  3. Существует термин «перехват», и одна переменная задается аффинным преобразованием другой : т.е. у вас есть переменные и , связанные с помощью где и - константы. Например, это происходит, если вы стандартизируете переменную как и включаете в регрессию как необработанные переменные и стандартизированные . Это также происходит, если вы записываете как «температуру в ° F», а как «температуру в ° C», поскольку эти единичные системы не имеют общего нуля, а связаны какwxwi=axi+babzi=xix¯sxxzwxwi=1.8xi+32, Или в бизнес-контексте предположим, что для каждого заказа существует фиксированная стоимость (например, покрывающая доставку), а также стоимость за проданную единицу; тогда, если - это стоимость заказа а - количество заказанных единиц, мы имеем . Интересующая линейная комбинация равна . Обратите внимание, что если , то (3) включает в себя (2) как частный случай; если , то (3) включает в себя (1) как частный случай.b$a$wiixiwi=axi+b1(w)a(x)b(1n)=0a=1b=0

  4. Существует термин «перехват», и сумма нескольких переменных является фиксированной (например, в известной «ловушке фиктивной переменной») : например, если у вас есть «процент удовлетворенных клиентов», «процент неудовлетворенных клиентов» и «процент клиентов, не удовлетворенных не будучи неудовлетворенным », тогда эти три переменные всегда (за исключением ошибки округления) будут суммироваться до 100. Одна из этих переменных - или, альтернативно, член перехвата - должна быть исключена из регрессии для предотвращения коллинеарности. «Ловушка фиктивной переменной» возникает, когда вы используете индикаторные переменные (более часто, но менее полезно называемые «фиктивные») для каждого возможного уровня категориальной переменной. Например, предположим, вазы производятся в красных, зеленых или синих цветовых схемах. Если вы записали категориальную переменную "redgreenи blueне было бы бинарные переменные, которые хранятся в 1течение «да» и 0для «нет») , то для каждой вазе только одна из переменных будет один, и , следовательно red + green + blue = 1. Так как есть вектор единиц для члена перехвата, линейная комбинация 1(red) + 1(green) + 1(blue) - 1(1) = 0. Обычное средство здесь - сбросить перехват или один из индикаторов (например, пропустить red), который становится базовым или контрольным уровнем. В этом случае коэффициент регрессии для greenбудет указывать на изменение среднего отклика, связанного с переключением с красной вазы на зеленую, с сохранением постоянных других объясняющих переменных.

  5. Существует как минимум два подмножества переменных, каждая из которых имеет фиксированную сумму , независимо от того, существует ли термин перехват: предположим, что вазы в (4) были созданы в трех размерах, а категориальная переменная для размера была сохранена как три дополнительные индикаторные переменные , Мы бы имели large + medium + small = 1. Тогда у нас есть линейная комбинация 1(large) + 1(medium) + 1(small) - 1(red) - 1(green) - 1(blue) = 0, даже когда нет термина «перехват». Эти два подмножества не должны совместно использовать одну и ту же сумму, например, если у нас есть объяснительные переменные такие что каждые и то .u,v,w,xui+vi=k1xi+yi=k2k2(u)+k2(v)k1(w)k1(x)=0

  6. Одна переменная определяется как линейная комбинация нескольких других переменных : например, если вы записываете длину , ширину и периметр каждого прямоугольника, то поэтому мы имеем линейную комбинацию . Пример с термином перехвата: предположим, что бизнес по почтовым заказам имеет две товарные линии, и мы записываем, что заказ состоял из первого продукта по себестоимости единицы продукции и второго по цене единицы продукции , с фиксированная стоимость доставки . Если мы также включаем стоимость заказаlwppi=2li+2wi1(p)2(l)2(w)=0iui$avi$b$c$x в качестве пояснительной переменной, тогда и т. д. . Это очевидное обобщение (3). Это также дает нам другой способ мышления о (4): как только мы знаем все столбцы одной из подмножества переменных, чья сумма является фиксированной, то оставшаяся часть является их дополнением, поэтому может быть выражена как их линейная комбинация и их сумма. , Если мы знаем, что 50% клиентов были удовлетворены, а 20% были неудовлетворены, то 100% - 50% - 20% = 30% не должны быть ни удовлетворены, ни неудовлетворены; если мы знаем, что ваза не красная ( ) и она зеленая ( ), то мы знаем, что она не синяя ( ).xi=aui+bvi+c1(x)a(u)b(v)c(1n)=0red=0green=1blue = 1(1) - 1(red) - 1(green) = 1 - 0 - 1 = 0

  7. Одна переменная является константой и равна нулю , независимо от того, есть ли термин перехвата: в наблюдательном исследовании переменная будет постоянной, если ваша выборка не демонстрирует достаточных (любых!) Вариаций. Могут быть различия в популяции, которые не отражены в вашей выборке, например, если существует очень распространенное модальное значение: возможно, размер вашей выборки слишком мал и поэтому вряд ли будет включать какие-либо значения, которые отличаются от режима, или ваши измерения были недостаточно точный, чтобы обнаружить небольшие отклонения от режима. В качестве альтернативы могут быть теоретические причины отсутствия вариаций, особенно если вы изучаете субпопуляцию. При исследовании свойств новой сборки в Лос-Анджелесе не удивительно, что каждая точка данных имеет AgeOfProperty = 0иState = California! В экспериментальном исследовании вы могли измерить независимую переменную, которая находится под экспериментальным контролем. Если одна из ваших объясняющих переменных будет и константой, и нулем, то мы сразу получим, что линейная комбинация (с нулевым коэффициентом для любых других переменных) равна .x1(x)0

  8. Существует член перехвата, и хотя бы одна переменная является постоянной : если является постоянной величиной, так что каждая , то линейная комбинация .xxi=k01(x)k(1n)=0

  9. Как минимум две переменные являются постоянными , независимо от того, существует ли член-перехват: если каждый и , то линейная комбинация .wi=k10xi=k20k2(w)k1(x)=0

  10. Число столбцов матрицы проекта, , превышает количество строк,kn : даже если между вашими переменными нет концептуальной связи, математически необходимо, чтобы столбцы вашей матрицы дизайна были линейно зависимыми, когда . Просто невозможно иметь линейно независимых векторов в пространстве с числом измерений ниже : например, в то время как вы можете нарисовать два независимых вектора на листе бумаги (двумерная плоскость,k>nkkR2) любой дополнительный вектор, нарисованный на странице, должен находиться в пределах их диапазона и, следовательно, быть линейной комбинацией их. Обратите внимание, что термин пересечения добавляет столбец единиц в матрицу проекта, поэтому считается одним из ваших столбцов. (Этот сценарий часто называют проблемой «большой , маленький »: см. Также этот связанный вопрос CV .)kpn

Примеры данных с кодом R

Каждый пример дает матрицу дизайна , матрицу (обратите внимание, что она всегда квадратная и симметричная) и . Обратите внимание, что если сингулярен (нулевой определитель, следовательно, не обратим), то мы не можем оценить . Условие, что не является особенным, эквивалентно условию, что имеет полный ранг, поэтому его столбцы линейно независимы: см. Этот вопрос Math SE или этот и его обратное .XXXdet(XX)XXβ^=(XX)1XyXXX

(1) Один столбец кратен другому

# 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) Термин перехвата и одна переменная отличается от другой на постоянную

# 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) Термин перехвата и одна переменная является аффинным преобразованием другого

# 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) Член перехвата и сумма нескольких переменных фиксированы

# 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) Член перехвата с фиктивной переменной ловушкой

# 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) Два подмножества переменных с фиксированной суммой

# 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) Одна переменная является линейной комбинацией других

# 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) Одна переменная постоянна и равна нулю

# 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) Член перехвата и одна постоянная переменная

# 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) две постоянные переменные

# 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

4

Несколько тривиальных примеров, помогающих интуиции:

  1. x1 - высота в сантиметрах. - это высота в метрах. Потом: x2
    • x1=100x2 , и ваша матрица дизайна не будет иметь линейно независимых столбцов.X
  2. x1=1 (т.е. вы включаете постоянную в регрессию), - это температура в градусах Фаренгейта, а - это температура в градусах Цельсия. Потом: x2x3
    • x2=95x3+32x1 , и ваша матрица проекта не будет иметь линейно независимых столбцов.X
  3. Каждый начинает ходить в школу в 5 лет, (т. Е. Постоянное значение 1 во всех наблюдениях), - это годы обучения, - это возраст, и никто не покинул школу Потом: x1=1x2x3
    • хx2=x35x1 , и ваша матрица дизайна не будет иметь линейно независимых столбцов.X

Существует множество способов, чтобы один столбец данных был линейной функцией ваших других данных. Некоторые из них очевидны (например, метры против сантиметров), в то время как другие могут быть более тонкими (например, возраст и годы обучения детей младшего возраста).

Примечания: пусть обозначает первый столбец , - второй столбец и т. Д., А обозначает вектор единиц, который входит в матрицу дизайна X если вы включите константу в свою регрессию. х х 2 1x1Xx21


1
Пример школьного образования и возраста очень хороший, хотя стоит отметить, что отношения сохраняются только тогда, когда все еще в школе! Логическим продолжением этого является возраст, годы обучения и годы работы, которые могут продолжить отношения после окончания учебы. (Конечно, на практике такая мультиколлинеарность редко бывает идеальной - всегда есть исключения, как, например, дети, которые пошли в школу в другом возрасте, потому что они приехали из другой страны, - но это часто довольно серьезно.)
Серебряная рыба

@ Серебряная рыба хорошие очки! Я только что сделал некоторые правки / исправления.
Мэтью Ганн,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.