단순 선형 회귀와 OLS 추정: 해석 가능한 예측 모델의 조건
단순 선형 회귀의 OLS 추정식, 가정 검증, 잔차 진단, 예측구간과 운영 관리 방법을 정리한다.
2026-08-14 · 최초 발행 2024-04-29
하나의 변수로 관계를 설명할 때의 출발점
단순 선형 회귀는 독립변수 하나로 종속변수를 설명하는 기본 예측 모형이다. 모델은 Y = β0 + β1 X + ε로 표현하며, 오차항 ε에는 iid(0, σ²)를 가정한다. 최소제곱 추정(Ordinary Least Squares, OLS)은 관측값과 모형이 예측한 값의 차이인 잔차 제곱합을 가장 작게 만드는 계수를 찾는다.
SSE = Σ(yᵢ − β0 − β1 xᵢ)²
닫힌형 해를 사용할 수 있다는 점이 단순 회귀의 장점이다.
β1_hat = Cov(X, Y) / Var(X) = Σ(xᵢ − x̄)(yᵢ − ȳ) / Σ(xᵢ − x̄)²β0_hat = ȳ − β1_hat x̄σ̂² = SSE / (n − 2)
계수의 의미가 직접적으로 드러나므로, 복잡한 모형에 앞서 관계를 확인하거나 설명 가능한 베이스라인을 만들 때 적합하다. 계수 검정에는 β1 ≠ 0에 대한 t-검정, 모형 유의성의 F-검정, 설명력 평가를 위한 R²와 Adj-R²를 사용한다.
추정이 성립하는 데이터 조건
기울기 β1을 구하려면 X의 분산이 0이 아니어야 한다. 모든 X 값이 같다면 분모가 되는 변동성이 사라지므로 기울기를 식별할 수 없다. 데이터 범위와 스케일이 충분한지도 함께 확인할 대상이다.
선형 관계라는 가정이 맞지 않으면 잔차에 일정한 패턴이 남는다. 이 경우 로그 변환이나 다항항을 검토하거나, 비선형 모형을 선택할 수 있다. 계수 추론을 목적으로 할 때는 선형성 외에도 독립성, 등분산성, 오차 정규성 가정을 확인한다.
단순 회귀의 OLS는 O(n) 수준의 연산 복잡도를 가져 대규모 데이터에서도 매우 효율적이다. 다만 수치 안정성을 위해 평균 중심화나 표준화를 적용할 수 있으며, 극단값이 있으면 Huber 같은 강건 추정을 고려한다.
잔차가 알려주는 모형의 한계
적합 후에는 잔차와 적합값의 산점도부터 확인한다. 특정한 모양이 보이면 모형 가정이 깨졌을 가능성이 있다. Q-Q plot으로 정규성을 보고, Breusch–Pagan으로 등분산성을, Durbin–Watson으로 자기상관을 점검한다.
이상치 자체보다 중요한 경우도 있다. DFBETAS와 Cook’s distance는 특정 관측치가 계수에 미치는 영향을 확인하는 데 사용한다. 영향점이 있으면 계수가 왜곡될 수 있으므로 처리 기준을 문서화하고 관리해야 한다.
평균반응의 신뢰구간과 개별 관측값을 위한 예측구간도 구분한다. 예측구간은 평균반응 신뢰구간보다 더 넓게 산출된다. 등분산성 위반이 발견되면 HC0~HC3 이분산-강건 표준오차로 신뢰구간을 보정할 수 있다.
단일 변수 관계를 빠르게 검토하는 장면
광고 지출 X와 매출 Y의 관계를 두면 지출 대비 매출 탄력성을 추정하고, 예산 증액에 따른 기대 매출 증가량을 산정할 수 있다. 사용자 수 X와 응답시간 Y를 연결하면 임계점 근방의 경향을 파악해 알림 기준을 설정하는 데 활용할 수 있다.
센서 원시값 X와 실제 값 Y 사이에서는 보정 계수를 구해 간단하고 해석 가능한 보정선을 만들 수 있다. 다변량 분석에 앞서 실험·관측 데이터에서 단일 변수의 영향력을 빠르게 점검하고, 유의성 판단을 변수 후보 선별에 사용할 수도 있다.
평균모형 대비 RMSE 10~30% 개선 사례가 다수 있으며, 이는 데이터 품질에 의존한다. Var(β1_hat) ≈ σ² / [n·Var(X)] 관계에서 보듯 데이터 수 n과 X의 변동성이 커질수록 추정 안정성은 높아진다. 해석이 쉬워 의사결정 커뮤니케이션 비용을 줄일 수 있고, 구현과 운영이 단순해 재현성과 감사 가능성도 높일 수 있다.
진단부터 모니터링까지의 흐름
데이터 결측 처리는 완전사례 분석, 단순 대치, 다중 대치 가운데 선택한 방식을 표준화한다. 배포 이후에는 모델 버전과 데이터 스키마를 관리하고 RMSE, MAPE, Drift를 모니터링 지표로 체계화한다.
| 관점 | 내용 |
|---|---|
| 성능 | O(n) 추정, 메모리 상수항 수준, 수 ms~수백 ms 단위 처리 가능(수십만 행 기준 환경 의존) |
| 확장성 | 단일 피처 기준 선형 확장, 스트리밍 집계(평균·분산·공분산)로 온라인 추정 가능 |
| 일관성 | 가정 만족 시 불편·최소분산 선형추정량(Gauss–Markov) 보장 |
| 안정성 | 이상치에 민감. 영향점 존재 시 계수 왜곡 가능. 강건 기법 또는 가중치로 완화 |
| 운영 편의 | 계수·신뢰구간 해석 용이. 배포·모니터링 단순. 데이터 품질 관리가 성능 좌우 |
Python으로 닫힌형 해와 OLS 결과 확인하기
전제조건은 Python 3.10+, numpy 1.26+, pandas 2.0+, statsmodels 0.14+이다.
# 환경: Python 3.10+, numpy 1.26+, statsmodels 0.14+
import numpy as np
import statsmodels.api as sm
rng = np.random.default_rng(42)
# 1) 데이터 생성
n = 200
X = rng.uniform(0, 10, n)
beta0, beta1, sigma = 2.0, 1.5, 1.0
eps = rng.normal(0, sigma, n)
Y = beta0 + beta1 * X + eps
# 2) OLS 닫힌형 추정 (단순 회귀)
xbar, ybar = X.mean(), Y.mean()
beta1_hat = np.sum((X - xbar) * (Y - ybar)) / np.sum((X - xbar)**2)
beta0_hat = ybar - beta1_hat * xbar
print(f"Closed-form: beta0={beta0_hat:.3f}, beta1={beta1_hat:.3f}")
# 3) Statsmodels로 추정 및 진단
X_with_const = sm.add_constant(X) # 절편 추가
model = sm.OLS(Y, X_with_const).fit(cov_type="HC3") # 이분산 강건 SE 예시
print(model.summary())
# 4) 예측 및 예측구간
X_new = np.array([0.0, 5.0, 10.0])
pred = model.get_prediction(sm.add_constant(X_new))
print(pred.summary_frame(alpha=0.05)) # 평균반응 CI와 예측 PI 포함
닫힌형 추정 결과와 OLS 결과가 일치하는지 확인한다. cov_type="HC3"는 등분산성 위반 시 신뢰구간을 보정하는 예시이며, summary_frame에서는 mean_ci와 obs_ci를 구분해 사용한다.
단순함을 유지하면서 한계를 관리하는 방법
산점도, 상관계수, 이상치를 먼저 확인한 뒤 중심화나 표준화와 파이프라인화를 적용하면 수치 안정성과 재현성을 확보할 수 있다. 이분산성에는 강건 표준오차 또는 가중회귀를 검토하고, 영향점의 보고 및 처리 기준을 남긴다.
단순성은 빠른 구축과 해석을 제공하지만 비선형 관계에서는 설명력의 한계가 있다. 변환이나 다항항을 추가하거나 다른 모형이 필요할 수 있다. 이상치를 제거하거나 완화할 때는 해석의 일관성도 관리해야 하며, 실시간 운영에서 완전한 가정 검정이 어렵다면 모니터링으로 보완한다.