logo

변수의 변형

변수 변형의 목적

  • 선형 모형은 독립변수와 종속변수의 선형적 관계를 가정한다는 한계가 있음
  • 독립변수를 비선형 변환하면 이 한계를 일부 극복할 수 있음
  • Python은 관계식에 수학 함수를 사용하면 자동으로 변수 변환을 적용

왜도

  • 왜도(skewness)는 데이터가 한쪽 방향으로 치우친 정도
  • 해당 방향으로 극단치가 존재한다는 의미
  • negative skew: 음의 방향으로 치우침
  • positive skew: 양의 방향으로 치우침
  • 왜도가 0이면 좌우대칭
  • 절댓값이 0.5 정도이면 중간 정도 치우침
  • 절댓값이 1을 넘으면 극단적으로 치우쳤다고 볼 수 있음

왜도 유형

중고차 주행거리의 분포

  • 중고차 주행거리(mileage)는 오른쪽으로 긴 꼬리를 가지는 분포
  • 왜도는 1.04보다 커서 양의 방향으로 매우 치우친 상태
import seaborn as sns

sns.histplot(x="mileage", data=df_car)
df_car["mileage"].skew()

중고차 주행거리 히스토그램

로그 함수

  • 로그 함수는 오른쪽 위로 갈수록 증가폭이 완만해지는 형태
  • 가로축의 1, 10, 100이 로그축에서는 같은 간격으로 변환됨
  • 데이터에 적용하면 오른쪽에 멀리 떨어져 있는 값을 왼쪽으로 끌어당기는 효과
  • 독립변수가 오른쪽으로 크게 늘어진 경우, 예를 들어 소득처럼 큰 값이 드문 경우에 간격을 조정할 수 있음

로그 함수 그래프

Python 회귀분석과 산점도

  • 원래 주행거리(mileage)로 가격(price)을 예측하는 회귀분석
  • 이 모형의 는 0.457
ols("price ~ mileage", df_car).fit().summary()
  • 산점도와 회귀선을 함께 확인
sns.lmplot(x="mileage", y="price", data=df_car)

주행거리와 가격 산점도

Python 로그 함수 적용

  • 주행거리에 로그 함수를 적용하면 가 0.479로 증가
  • 오른쪽으로 긴 꼬리를 압축하여 가격과의 관계를 더 선형적으로 볼 수 있음
import numpy as np

ols("price ~ np.log(mileage)", df_car).fit().summary()

df_car["log_mileage"] = np.log(df_car["mileage"])
sns.lmplot(x="log_mileage", y="price", data=df_car)

로그 주행거리와 가격 산점도

Box-Cox 변환

  • Box-Cox 변환은 로그 변환의 일반화
  • 일 때는 로그 함수와 같음
from scipy.stats import boxcox

df_car["mileage_tr"], lambd = boxcox(df_car.mileage)
lambd

ols("price ~ mileage_tr", df_car).fit().summary()
  • Box-Cox 변환을 적용한 모형의 는 0.498

Box-Cox 변환 결과

sns.histplot(x="mileage_tr", data=df_car)
sns.lmplot(x="mileage_tr", y="price", data=df_car)

Box-Cox 변환 후 주행거리 히스토그램

Box-Cox 변환 후 주행거리와 가격 산점도

변환 함수의 시각화

import matplotlib.pyplot as plt

x = np.linspace(0, 100, 100)
y1 = boxcox(x, lambd)
plt.plot(x, y1, label="Box-Cox")

y2 = np.log(x)
plt.plot(x, y2, linestyle="dashed", label="Log")
plt.legend()

Box-Cox와 로그 변환 함수 비교

독립변수의 서열을 이용한 회귀분석

  • 독립변수의 서열, 즉 등수가 1 변할 때 종속변수가 얼마나 변하는지 분석
  • 스피어만 상관계수와 비슷한 논리
ols("price ~ mileage.rank()", df_car).fit().summary()
  • 장점
    • 표준화처럼 단위가 서로 다른 경우를 비교할 수 있음
    • 로그 함수처럼 한쪽으로 늘어진 데이터를 고르게 맞춰줄 수 있음
  • 단점
    • 새로운 데이터는 기존 데이터의 등수에 맞춰 등수를 산정해야 함
    • 예측할 때 기존 관찰 범위를 넘어서면 예측하기 어려움
Previous
이상점