n-1 변수를 사용하여 더미 변수를 구현하는 방법은 무엇입니까?


9

4 레벨의 변수가있는 경우 이론적으로 3 개의 더미 변수를 사용해야합니다. 실제로 이것은 실제로 어떻게 수행됩니까? 0-3을 사용합니까, 1-3을 사용하고 4를 비워 두나요? 어떤 제안?

참고 : 저는 R에서 일할 것입니다.

업데이트 : AD에 해당하는 1-4를 사용하는 열을 하나만 사용하면 어떻게됩니까? 작동하거나 문제가 발생합니까?


3
UCLA ATS 의이 페이지가 이를 잘 설명 한다고 생각합니다 .
caracal

4
그냥 정수 0-3 또는 1-4 또는 1-3이 변수를 코딩하는 것을 참고, 명확하게 할 수 없습니다 코딩 더미 것 없는 세 가지 더미 변수와 같은 효과가 있습니다. 그러나 이러한 잘못된 코딩 회귀 수식 및 소프트웨어에서 작동 하며 그럴듯한 결과 가 나타 납니다 . 의도 된 모델과 일치하지 않습니다. (NB : 이 질문에 대한 최신 업데이트에 대한 답변입니다. )
whuber

답변:


11

실제로, 선택 소프트웨어는 일반적으로 더미 변수 생성 및 조작을 처리 할 수 ​​있습니다. 여러 가지 방법으로 처리 할 수 ​​있습니다. 여기에는 A, B, C 및 D의 각 수준에서 하나씩 4 개의 관측치가있는 데이터 세트에 대한 몇 가지 일반적인 가능성이 있습니다. 이들은 서로 다른 매개 변수화입니다. 그것들은 정확히 같은 모델에 적합하지만 매개 변수에 대한 해석이 다릅니다. 하나는 기본 대수를 사용하여 쉽게 서로 변환 할 수 있습니다. 그것들은 모두 서로 선형으로 조합되어 있습니다. 실제로, 임의의 선형 조합이 사용될 수있다.

첫 번째 수준과의 차이점을 사용하십시오 (기본값은 R).

A 0 0 0
B 1 0 0
C 0 1 0
D 0 0 1

마지막 수준과의 차이점을 사용하십시오 (SAS의 기본값).

A 1 0 0
B 0 1 0
C 0 0 1
D 0 0 0

"합계"대비를 사용하십시오.

A    1    0    0
B    0    1    0
C    0    0    1
D   -1   -1   -1

"헬멧"대조를 사용하십시오 :

A   -1   -1   -1
B    1   -1   -1
C    0    2   -1
D    0    0    3

1
순결을 위해 , 엄격한 의미에서 더미 변수는 당신의 예일뿐입니다. 더미 변수는 지표 대비 변수 라고도 합니다. Helmert , 편차 및 기타 대체 유형의 대비 변수를 dummy 라고해서는 안됩니다 .
ttnphns

1
@ttnphns 필자는 Helmert 대비가 기술적 인 관점에서 더미 코딩을 구성하지 않는다는 데 동의하지만 그럼에도 불구하고 여기에 포함되는 것이 합리적이라고 생각합니다. 명확성을 위해 이것을 지적하거나 대답이 변경 될 것을 제안하는지 알 수 없습니다. @ Aaron +1, 이러한 다른 코딩 체계의 해석이 어떻게 다른지 간략하게 설명하면이 대답이 훨씬 좋습니다.
gung-복원 Monica Monica

7

변수 수준이 A, B, C 및 D라고 가정합니다. 회귀 분석에 항이 일정하면 3 개의 더미 변수를 사용해야합니다. 그렇지 않으면 4 개가 모두 있어야합니다.

더미 변수를 구현할 수있는 수학적으로 동일한 방법이 많이 있습니다. 회귀 분석에서 항이 일정하면 레벨 중 하나를 "기준선"레벨로 선택하고 다른 3 개를 비교합니다. 구체적으로, 기준선 레벨이 A라고 말하자. 첫 번째 더미 변수는 레벨이 B 일 때마다 값 1을 취하고 그렇지 않으면 0을 취합니다. 두 번째는 레벨이 C이고 0이 아닌 경우에는 값 1을 취하고, 세 번째는 레벨이 D이면 0을, 그렇지 않으면 0을 취합니다. 상수 항은 항상 1이기 때문에 첫 번째 더미 변수의 추정 계수는 레벨 B와 A의 차이의 추정치이며 다른 더미 변수의 경우와 유사합니다.

상수 항이없는 경우 이전 예와 같이 구성된 4 개의 더미 변수 만 사용하고 A 수준에 대해 하나만 추가하면됩니다.


회귀 분석에서 항이 일정하게 유지되는 방법에 대한 참고 사항.
Aaron은 Stack Overflow를 남겼습니다

5

R에서 변수를 요인으로 정의하면 다음과 같이 구현됩니다.

x <- as.factor(sample(LETTERS[1:4], 20, replace = TRUE))
y <- rnorm(20)
lm (y ~ x)

어떤 반환

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)           xB           xC           xD  
     1.0236      -0.6462      -0.9466      -0.4234  

R의 'lm', 'factor'및 'formula'에 대한 문서는 일부 세부 사항을 채 웁니다.


1
+1 이것은 이미 나열된 답변을 보완하는 것입니다. 또한 그룹 이름을 가진 변수 (예 : AD)가있는 경우 추가 단계없이 분석 함수 호출에서 수행 할 수 있습니다. lm(y ~ as.factor(x))
gung-Reinstate Monica

더미 변수를 사용하는 주된 이유는 많은 요인 수준 (> 32)으로 큰 데이터 세트를 사용하고 있으며 R의 일부 패키지 (예 : randomforest)는 많은 수준의 요인을 처리 할 수 ​​없기 때문에 시도하고 있기 때문입니다. 더미가 해결 방법인지 확인하십시오.
screechOwl

1
'model.matrix'를 사용하여 회귀 설계 행렬을 구성 할 수 있습니다. model.matrix (y ~ x) (x는 여전히 요인 임) 더미 변수가있는 행렬을 제공합니다. randomforest 패키지에 익숙하지는 않지만, model.matrix 및 model.matrix에서 얻을 수있는 명시 적 디자인 매트릭스를 함수에 제공 할 수 있다고 생각합니다.
Gray

추신 : 많은 수준으로 작동하는 솔루션에 관심이 있음을 분명히하기 위해 질문을 편집 할 수 있습니다. 질문은 4에 대해 묻습니다.
Grey

4

whuber는 더미 변수를 만드는 대신 0-3 또는 1-4 코딩을 코딩하는 것이 원하는 것이 아니라고 의견에서 말했습니다. 이것은 시도입니다-나는 당신이 그 모델로 무엇을 할 것인지 그리고 왜 그것이 틀렸는 지 희망적으로 설명해야합니다.

변수 X를 코딩하면 A와 X = 1, B와 X = 2, C와 X = 3, D와 X = 4이면 회귀 분석을 수행 할 때 하나의 매개 변수 만 얻게됩니다. X와 관련된 추정 된 매개 변수가 2 였다고 가정 해 봅시다. 이것은 B의 평균과 A의 평균 사이의 예상 차이가 2라는 것을 알려줄 것입니다. 또한 C의 평균 사이의 예상 차이가 있음을 알려줍니다 B의 평균은 2입니다. D와 C의 경우 일부입니다. 이러한 그룹의 평균 차이가이 엄격한 패턴을 따르도록 강요 할 것입니다. 이 매개 변수는 모든 그룹의 의미가 정확히 어떤 관계인지 알려줍니다.

따라서 이러한 종류의 코딩을 수행 한 경우 순서가 정확할뿐 아니라 (이 경우 A에서 B로 증가 할 것으로 예상되는 경우 B에서 C로, C에서 증가 할 것으로 예상되므로) 가정해야합니다. D)에 차이가 있지만 그 차이가 같다고 가정해야합니다!

대신 제안 된 더미 코딩을 수행하면 각 그룹에 고유 한 의미를 부여 할 수 있습니다. 제한이 없습니다. 이 모델은 훨씬 더 현명하며 원하는 질문에 대답합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.