설계 행렬 측면에서 완벽한 공선 성의 예는 무엇입니까 ?
나는 예를 들어 싶습니다 때문에 추정 할 수없는 반전되지 않습니다.(X'X)
설계 행렬 측면에서 완벽한 공선 성의 예는 무엇입니까 ?
나는 예를 들어 싶습니다 때문에 추정 할 수없는 반전되지 않습니다.(X'X)
답변:
다음은 방정식과 관련된 3 개의 변수 , 및 가있는 예입니다.
여기서
특정 데이터는
y x1 x2
1 4.520866 1 2
2 6.849811 2 4
3 6.539804 3 6
따라서 는 의 배수 이므로 명백한 공선 성을 갖습니다.
우리는 모델을 다음과 같이 쓸 수 있습니다
어디:
그래서 우리는
이제 우리는 의 결정자를 계산합니다 :
R에서는 다음과 같이 표시 할 수 있습니다.
> x1 <- c(1,2,3)
x2
여러 개 만들기x1
> x2 <- x1*2
Y의 선형 조합 만들고 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 <- model.matrix(m0))
(Intercept) x1 x2
1 1 1 2
2 1 2 4
3 1 3 6
그래서 것입니다
> (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
또는:
det (XXdash) [1] 0
다음은 완벽한 다중 공선 성을 생성하는 상당히 일반적인 몇 가지 시나리오, 즉 디자인 매트릭스의 열이 선형으로 종속되는 상황입니다. 선형 대수에서 이것은 0과 같은 설계 행렬의 열 (계수가 모두 0이 아님)의 열의 선형 조합이 있음을 의미합니다. 이 함정이 왜 그렇게 자주 파업 하는지 설명하는 데 도움 이 되는 몇 가지 실용적인 예를 포함 시켰 습니다.
인터셉트 용어가 있는지 여부에 관계없이 하나의 변수는 다른 변수의 배수입니다 . 아마도 다른 단위를 사용하여 동일한 변수를 두 번 기록했거나 (예 : "센티미터 길이"가 "길이 미터"보다 정확히 100 배 더 큼) 또는 분모가 고정 될 때 변수를 원시 숫자로 한 번, 비율 또는 백분율로 한 번 기록했습니다 (예 : "페트리 접시 식민지 영역"및 "페트리 접시 식민지 백분율"은 해당 영역의 경우 서로 정확하게 배수 임) 각 페트리 접시는 동일합니다). 여기서 와 가 변수 (디자인 행렬의 열)이고 가 스칼라 상수 이기 때문에 공선 성 이 있습니다 . w x a 1 ( → w ) − a ( → x )0과 같은 변수의 선형 조합입니다.
절편 항이 있으며 한 변수가 상수에 따라 다른 변수와 다릅니다 . 이는 변수를 중심에두고 ( ) 회귀 분석에 원시 와 중심 를 모두 포함하면 발생 합니다. 변수가 상수에 따라 다른 단위 시스템에서 측정되는 경우에도 발생합니다 (예 : 가 "켈빈 온도"이고 가 "° C 온도"인 경우 . 절편 항이 항상 변수 ( 디자인 행렬에서 의 열로 표시됨) 로 간주하면 상수 대해있음 수단 직선의 조합 , 및 0 인 설계 행렬의 열.
절편 항이 있으며 한 변수가 다른 변수의 아핀 변환에 의해 주어집니다 . 즉 , 변수 와 는 와 관련 이 있습니다. 여기서 와 는 상수입니다. 예를 들어, 변수를 표준화하고 회귀 분석에 원시 및 표준화 된 변수를 모두 포함 하는 경우 이러한 상황이 발생합니다 . 또한 단위 시스템은 공통 0을 공유하지 않지만 와 관련되어 있기 때문에 를 "° F 단위의 온도"및 를 "° C 단위의 온도 "로 기록하는 경우에도 발생합니다. 또는 비즈니스 상황에서 각 주문에 대해 고정 비용 (예 : 배송 포함)와 판매 단위당 비용 가 있다고 가정합니다 . 만약 가 주문 비용 이고 가 주문 된 유닛의 수라면 입니다. 관심있는 선형 조합은 입니다. 인 경우 , (3)은 (2)를 특별한 경우로 포함하고; 인 경우 , (3)은 (1)을 특수한 경우로 포함합니다.
가로 채기 용어가 있고 여러 변수의 합계가 고정되어 있습니다 (예 : 유명한 "더미 변수 트랩") : 예를 들어 "만족 한 고객 비율", "만족하지 않은 고객 비율"및 "고객 만족도를 만족시키지 못하는 비율" "세 가지 변수는 반올림 오차를 제외하고"항상 100으로 합산됩니다. 이러한 변수 중 하나 또는 가로 채기 항은 공선 성을 방지하기 위해 회귀 분석에서 제외해야합니다. "더미 변수 트랩"은 범주 형 변수의 모든 가능한 수준에 대해 표시기 변수 (보다 일반적으로 덜 유용하지만 덜 유용함)를 사용할 때 발생합니다. 예를 들어, 꽃병이 빨강, 녹색 또는 파랑 색 구성표로 생산된다고 가정하십시오. 범주 형 변수 "를 기록한 경우red
green
그리고 "yes"와 "no"에 대해 blue
저장되는 이진 변수 일 것입니다 ) 각 꽃병에 대해 변수 중 하나만 변수가 됩니다. 절편 항에 대한 1의 벡터가 있으므로 선형 조합 . 여기서의 일반적인 해결 방법은 절편을 삭제하거나 기준선 또는 기준 레벨이되는 표시기 중 하나를 삭제 (예 : 나가기 )하는 것입니다. 이 경우에 대한 회귀 계수는 다른 설명 변수를 일정하게 유지하면서 빨간색 꽃병에서 녹색 꽃병으로 전환하는 것과 관련된 평균 응답의 변화를 나타냅니다.1
0
red + green + blue = 1
1(red) + 1(green) + 1(blue) - 1(1) = 0
red
green
인터셉트 항이 있는지 여부에 관계없이 변수의 하위 집합이 적어도 두 개 이상 있습니다 . (4)의 꽃병이 세 가지 크기로 생성되고 크기에 대한 범주 변수가 세 가지 추가 지표 변수로 저장되었다고 가정하십시오. . 우리는 할 것 large + medium + small = 1
입니다. 그런 다음 1(large) + 1(medium) + 1(small) - 1(red) - 1(green) - 1(blue) = 0
절편 항이없는 경우에도 선형 조합 이 있습니다. 예를 들어, 설명 변수 가 모든 및 , 와 같이 설명 변수 가있는 경우 두 하위 집합은 동일한 합을 공유 할 필요가 없습니다. 입니다.
하나의 변수는 여러 다른 변수의 선형 조합으로 정의됩니다 . 예를 들어 각 사각형 의 길이 , 너비 및 둘레 를 기록하면 이므로 선형 조합은 입니다. 인터셉트 기간을 가진 예 : 통신 판매 사업은 두 개의 제품 라인을 가지고 가정, 우리는 순서 기록 구성 단가에 첫 번째 제품의 및 단위 비용으로 두 번째의 로, 고정 배송료 . 주문 비용도 포함하면설명 변수로 를 입력 한 다음 및 . 이것은 (3)의 명백한 일반화입니다. 그것은 또한 우리에게 (4)에 대한 다른 생각의 방법을 제공합니다 : 일단 우리가 합이 고정 된 변수의 부분 집합 중 하나를 모두 알게되면, 나머지는 그것들의 보수이므로 그것들과 그들의 합의 선형 조합으로 표현 될 수 있습니다 . 고객의 50 %가 만족하고 20 %가 불만족 스럽다는 것을 알고 있다면 100 %-50 %-20 % = 30 %는 만족 스럽거나 불만족스럽지 않아야합니다. 꽃병이 빨간색 ( ) 이 아니며 녹색 ( ) 인 경우 파란색 ( ) 이 아님을 알 수 있습니다.red=0
green=1
blue = 1(1) - 1(red) - 1(green) = 1 - 0 - 1 = 0
절편 항이 있는지 여부에 관계없이 하나의 변수는 상수이고 0 입니다. 관측 연구에서 표본이 충분한 (임의의) 변이를 나타내지 않으면 변수가 일정합니다. 예를 들어 매우 일반적인 모달 값이있는 경우 샘플에 캡처되지 않은 모집단에 편차가있을 수 있습니다. 샘플 크기가 너무 작아서 모드와 다른 값을 포함하지 않았거나 측정 결과가 모드에서 작은 변화를 감지하기에는 불충분하게 정확합니다. 대안 적으로, 특히 하위 집단을 연구하는 경우 변동이없는 이론적 인 이유가있을 수 있습니다. 로스 앤젤레스의 새로운 빌드 속성의 연구에서, 그것은 모든 데이터 포인트가 있는지 놀라게 될 것입니다 AgeOfProperty = 0
및State = California
! 실험 연구에서 실험 제어중인 독립 변수를 측정했을 수 있습니다. 설명 변수 중 하나가 상수이고 0이면 선형 조합 (다른 변수에 대해 계수 0을 가짐 )은 입니다.
절편 항이 있고 하나 이상의 변수가 일정합니다 . 가 일정하여 각 이면 선형 조합 입니다.
절편 항이 있는지 여부에 관계없이 두 개 이상의 변수는 일정 합니다. 각 및 인 경우 선형 조합 .
설계 행렬의 열 수 가 행 수를 초과합니다. : 변수간에 개념적인 관계가없는 경우에도 때 설계 행렬의 열이 선형 적으로 종속적이어야 합니다. 단순히 가질 수 없다 선형 치수의 개수와 공간 독립 벡터들보다 낮은 예를 들어, 종이 시트 (2 차원 평면 상에 두 개의 독립적 인 경로를 그릴 수있는 반면 :) 페이지에 그려진 추가 벡터는 해당 범위 내에 있어야하므로 벡터의 선형 조합이어야합니다. 절편 항은 1의 열을 설계 행렬에 기여하므로 열 중 하나로 계산됩니다 . (이 시나리오는 종종 "large , small "문제 라고도합니다. 관련 CV 질문도 참조하십시오 .)
R 코드를 사용한 데이터 예제
각 예제는 디자인 행렬 , 행렬 (이것은 항상 정사각형이며 대칭 임) 및 입니다. 가 단수 인 경우 (0 결정자이므로 수 없음) 추정 할 수 없습니다 . 것을 조건 아닌 단수는 그 조건에 해당 그 열이 선형 적으로 독립적 인 그래서 전체 순위가 : 이 수학 SE 질문 참조 , 또는 이것 과 의 교제를 .
(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) 하나의 변수는 상수이고 0
# 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)
# 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
하나의 데이터 열이 다른 데이터의 선형 함수가되는 여러 가지 방법이 있습니다. 그들 중 일부는 명백하지만 (예 : 미터 대 센티미터) 다른 것들은 더 미묘 할 수 있습니다 (예 : 어린 아이들을위한 나이와 수년간의 교육).