Skip to main content

변수의 변형

변수의 변형

  • 필요성: 선형 모형은 독립-종속 변수 간 선형 관계 가정. 현실 데이터는 비선형 관계 많음.
  • 방법: 독립변수(또는 종속변수)에 비선형 함수(로그, 제곱근, 제곱 등) 적용하여 관계 선형화 시도.
  • 예시: z=logxz = \log x, y^=wz+b\hat{y} = wz + b
  • Python: 관계식 내 numpy 등 수학 함수 직접 사용 가능 (np.log(x)).

로그 함수 변환

  • 형태: 오른쪽 위로 갈수록 완만해짐 (증가율 감소).
  • 특성: 큰 값 차이 줄여줌 (예: 1 vs 10, 10 vs 100, 100 vs 1000 이 로그 스케일에서는 등간격).
  • 효과: 데이터 오른쪽 긴 꼬리(positive skew) 왼쪽으로 끌어당겨 분포 대칭적으로 만듦.
  • 용도: 소득, 가격 등 오른쪽으로 치우친(positive skewed) 변수 변환에 자주 사용. 간격 일정하게 만드는 효과.

왜도

  • 데이터 분포의 비대칭 정도.
    • Negative Skew: 왼쪽 꼬리 김 (- 방향 치우침). 평균 < 중간값 < 최빈값.
    • Positive Skew: 오른쪽 꼬리 김 (+ 방향 치우침). 최빈값 < 중간값 < 평균.
  • 값 해석 (절대값 기준):
    • 0: 좌우 대칭.
    • |0.5|: 중간 정도 치우침.
    • |1|: 극단적 치우침.

예시: 중고차 주행거리 분포

  • 히스토그램: 오른쪽 꼬리 긴 형태 보임.
  • 왜도 계산: skew(df['mileage']) 결과 > 1.04 → + 방향 매우 치우침.
  • 로그 변환: np.log(mileage) 적용 시 분포 좀 더 대칭적으로 변함. 회귀 분석 성능 개선 기대.

Python 로그 함수 적용

회귀분석

import numpy as np
from statsmodels.formula.api import ols
m = ols('price ~ np.log(mileage)', data=df).fit()

산점도 (x축도 로그 변환)

import matplotlib.pyplot as plt
plt.plot(np.log(df.mileage), df.price, 'o') # 'o'는 점 모양

독립변수의 서열(순위) 이용 회귀분석

  • 방법: 독립변수 실제 값 대신 순위(rank) 사용.
  • 관계식: y ~ x.rank()
  • 논리: 스피어만 상관계수와 유사. 변수 간 단조적 관계 파악.
  • 장점:
    • 표준화처럼 단위 다른 변수 비교 용이.
    • 로그 변환처럼 한쪽으로 치우친 데이터 영향 완화. 비선형성 일부 처리.
  • 단점:
    • 새로운 데이터 예측 시, 기존 데이터 기준 순위 다시 매겨야 함 (번거로움).
    • 관찰 범위 벗어난 값 예측 불가 (순위 기반이므로).

퀴즈

사용자 정보 입력
퀴즈를 시작하기 전에 이름과 소속을 입력해주세요.

Q&A