Skip to main content

변수의 변형

  • 선형 모형은 독립변수와 종속변수의 선형적 관계를 가정한다는 한계
  • 독립변수를 비선형 변환하면 이 한계를 일부 극복할 수 있음
  • 예시:
z=x2y^=az+bx+c=ax2+bx+c\begin{align*} z &= x^2 \\ \hat{y} &= az + bx + c \\ &= a x^2 + b x + c \end{align*}
  • Python은 관계식에 수학 함수를 사용하면 자동으로 변수 변환

I() 함수

  • 관계식에 덧셈, 곱셈, 거듭제곱 등을 할 경우 적용이 불가
  • I 함수를 사용하여 이러한 계산을 적용 가능
price ~ I(my_car_damage + other_car_damage)
  • 두 독립변수 x와 z를 더하여 하나의 변수로 변환

2차항(제곱항) 추가

  • y=w2x2+w1x+by = w_2 x^2 + w_1 x + b 모형을 만들고 싶을 때
  • 거듭제곱에 ** 사용
# y = w2*x^2 + w1*x + b 모형
y ~ I(x**2) + x
  • x2x^2 : I(x**2)
  • x3x^3 : I(x**3)
  • x4x^4 : I(x**4)

변수의 변형 실습: 1차 함수

데이터 불러오기

sp = pd.read_excel('speed.xlsx')

속도와 제동거리의 관계를 1차 함수로 분석

m1 = ols('dist ~ speed', data=sp).fit()
m1.summary()

시각화

import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(data=sp, x='speed', y='dist') # 산점도
plt.plot(sp['speed'], m1.predict(), color='red') # 추세선

변수의 변형 실습: 2차 함수

속도와 제동거리의 관계를 2차 함수로 분석

m2 = ols('dist ~ I(speed**2) + speed', data=sp).fit()
m2.summary()

시각화

sns.scatterplot(data=sp, x='speed', y='dist')
plt.plot(sp['speed'], m2.predict(), color='red')

퀴즈