데이터분석/통계

범주형 변수가 있을 때 다중회귀분석 파이썬 코드

씩씩한 IT블로그 2022. 9. 8. 01:32
반응형

범주형 변수가 있는 회귀분석

x1이 범주형 변수로서 A혹은 B값을 갖을 때, 회귀식을 다음과 같이 변환한다.

이때 더미변수를 처리하는 방식은 풀랭크 방식과 축소 방식이 있다. 각각의 방식을 알아본다.

테스트용 데이터는 보스턴 집값 데이터를 사용한다

 

풀랭크 방식

풀랭크 방식은 범주형 변수 x1의 값에 정해짐에 따라 다음과 같이 더미값을 설정한다.

그러면 회귀식은 다음과 같다.

 

위 데이터 중 RAD를 범주형 변수로 간주하고 나이(AGE)와 함께 풀랭크로 표시한다.

코드로 구현하면 다음과 같다. (C로 범주형 변수를 더미화하고, 쿼리에 0을 붙여 풀랭크임을 표시한다.)

import pandas as pd
from sklearn.datasets import load_boston
import statsmodels.formula.api as smf

# 데이터 로드
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['target'] = boston.target
display(df)

my_fit = smf.ols('target ~ C(RAD) + 0 + AGE', data=df).fit() # 0이면 풀랭크
print(my_fit.summary())

 

축소랭크 방식

축소랭크 방식은 기준값을 하나 두고 기준값에 대응하는 더미변수의 가중치를 항상 1로 둔다.

기준값이 A일때
기준값이 B일때

그러면 회귀식은 다음과 같다.

 

풀랭크 방식때와 마찬가지로 데이터 중 RAD를 범주형 변수로 간주하고 나이(AGE)와 함께 축소랭크로 표시한다.

코드로 구현하면 다음과 같다. (C로 범주형 변수를 더미화하고, 0을 쓰지 않는다)

import pandas as pd
from sklearn.datasets import load_boston
import statsmodels.formula.api as smf

# 데이터 로드
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['target'] = boston.target
display(df)

# my_fit = smf.ols('target ~ C(RAD) + 0 + AGE', data=df).fit() # 풀랭크
my_fit = smf.ols('target ~ C(RAD) + AGE', data=df).fit() # 축소랭크
print(my_fit.summary())

반응형