Processing math: 100%
본문 바로가기

통계/선형대수

더미 변수(Dummy Variable)와 회귀분석

더미 변수(Dummy Variable)의 이해

회귀분석에서 일반적으로 다루어지는 변수는 온도, 습도, 가격 등 같이 양적으로 비교가 가능한 변수들이다. 하지만, 양적으로 비교가 안되는 질적변수(e.g. 성별, 인종, 학력 등)를 표현하기 위해 더미변수를 사용한다. 회귀분석에서 더미 변수는 표본공간 내에 들어가면 1을 주고, 그렇지 않으면 0을 줌으로써 어떤 특징의 존재 여부를 체크하는 변수다.

Full Rank or not...

하지만 요놈이 회귀분석을 할 때, X의 rank를 Full rank(완전계수) 로 만들지 못하면 망해버린다. 즉, 열과 행간의 종속 관계가 생겨버리면 XX 행렬식이 0이 되서 역행렬이 존재하지 않는 비정책행렬이 돼버리기 때문에 OLS1(Ordinary Least Squares) 를 사용할 수 없게 되는 거다!. 이게 뭔말인가 하면, OLS에 따르면, b=(XX)1Xy이지만, (XX)1가 존재하지 않게 돼버려서 회귀계수가 또한 존재하지 않게 되는 거다.

올바른 사용법

Full rank로 만들면 된다!. 여기에는 2가지 방법이 존재한다.
첫 번째 방법은 질적 변수의 범주가 n개로 분류되는 경우 n-1개의 더미 변수를 사용하는 것이다. 이때, 나머지 1개의 변수 즉, 기준이 되는 변수는 n-1개의 범주에 모두 해당하지 않을 경우 -1개의 가변수 값을 모두 0으로 설정해서 표현할 수 있게 된다.
R실습
R에 내장되어 있는 iris라는 데이터를 가지고 실습을 해보자

data(iris)
str(iris) # 데이터 형태 확인
Species 변수를 보면 3개 level의 factor로 이뤄진 변수라는 걸 확인할 수 있다.

Species의 세 가지 범주 setosa, versicolor, virginica 중 virginica를 기준변수로 두고 transform 함수를 이용하여 더미화를 진행할 수 있다. setosa, versicolor 두 범주에 속하지 않을 경우 0값을 갖는 형태다. 식으로 표현하면 다음과 같다.
d1={100 d2={0setosa1versicolor0virginica

dum_1 <- transform(iris, 
                   species_setosa = ifelse(Species == "setosa", 1, 0),
                   species_versicolor = ifelse(Species == "versicolor", 1, 0))

다른 하나는 흔히 쓰이는 방법인 one-hot encoding 이다. 이 방법을 쓰면 full rank가 깨지는 이유였던 상수항과 q개의 범주간의 독립 관계를 지킬 수 있다. 왜냐하면 더미변수의 가중치 외에 별도의 상수항을 두지 않기 때문이다!


1 회귀분석 시, β(회귀계수) 구할 때 쓰는 방법 중 하나다. 즉, 오차의 제곱을 최소화하는 방법을 통해 베타를 구하는 방법

'통계 > 선형대수' 카테고리의 다른 글

고유값과 고유벡터  (0) 2020.04.18
행렬대수  (0) 2020.04.18