회귀 진단으로 잔차·자기상관·영향점 점검하기
잔차 플롯, Durbin-Watson 통계량, Cook's 거리를 활용해 선형회귀의 가정 위반과 영향 관측치를 점검하는 방법을 정리합니다.
2026-08-14 · 최초 발행 2024-04-29
회귀식의 신뢰성은 진단 과정에서 갈린다
회귀모델은 적합도만 높다고 신뢰할 수 없다. 잔차에 구조가 남아 있거나, 관측치가 서로 의존하거나, 특정 사례가 계수를 과도하게 좌우하면 해석과 의사결정이 모두 흔들린다.
회귀 진단은 잔차 플롯, Durbin-Watson 통계량, Cook's 거리를 사용해 선형성·독립성·등분산성·영향점 존재를 점검하는 절차다. 모델 성능을 개선하고 잘못된 판단의 위험을 낮추기 위한 검증 단계로 볼 수 있다.
잔차에서 확인하는 모델 가정
잔차 플롯은 예측값에 따라 잔차가 어떻게 분포하는지 보여 준다. 선형성과 등분산성 가정이 성립하는지 살피는 데 쓰인다.
곡선이나 U자 형태가 나타나면 선형성 위반을 의심할 수 있다. 이 경우 비선형 항을 더하거나 변환을 검토한다. 잔차의 폭이 깔때기처럼 넓어지거나 좁아지면 이분산성 신호이며, 가중회귀나 강건 표준오차를 적용할 수 있다.
체계적인 구조, 군집, 시간 순서에 따른 의존성은 비정상성 또는 누락변수를 시사할 수도 있다. 단순히 잔차가 작아 보이는지만 볼 것이 아니라, 어떤 방식으로 남아 있는지를 확인해야 한다.
Durbin-Watson으로 자기상관을 점검할 때
Durbin-Watson은 0~4 범위의 통계량으로 잔차의 1차 자기상관 여부를 판단한다. 값이 2에 가까우면 독립성 가정에 대체로 적합한 상태로 해석한다.
경험적으로는 1.5~2.5를 대체로 양호한 범위로 보며, 1보다 작으면 강한 양(+)의 자기상관 가능성, 3보다 크면 강한 음(-)의 자기상관 가능성을 검토한다. 다만 표본 크기와 회귀자 수에 따른 엄밀한 임계값이 존재한다.
자기상관이 확인되면 시계열 구조를 반영한 AR/ARIMA, GLS/GLSAR를 고려하거나 Newey-West(해시안-화이트) 강건 분산-공분산을 적용할 수 있다.
Cook's 거리로 영향 관측치를 찾는 방법
Cook's 거리는 개별 관측치가 회귀계수와 적합값에 미치는 영향의 크기를 나타낸다. 큰 값은 영향점일 가능성을 보여 주지만, 즉시 제거할 근거는 아니다.
4/n 또는 상위 백분위 관측치를 기준선으로 탐지하며, Cook’s D > 1은 강한 영향 가능 신호다. 영향점은 높은 잔차와 높은 레버리지가 함께 나타날 때 생길 수 있으므로, 오입력이나 드문 조합 같은 데이터 품질 문제를 확인하고 민감도 분석을 수행한다.
탐지 뒤에는 보정과 재검증이 이어진다
진단은 탐지→검증→보정→재검증으로 반복된다. 일부 관측치를 제외하는 것보다 대안 모델, 강건 추정, 변환을 먼저 검토하는 편이 낫다.
재적합 후에는 가정을 다시 점검하고 Adj. R², AIC/BIC, 예측 RMSE 같은 지표와 진단 결과의 일관성을 함께 확인한다. 진단 지표와 예측 지표가 서로 다른 방향을 가리킬 수 있기 때문이다.
시계열 회귀의 광고·수요예측에서는 DW < 1.5가 나타날 때 GLSAR 또는 Newey-West로 계수 신뢰구간을 다시 산출해 과도한 유의성 판정을 막을 수 있다. 가격 탄력성 모델에서는 잔차 플롯으로 이분산성을 확인한 뒤 로그 변환 또는 가중최소제곱(WLS)으로 추정을 안정화한다.
제조 공정 품질에서는 Cook’s 거리 상위 관측치를 조사해 센서 결함이나 이상 상태를 조기에 찾고 공정 규칙을 개선할 수 있다. 운영 대시보드에서는 정기 진단 리포트를 자동화해 모델 드리프트와 데이터 품질 이슈를 조기에 경보한다.
표준오차 편의를 줄이면 잘못된 유의성 판정도 줄일 수 있으며, 가짜 양성 감소 1030% 사례가 관측된다. 비선형·이분산 보정을 도입하면 예측 RMSE/MAPE가 515% 개선될 수 있다. 모델의 해석력과 신뢰성을 높이고 의사결정 리스크를 줄이는 동시에, 운영 자동화와 데이터 거버넌스 수준도 높일 수 있다.
진단 도구별 운영 특성
| 진단 기법 | 성능(탐지 민감도) | 확장성(대용량) | 일관성(재현성) | 안정성(잡음 내성) | 운영 편의 |
|---|---|---|---|---|---|
| 잔차 플롯 | 중간~높음, 패턴 의존 | 높음, 경량 | 중간, 주관 개입 | 중간, 시각 판독 영향 | 높음, 구현 단순 |
| Durbin-Watson | 중간, 1차 자기상관 특화 | 매우 높음 | 높음, 단일 통계량 | 중간, 이분산 민감 | 매우 높음 |
| Cook’s 거리 | 높음, 영향점 민감 | 높음 | 중간, 임계값 선택 영향 | 중간, 레버리지 민감 | 높음, 보고 용이 |
진단과 보정이 순환하는 흐름
statsmodels로 진단 결과를 한 번에 확인하기
전제조건: Python 3.10+, pandas 2.x, numpy 1.26+, statsmodels 0.14+, matplotlib/seaborn 설치
# pip install pandas numpy statsmodels matplotlib seaborn scikit-learn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_diabetes
import statsmodels.api as sm
from statsmodels.stats.stattools import durbin_watson
# 1) 데이터 로드 및 모델 적합
X, y = load_diabetes(return_X_y=True, as_frame=True)
X = sm.add_constant(X) # 절편 추가
model = sm.OLS(y, X).fit()
# 2) 잔차 및 적합값
resid = model.resid
fitted = model.fittedvalues
# 3) 잔차 플롯 및 QQ 플롯
fig, axes = plt.subplots(1, 2, figsize=(10,4))
sns.scatterplot(x=fitted, y=resid, ax=axes[0], s=20, edgecolor=None)
axes[0].axhline(0, color='red', linestyle='--', linewidth=1)
axes[0].set_title('Residuals vs Fitted')
sm.qqplot(resid, line='45', ax=axes[1])
axes[1].set_title('QQ Plot of Residuals')
plt.tight_layout(); plt.show()
# 4) Durbin-Watson
dw = durbin_watson(resid)
print(f"Durbin-Watson: {dw:.3f} # ~2: 독립성 적합, <1: (+)자기상관, >3: (-)자기상관 가능")
# 5) Cook's 거리
influence = model.get_influence()
cooks_d = influence.cooks_distance[0]
df = pd.DataFrame({'fitted': fitted, 'resid': resid, 'cooks_d': cooks_d})
n = len(df)
threshold = 4 / n
flag = df['cooks_d'] > threshold
print(f"Cook's D 임계값(4/n): {threshold:.4f}, 초과 개수: {flag.sum()}")
# 상위 영향점 확인
top_influential = df.sort_values('cooks_d', ascending=False).head(5)
print(top_influential)
# 6) 대안 추정: Newey-West(자기상관/이분산 강건)
# - 자기상관 시: cov_type='HAC', maxlags 선택(도메인/ACF 기반)
nw = model.get_robustcov_results(cov_type='HAC', maxlags=1)
print(nw.summary().tables[1]) # 강건 표준오차 계수표
# 7) 이분산 감지 시 White 강건 표준오차
white = model.get_robustcov_results(cov_type='HC1')
print(white.summary().tables[1])
운영 시에는 DW의 경험적 범위 1.5~2.5를 참고치로 사용하되, 회귀자 수와 표본 크기에 따른 엄밀한 임계값도 고려한다. 영향점을 제거하기 전에는 데이터 정합성을 확인하고, 제외 전후 계수 변화로 결과 민감도를 보고한다. 잔차 플롯, DW, Cook’s 거리 상위 관측치를 담은 주기별 진단 리포트와 경보 임계값을 함께 버전관리하면 운영 중 변화도 추적할 수 있다.