Skip to main content

다중 회귀분석

다중 회귀분석 (Multiple Regression)

  • 독립변수가 2개 이상인 회귀분석.
  • Python 관계식: + 기호로 독립변수 구분/추가.
    price ~ mileage + year
    • mileageyear 둘 다를 독립변수로 사용.

통계적 통제 (Statistical Control)

  • 필요성: 독립변수 x 외에 종속변수 yx 와 모두 관련된 혼란변수(confounder) z 존재 시, x의 순수 영향력 파악 어려움 (z 영향이 x 효과에 섞여 반영).
  • 실험적 통제: 실험 설계 통해 z 값 일정하게 유지하여 영향 제거.
  • 통계적 통제: z를 회귀 모형에 독립변수로 함께 포함. → x의 회귀계수(wxw_x)에서 z의 간접 영향 분리/제거 효과. x고유한 영향력 추정 가능.

표준화 (Standardization) in Multiple Regression

  • 필요성: 다중회귀분석에서 독립변수들 단위 다르면, 회귀계수 크기만으로 영향력 직접 비교 어려움.
  • 표준화: 각 변수를 (값 - 평균) / 표준편차 로 변환 (Z-점수).
Z=XμσZ = \frac{X - \mu}{\sigma}
  • 효과: 표준화된 변수는 평균=0, 표준편차=1 됨. 단위 제거되어 계수 크기로 상대적 영향력 비교 가능해짐.

관계식에서 표준화하기 (Python)

  • statsmodels 관계식 내 scale() 함수 사용 가능.
    # mileage와 year를 각각 표준화하여 독립변수로 사용
    ols("price ~ scale(mileage) + scale(year)", data=df).fit()
  • 주의: 범주형 독립변수는 표준화하지 않음.

독립변수가 범주형인 경우

  • 문제: 범주형 변수(예: 'Avante', 'K3')에는 기울기 직접 곱할 수 없음.
  • 해결: 연속 변수(숫자) 형태로 변환하여 모형 투입 필요.
  • 방법: 여러 방법 중 더미 코딩(Dummy Coding) 가장 많이 사용됨.
  • 자동 처리: Jamovi, R, Python(statsmodels, scikit-learn 등)은 대부분 자동 더미 코딩 지원.

더미 코딩 (Dummy Coding)

  • 원리: 범주가 kk개인 변수를 **k1k-1개의 더미 변수(dummy variable)**로 변환.
  • 기준 범주 (Reference Category): 범주 중 하나를 기준으로 지정 (보통 첫번째 범주. 변경 가능).
  • 더미 변수 생성: 기준 제외한 나머지 각 범주별로 더미 변수 1개씩 생성.
    • 더미 변수 값: 해당 범주면 1, 아니면 0.
  • 기울기 해석: 더미 변수의 회귀계수 = 해당 범주의 종속변수 평균값 - 기준 범주의 종속변수 평균값 차이.

범주가 2개인 경우 (예: model - Avante, K3)

  • ABC 순 Avante 기준 설정됨.
  • K3에 대한 더미 변수 1개(model[T.K3]) 생성.
    • Avantemodel[T.K3] = 0
    • K3model[T.K3] = 1
  • Python 결과 (ols('price ~ model', df).fit().summary()):
    • Intercept: 기준(Avante)의 평균 price (예: 833).
    • model[T.K3]: K3의 평균 price - Avante의 평균 price 차이 (예: 80).
    • K3 예상 가격: Intercept + model[T.K3] 계수 = 833 + 80 = 913.

더미 변수 이름 확인

  • statsmodels 결과표 이름: 원본변수명[T.범주명] 형식.
  • 범주 목록 확인:
    df.model.unique()

범주가 3개인 경우 (예: TRT - A, B, C)

  • ABC 순 A 기준 설정됨.
  • B, C 대한 더미 변수 2개(TRT[T.B], TRT[T.C]) 생성.
TRTTRT[T.B]TRT[T.C]
A00
B10
C01
  • Python 결과 (ols('y ~ TRT', dep).fit().summary()):
    • Intercept: 기준(A)의 평균 y (예: 62.3333).
    • TRT[T.B]: B 평균 y - A 평균 y 차이 (예: -10.4167).
    • TRT[T.C]: C 평균 y - A 평균 y 차이 (예: -11.0833).
    • B의 평균 y: Intercept + TRT[T.B] 계수 = 62.3333 - 10.4167 = 51.9166.
    • C의 평균 y: Intercept + TRT[T.C] 계수 = 62.3333 - 11.0833 = 51.2500.

Python에서 기준 범주 바꾸기

  • C() 함수와 Treatment() 사용.
    # model 변수의 기준 범주를 'K3'로 지정
    ols('price ~ C(model, Treatment("K3"))', df).fit().summary()

퀴즈