귀퉁이 서재

DATA - 21. Higher order term 본문

데이터 분석

DATA - 21. Higher order term

Baek Kyun Shin 2019. 5. 2. 00:07

독립 변수 x를 제곱하거나 서로 곱함으로써 higher order term을 만들 수 있습니다. 보통 x₁² (quadratics) x₁³ (cubics), x₁x₂ (interactions)를 많이 씁니다.

출처: Udacity

quadratics와 cubics는 회귀 모델이 곡선일 때 쓰이며, interactions는 x₁의 변화가 x₂에 따라 달라질 때 쓰입니다. interaction을 써야 하는 경우에 대해 설명하겠습니다.

출처: Udacity

보라색 선은 neighborhood B일 때 Area에 따른 price 회귀선이며, 파란색 선은 neighborhood A일 때 Area에 따른 price 회귀선입니다. 두 회귀선 모두 기울기는 b₁입니다. 즉 neighborhood A이든 neighborhood B이든 Area의 증가에 따른 price 증가폭이 동일합니다. 이럴 때는 intercation term이 필요 없습니다.

1. neighborhood에 관계없이 area 증가에 따른 price 증가폭이 일정할 때 (기울기 b₁)

2. area에 관계 없이 서로 다른 neighborhood 사이의 price 차이가 동일할 때 (차이 b₂)

위 두 조건을 만족하면 interation term이 필요 없습니다.

하지만 아래와 같이 neighborhood에 따라 'area 증가에 따른 price 증가폭'이 다르면 interation term이 필요합니다.

출처: Udacity

neighborhood A일 때와 neighborhood B일 때 기울기가 서로 다릅니다. neighborhood A일 때와 B일 때 b₁이 달라진다는 뜻입니다. 하지만 interaction term이 없는 선형 회귀식으로는 이를 표현할 수 없습니다. 따라서 b₃x₁x₂인 interation term을 추가해주는 것입니다.

Quadratic term OLS 회귀 결과 해석

quadratic term을 추가해서 OLS 회귀 결과를 구해보겠습니다. 단순하게 df['area'] * df['area']를 해서 quadratic term을 나타낼 수 있습니다.

import numpy as np
import pandas as pd
import statsmodels.api as sm;

df = pd.read_csv('./house_prices.csv')

df['intercept'] = 1
df['area squared'] = df['area']*df['area']
lm = sm.OLS(df['price'], df[['intercept', 'ranch', 'victorian', 'area squared', 'area']])
results = lm.fit()
results.summary()

이때 area squared와 area의 coef을 보고, area가 한 유닛 증가할 때마다 price가 얼마나 증가하는지 알 수 없습니다. higher order term이 추가되는 순간, higher order term을 나타내는 변수에 대해서는 선형 회귀처럼 OLS 회귀 결과를 해석할 수 없습니다. 하지만 ranch나 victorian과 같이 higher order term과 관련 없는 변수에 대해서는 기존처럼 OLS 회귀 결과를 해석할 수 있습니다.

Comments