Summary
다중 회귀에서 독립변수들의 상대적 기여도를 비교하기 위해 표준화한 회귀계수. 단위가 다른 변수들의 효과 크기를 동일 스케일에서 비교할 수 있다.
용어 설명
- 다중공선성 (Multicollinearity): 독립변수들 간에 높은 상관관계가 있는 상태. β가 불안정해지고 해석이 어려워짐. VIF(분산팽창지수) > 10이면 경고
- z-score (표준점수): 원래 값에서 평균을 빼고 표준편차로 나눈 값. 평균 = 0, SD = 1로 변환. 표준화 회귀의 기초
- 회귀계수 (Regression coefficient): 독립변수가 1단위 변할 때 종속변수의 예상 변화량
- 비표준화 계수 (b): 원래 단위 기준의 회귀계수. 예측에는 유용하지만 변수 간 비교 불가
- 표준화 계수 (β): 표준편차 단위로 변환한 회귀계수. 변수 간 상대적 중요도 비교에 사용
Standardized Beta (β)
수식
수식 변수 풀이
- : 독립변수 의 표준화 회귀계수 — 가 1 SD 증가할 때 가 SD만큼 변화
- : 비표준화 회귀계수 — 원래 단위에서의 기울기
- : 독립변수 의 표준편차
- : 종속변수 의 표준편차
- 직관: 비표준화 계수에 “독립변수의 퍼짐 / 종속변수의 퍼짐” 비율을 곱해 스케일 통일
- : 비표준화 회귀계수 (unstandardized coefficient)
- : 독립변수 의 표준편차
- : 종속변수 의 표준편차
해석: 가 1 표준편차 증가할 때, 가 표준편차만큼 변화한다.
비표준화 vs 표준화 계수
| 구분 | 비표준화 (b) | 표준화 (β) |
|---|---|---|
| 단위 | 원래 변수 단위 | 단위 없음 (표준편차 기준) |
| 비교 | 변수 간 비교 불가 | 변수 간 상대적 비교 가능 |
| 해석 | ”x가 1단위 증가 → y가 b만큼 변화" | "x가 1SD 증가 → y가 β·SD만큼 변화” |
| 용도 | 예측, 실용적 해석 | 변수 중요도 비교 |
| 절편 | 의미 있음 | 항상 0 (표준화 후) |
구체적 예시
종속변수: 시험 점수, 독립변수: 공부 시간(hr), 수면 시간(hr)
변수 b β 공부 시간 5.2 0.45 수면 시간 3.8 0.32
- b로 보면: 공부 1시간 → 5.2점↑, 수면 1시간 → 3.8점↑ (단위 같으니 직접 비교 가능)
- β로 보면: 공부 시간이 수면 시간보다 상대적으로 더 큰 기여 (0.45 > 0.32)
- 만약 변수 단위가 달랐다면 (e.g., 공부 시간 vs IQ), β만이 공정한 비교를 허용
해석 기준
Cohen (1988)의 상관계수 기준을 준용하면:
| |β| 값 | 해석 |
|---------|------|
| < 0.1 | 무시할 수준 |
| 0.1 – 0.3 | Small |
| 0.3 – 0.5 | Medium |
| > 0.5 | Large |
주의
- β는 회귀 모형 내에서의 상대적 크기이며, 다른 모형과 비교할 수 없다.
- 독립변수 간 **다중공선성(multicollinearity)**이 높으면 β가 불안정해진다.
- 범주형 변수(dummy)의 β 해석은 주의가 필요하다.
표준화의 두 가지 방법
1. 변수 사전 표준화 후 회귀
수식 변수 풀이
- : 독립변수의 표준점수 — 평균을 빼고 SD로 나눈 값 (평균 = 0, SD = 1)
- : 각 변수의 평균
- 이 방식으로 변환 후 회귀하면, 계수가 바로 표준화 계수(β)가 됨
표준화된 변수로 회귀 → 계수가 곧 β
2. 비표준화 계수에서 변환
Implementation
import statsmodels.api as sm from scipy import stats as sp_stats import pandas as pd import numpy as np # 방법 1: 변수 표준화 후 회귀 df_z = df[['x1', 'x2', 'y']].apply(sp_stats.zscore) model_z = sm.OLS(df_z['y'], sm.add_constant(df_z[['x1', 'x2']])).fit() print("Standardized β:") print(model_z.params[1:]) # 절편 제외 # 방법 2: 비표준화 계수에서 변환 model = sm.OLS(df['y'], sm.add_constant(df[['x1', 'x2']])).fit() betas = model.params[1:] * df[['x1', 'x2']].std().values / df['y'].std() print("Standardized β (from b):") print(betas)
관련 문서
- Effect Size 개요 — effect size 전체 분류
- Eta-squared — ANOVA 맥락의 effect size
- Confidence Interval — β의 95% CI 해석