2016-12-08 3 views
2

두 범주 형 속성, BF을 비롯한 여러 속성에서 선형 회귀 분석을 실행하고 있으며 모든 요소 수준에 대한 계수 값을 얻지 못합니다.`lm` 요약에 모든 요인 수준이 표시되지 않습니다.

B에는 9 개의 레벨이 있으며 F에는 6 개의 레벨이 있습니다. 처음에 모델을 (인터셉터를 사용하여) 실행했을 때, 저는 B에 대해 8 개의 계수를 얻었고, F에 대해 5를 얻었습니다. 각 계수는 절편에 포함 된 첫 번째 레벨로 이해했습니다.

각 계수의 계수를 기준으로 BF의 순위를 매기려고 모든 계수에 대해 계수를 얻을 수 있도록 각 요소 뒤에 0을 더한 후 -1을 추가했습니다.

Call: 
lm(formula = dependent ~ a + B-1 + c + d + e + F-1 + g + h, data = input) 

Coefficients: 
     Estimate Std. Error t value Pr(>|t|)  
a  2.082e+03 1.026e+02 20.302 < 2e-16 *** 
B1 -1.660e+04 9.747e+02 -17.027 < 2e-16 *** 
B2 -1.681e+04 9.379e+02 -17.920 < 2e-16 *** 
B3 -1.653e+04 9.254e+02 -17.858 < 2e-16 *** 
B4 -1.765e+04 9.697e+02 -18.202 < 2e-16 *** 
B5 -1.535e+04 1.388e+03 -11.059 < 2e-16 *** 
B6 -1.677e+04 9.891e+02 -16.954 < 2e-16 *** 
B7 -1.644e+04 9.694e+02 -16.961 < 2e-16 *** 
B8 -1.931e+04 9.899e+02 -19.512 < 2e-16 *** 
B9 -1.722e+04 9.071e+02 -18.980 < 2e-16 *** 
c -6.928e-01 6.977e-01 -0.993 0.321272  
d -3.288e-01 2.613e+00 -0.126 0.899933  
e -8.384e-01 1.171e+00 -0.716 0.474396  
F2 4.679e+02 2.176e+02 2.150 0.032146 * 
F3 7.753e+02 2.035e+02 3.810 0.000159 *** 
F4 1.885e+02 1.689e+02 1.116 0.265046  
F5 5.194e+02 2.264e+02 2.295 0.022246 * 
F6 1.365e+03 2.334e+02 5.848 9.94e-09 *** 
g  4.278e+00 7.350e+00 0.582 0.560847  
h  2.717e-02 5.100e-03 5.328 1.62e-07 *** 

그러나 F1가 여전히 표시되지 B의 모든 수준의 디스플레이로 이어지는 부분에서 일했다. 더 이상 가로 채기가 없기 때문에 왜 F1이 선형 모델이 아닌지 혼란 스럽습니다.

+ F - 1+ B - 1F 표시되는 모든 수준의 계수의 결과가 아니라 B1 앞에 있도록 호출의 순서를 전환.

이 사람이 하나 BF 모두의 모든 수준을 표시하는 방법, 또는 어떻게이 출력에서 ​​F의 다른 수준에 비해 F1의 상대적 무게를 평가하기 위해 알고 있나요?

+0

Zheyuan Li는 선형 회귀가 원래 함수를 간단한 함수 집합 인 변수에 직각 투영하는 것과 매우 유사합니다. 두 개 이상의 변수가 같은 경우 (예 : 상수 함수) 하나만 유지됩니다. 그리고'R'이 처음 나타나는 것만 같습니다. – clemlaflemme

답변

5

이 문제는 계속 제기되었지만 불행히도 적절한 이중 눈물 표적이 될 수있는 만족스러운 답이 만들어지지 않았습니다. 내가 글을 쓸 필요가있는 것 같아.


대부분의 사람들이이 "대조"관련이 알고 있지만, 모든 사람이 그것을 필요로하는 방법과 그 결과를 이해하는 이유를 알고있다. 이 부분을 완전히 소화하려면 모델 행렬을 봐야합니다.

~ f + g (수치 공변량은 중요하지 않으므로 그 중 아무 것도 포함하지 않으므로 응답은 모델 행렬에 표시되지 않으므로 드롭하지 마세요)의 모델에 관심이 있다고 가정 해 보겠습니다. 다음 재현 예를 생각해

set.seed(0) 

f <- sample(gl(3, 4, labels = letters[1:3])) 
# [1] c a a b b a c b c b a c 
#Levels: a b c 

g <- sample(gl(3, 4, labels = LETTERS[1:3])) 
# [1] A B A B C B C A C C A B 
#Levels: A B C 

우리는 전혀 대조와 모델 매트릭스로 시작 :

X0 <- model.matrix(~ f + g, contrasts.arg = list(
        f = contr.treatment(n = 3, contrasts = FALSE), 
        g = contr.treatment(n = 3, contrasts = FALSE))) 

# (Intercept) f1 f2 f3 g1 g2 g3 
#1   1 0 0 1 1 0 0 
#2   1 1 0 0 0 1 0 
#3   1 1 0 0 1 0 0 
#4   1 0 1 0 0 1 0 
#5   1 0 1 0 0 0 1 
#6   1 1 0 0 0 1 0 
#7   1 0 0 1 0 0 1 
#8   1 0 1 0 1 0 0 
#9   1 0 0 1 0 0 1 
#10   1 0 1 0 0 0 1 
#11   1 1 0 0 1 0 0 
#12   1 0 0 1 0 1 0 

주, 우리는이 : 그래서 span{f1, f2, f3} = span{g1, g2, g3} = span{(Intercept)}

unname(rowSums(X0[, c("f1", "f2", "f3")])) 
# [1] 1 1 1 1 1 1 1 1 1 1 1 1 

unname(rowSums(X0[, c("g1", "g2", "g3")])) 
# [1] 1 1 1 1 1 1 1 1 1 1 1 1 

합니다. 이 전체 사양에서 2 개의 열은 식별 할 수 없습니다.,

y <- rnorm(12) ## random `y` as a response 
lm(y ~ X - 1) ## drop intercept as `X` has intercept already 

#X0(Intercept)   X0f1   X0f2   X0f3   X0g1 
#  0.32118  0.05039  -0.22184    NA  -0.92868 
#   X0g2   X0g3 
#  -0.48809    NA 

이 정말 의미하는 것 : 우리는이 X0와 선형 모델에 맞는 경우

qr(X0)$rank 
# [1] 5 

그래서, 7 개 매개 변수 중 2 개 계수 NA 될 것입니다 : X0 열 순위 1 + 3 + 3 - 2 = 5이있을 것이다 풀 랭크 (full rank) 모델을 얻으려면 7 개의 매개 변수에 2 개의 선형 제약 조건을 추가해야한다는 것입니다. 이 2 가지 제약 조건이 무엇인지는 중요하지 않지만 선형 적으로 독립적 인 2 가지 제약 조건이 있어야합니다. 예를 들어 다음 중 하나를 수행 할 수 있습니다.

  • X0;
  • g1, g2g3과 동일한을 우리가 0 f1, f2f3 합계 계수를 요구처럼 두 합계 0으로는 파라미터들에 제약 추가.
  • 정규화를 사용합니다 (예 : fg에 능선 페널티 추가).

주,이 세 가지 방법이 세 가지 솔루션으로 끝낼 :

  • 대조;
  • 제한된 최소 제곱;
  • 선형 혼합 모델 또는 페널티가 적용된 최소 제곱.

처음 두 개는 여전히 고정 효과 모델링의 범위에 속합니다. "contrasts"에 의해, 풀 랭크 모델 행렬을 얻을 때까지 매개 변수의 수를 줄입니다. 다른 두 개는 매개 변수의 수를 줄이지 않지만 유효 자유도를 효과적으로 줄입니다.


이제 "대비"방식을 확실히 따르고 있습니다. 기억해두면, 우리는 두 칸을 떨어 뜨려야합니다. 그들은 대조 fg로, 모델 ~ f + g에 제공

  • 한 열 열 f에서 한 g에서 할 수있다;
  • 절편과 f 또는 g 중 하나의 열이 모델 ~ f + g - 1에 제공됩니다.

이제 열을 삭제하는 프레임 워크 내에서 1 열만 삭제할 것으로 예상되므로 원하는 것을 얻을 수있는 방법이 없음을 분명히해야합니다. 결과 모델 행렬은 여전히 ​​순위가 부족합니다.

모든 계수를 실제로 갖고 싶다면 제한된 최소 제곱 또는 페널레이션 된 회귀/선형 혼합 모델을 사용하십시오.


이제 요소의 상호 작용이있을 때 상황은 더욱 복잡해 지지만 아이디어는 여전히 동일합니다. 그러나 내 대답은 이미 충분히 길기 때문에 나는 계속하고 싶지 않다.

+0

Zheyuan와 같은 자세한 설명에 감사드립니다! 이제는 왜이 방법을 사용하여 하나의 열 (도청)을 삭제하는 것만으로도 벗어날 수 없는지 이해합니다. 내 데이터에 가장 적합한 것을 찾도록 제안한 옵션을 살펴 보겠습니다. :) –