1 개요 — SLR의 한계와 MLR의 필요성
단순 선형 회귀(SLR)는 반응변수 \(Y\) 와 예측변수 \(x\) 사이의 선형 관계를 모형화한다. 그러나 현실의 데이터에서 반응변수는 하나의 예측변수만으로 충분히 설명되지 않는다.
주택 가격(Y)은 면적(x₁) 하나로만 결정되지 않는다. 방 개수(x₂), 학군(x₃), 건축 연도(x₄), 인근 상업시설 접근성(x₅) 등이 동시에 영향을 미친다. 면적만으로 회귀하면 방 개수 효과가 잔차에 흡수되어 면적 계수가 왜곡된다.
MLR이 SLR보다 중요한 이유는 두 가지다.
혼란변수 통제(confounding control): 관심 변수 \(x_1\) 의 효과를 추정할 때, 다른 예측변수 \(x_2, \ldots, x_p\) 를 모형에 포함하면 이들의 효과를 통제한 상태에서 \(x_1\) 의 순수 효과를 분리할 수 있다. SLR은 이 통제가 불가능하여 편향된 계수 추정량이 나온다.
편회귀계수의 해석(ceteris paribus): MLR의 계수 \(\beta_j\) 는 “다른 모든 예측변수를 고정한 채 \(x_j\) 가 한 단위 증가할 때 \(Y\) 의 기대값 변화”를 의미한다. 이 해석은 SLR에서는 얻을 수 없다.
SLR과 MLR의 공식적 차이는 예측변수의 수뿐이지만, 행렬 표기를 도입하면 SLR을 포함한 MLR이 하나의 통합된 대수 체계로 표현된다.
2 모형 설정
2.1 개별 표기
\(n\) 개의 관측값 \((y_i, x_{i1}, \ldots, x_{ip})\) 에 대해 MLR은 다음과 같이 정의된다.
\[ Y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \cdots + \beta_p x_{ip} + \varepsilon_i, \quad i = 1, \ldots, n \]
여기서 \(Y_i\) 는 반응변수, \(x_{ij}\) 는 \(i\) 번째 관측의 \(j\) 번째 예측변수, \(\beta_0\) 는 절편, \(\beta_1, \ldots, \beta_p\) 는 편회귀계수(partial regression coefficients), \(\varepsilon_i\) 는 확률 오차이다.
모수는 총 \(p+1\) 개: \(\boldsymbol{\beta} = (\beta_0, \beta_1, \ldots, \beta_p)^{\top}\).
2.2 행렬 표기
\(n\) 개 방정식을 동시에 표현하면 다음과 같다.
\[ \mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \]
여기서
\[ \mathbf{Y} = \begin{pmatrix} Y_1 \\ Y_2 \\ \vdots \\ Y_n \end{pmatrix}, \quad \mathbf{X} = \begin{pmatrix} 1 & x_{11} & \cdots & x_{1p} \\ 1 & x_{21} & \cdots & x_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n1} & \cdots & x_{np} \end{pmatrix}, \quad \boldsymbol{\beta} = \begin{pmatrix} \beta_0 \\ \beta_1 \\ \vdots \\ \beta_p \end{pmatrix}, \quad \boldsymbol{\varepsilon} = \begin{pmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \vdots \\ \varepsilon_n \end{pmatrix} \]
\(\mathbf{X}\) 는 \(n \times (p+1)\) 설계행렬(design matrix), 첫 열은 모두 1이다.
설계행렬의 첫 열 \(\mathbf{1}_n\) 이 절편 \(\beta_0\) 에 대응한다.
2.3 Gauss-Markov 가정
OLS의 최적성을 보장하는 네 가지 가정이다.
| 번호 | 가정 | 수식 |
|---|---|---|
| A1 | 선형성 | \(\mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}\) |
| A2 | 완전 열랭크(full column rank) | \(\mathrm{rank}(\mathbf{X}) = p+1\) |
| A3 | 오차의 기대값 | \(\mathrm{E}[\boldsymbol{\varepsilon}] = \mathbf{0}\) |
| A4 | 등분산·비상관 오차 | \(\mathrm{Var}(\boldsymbol{\varepsilon}) = \sigma^2 \mathbf{I}_n\) |
A2는 \(\mathbf{X}^{\top}\mathbf{X}\) 가 가역임을 보장한다. A2를 위반하면 다중공선성 문제가 발생한다.
정규 오차 가정을 추가하면 정확한 분포 이론이 성립한다.
\[ \boldsymbol{\varepsilon} \sim N(\mathbf{0}, \sigma^2 \mathbf{I}_n) \quad \Longleftrightarrow \quad \mathbf{Y} \mid \mathbf{X} \sim N(\mathbf{X}\boldsymbol{\beta},\, \sigma^2 \mathbf{I}_n) \]
Gauss-Markov 정리(A1-A4)만으로도 OLS의 BLUE 성질이 성립한다. 정규성 가정은 검정과 신뢰구간에 필요하다.
3 OLS 추정 — 행렬 정규방정식
3.1 잔차 제곱합 최소화
OLS는 잔차 제곱합(RSS, Residual Sum of Squares)을 최소화하는 \(\boldsymbol{\beta}\) 를 구한다.
\[ \mathrm{RSS}(\boldsymbol{\beta}) = (\mathbf{Y} - \mathbf{X}\boldsymbol{\beta})^{\top}(\mathbf{Y} - \mathbf{X}\boldsymbol{\beta}) = \|\mathbf{Y} - \mathbf{X}\boldsymbol{\beta}\|^2 \]
\(\boldsymbol{\beta}\) 에 대해 미분하여 0으로 놓으면 정규방정식(normal equations)이 얻어진다.
\[ \frac{\partial}{\partial \boldsymbol{\beta}} \mathrm{RSS} = -2\mathbf{X}^{\top}(\mathbf{Y} - \mathbf{X}\boldsymbol{\beta}) = \mathbf{0} \]
\[ \mathbf{X}^{\top}\mathbf{X}\hat{\boldsymbol{\beta}} = \mathbf{X}^{\top}\mathbf{Y} \]
A2( \(\mathbf{X}\) 완전 열랭크)에 의해 \(\mathbf{X}^{\top}\mathbf{X}\) 가 가역이므로
\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathbf{Y} \]
이는 RSS를 유일하게 최소화하는 추정량이다.
SLR에서 \(b = S_{xY}/S_{xx}\) 와 \(a = \bar{Y} - b\bar{x}\) 는 위 공식의 특수 사례이다.
3.2 기하적 해석 — 사영
\(\hat{\mathbf{Y}} = \mathbf{X}\hat{\boldsymbol{\beta}}\) 은 \(\mathbf{Y}\) 를 \(\mathbf{X}\) 의 열공간(column space) \(\mathcal{C}(\mathbf{X})\) 에 사영(orthogonal projection)한 것이다.
\[ \hat{\mathbf{Y}} = \mathbf{H}\mathbf{Y}, \quad \mathbf{H} = \mathbf{X}(\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top} \]
\(\mathbf{H}\) 는 사영행렬(hat matrix) 또는 leverage matrix이다. 주요 성질:
\[ \mathbf{H}^2 = \mathbf{H}, \quad \mathbf{H}^{\top} = \mathbf{H}, \quad \mathrm{tr}(\mathbf{H}) = p+1 \]
잔차 벡터는 사영의 여공간(complement)으로 떨어진다.
\[ \hat{\boldsymbol{\varepsilon}} = \mathbf{Y} - \hat{\mathbf{Y}} = (\mathbf{I}_n - \mathbf{H})\mathbf{Y} \]
그리고 \(\hat{\mathbf{Y}} \perp \hat{\boldsymbol{\varepsilon}}\) 이므로 피타고라스 분해가 성립한다.
\[ \|\mathbf{Y} - \bar{Y}\mathbf{1}\|^2 = \|\hat{\mathbf{Y}} - \bar{Y}\mathbf{1}\|^2 + \|\hat{\boldsymbol{\varepsilon}}\|^2 \quad \Longleftrightarrow \quad \mathrm{SST} = \mathrm{SSR} + \mathrm{SSE} \]
이 사영 기하가 F-검정과 R²의 이론적 토대이다.
4 OLS 추정량의 통계적 성질
4.1 비편향성
\[ \mathrm{E}[\hat{\boldsymbol{\beta}}] = \mathrm{E}[(\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathbf{Y}] = (\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathbf{X}\boldsymbol{\beta} = \boldsymbol{\beta} \]
A3( \(\mathrm{E}[\boldsymbol{\varepsilon}]=\mathbf{0}\) )에 의해 OLS 추정량은 비편향이다.
4.2 공분산 행렬
\[ \mathrm{Var}(\hat{\boldsymbol{\beta}}) = (\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top} \cdot \sigma^2 \mathbf{I}_n \cdot \mathbf{X}(\mathbf{X}^{\top}\mathbf{X})^{-1} = \sigma^2 (\mathbf{X}^{\top}\mathbf{X})^{-1} \]
각 계수 \(\hat{\beta}_j\) 의 분산은 이 행렬의 \((j,j)\) 원소이다.
\[ \mathrm{Var}(\hat{\beta}_j) = \sigma^2 \left[(\mathbf{X}^{\top}\mathbf{X})^{-1}\right]_{jj} \]
4.3 Gauss-Markov 정리
가정 A1-A4 하에서, OLS 추정량 \(\hat{\boldsymbol{\beta}}\) 는 모든 선형 비편향 추정량 중 분산(공분산 행렬의 대각원소)이 가장 작다. 즉, OLS는 BLUE(Best Linear Unbiased Estimator)이다.
증명: \(\tilde{\boldsymbol{\beta}} = \mathbf{A}\mathbf{Y}\) 가 임의의 선형 비편향 추정량이면 비편향 조건 \(\mathbf{A}\mathbf{X} = \mathbf{I}\) 가 성립해야 한다. \(\mathbf{D} = \mathbf{A} - (\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\) 로 놓으면 \(\mathbf{D}\mathbf{X} = \mathbf{0}\) 이고
\[ \mathrm{Var}(\tilde{\boldsymbol{\beta}}) = \sigma^2 \mathbf{A}\mathbf{A}^{\top} = \sigma^2 \left[(\mathbf{X}^{\top}\mathbf{X})^{-1} + \mathbf{D}\mathbf{D}^{\top}\right] \geq \sigma^2 (\mathbf{X}^{\top}\mathbf{X})^{-1} = \mathrm{Var}(\hat{\boldsymbol{\beta}}) \]
반양정치 행렬 \(\mathbf{D}\mathbf{D}^{\top} \geq 0\) 이므로 부등호가 성립한다.
Gauss-Markov 정리는 정규성 없이도 성립한다는 점이 핵심이다.
4.4 \(\sigma^2\) 추정
오차 분산 \(\sigma^2\) 의 비편향 추정량은 다음과 같다.
\[ s^2 = \frac{\mathrm{SSE}}{n-p-1} = \frac{\hat{\boldsymbol{\varepsilon}}^{\top}\hat{\boldsymbol{\varepsilon}}}{n-p-1} \]
\(n-p-1\) 은 자유도이다. \(p+1\) 개의 모수를 추정했으므로 잔차의 자유도가 줄어든다.
왜 비편향인가?
\[ \mathrm{E}[\mathrm{SSE}] = \mathrm{E}[\hat{\boldsymbol{\varepsilon}}^{\top}\hat{\boldsymbol{\varepsilon}}] = \mathrm{E}[\boldsymbol{\varepsilon}^{\top}(\mathbf{I}-\mathbf{H})\boldsymbol{\varepsilon}] = \sigma^2 \mathrm{tr}(\mathbf{I}-\mathbf{H}) = \sigma^2 (n - p - 1) \]
\(\mathrm{tr}(\mathbf{H}) = p+1\) 임을 이용하면 \(\mathrm{E}[s^2] = \sigma^2\) 이 된다.
5 분포 이론 — 정규 오차 가정
\(\boldsymbol{\varepsilon} \sim N(\mathbf{0}, \sigma^2 \mathbf{I}_n)\) 을 추가하면 정확한 분포가 얻어진다.
\[ \hat{\boldsymbol{\beta}} \sim N\!\left(\boldsymbol{\beta},\; \sigma^2 (\mathbf{X}^{\top}\mathbf{X})^{-1}\right) \]
\[ \frac{(n-p-1)s^2}{\sigma^2} \sim \chi^2_{n-p-1} \]
\(\hat{\boldsymbol{\beta}}\) 와 \(s^2\) 는 독립이다.
이 세 결과가 t-검정과 F-검정의 토대가 된다.
증명 요약:
\(\hat{\boldsymbol{\beta}} = (\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathbf{Y}\) 는 \(\mathbf{Y}\) 의 선형변환이고 \(\mathbf{Y} \sim N(\mathbf{X}\boldsymbol{\beta}, \sigma^2 \mathbf{I})\) 이므로 정규 분포를 따른다.
\(\hat{\boldsymbol{\varepsilon}} = (\mathbf{I} - \mathbf{H})\mathbf{Y}\) 이고 \(\mathbf{H}(\mathbf{I}-\mathbf{H}) = \mathbf{0}\) 이므로 \(\hat{\boldsymbol{\beta}}\) 와 \(\hat{\boldsymbol{\varepsilon}}\) 이 결합 정규 분포에서 비상관이 되어 독립이다. 따라서 \(\hat{\boldsymbol{\beta}} \perp s^2\) 이다.
6 가설검정과 구간 추정
6.1 개별 계수 검정 — t-검정
\(H_0: \beta_j = 0\) 대 \(H_1: \beta_j \neq 0\) 을 검정한다.
검정통계량은
\[ t_j = \frac{\hat{\beta}_j}{s \sqrt{[(\mathbf{X}^{\top}\mathbf{X})^{-1}]_{jj}}} = \frac{\hat{\beta}_j}{\mathrm{SE}(\hat{\beta}_j)} \sim t_{n-p-1} \]
\(H_0\) 하에서 \(t_j \sim t_{n-p-1}\) 이다.
\(\beta_j\) 에 대한 \(1-\alpha\) 신뢰구간은
\[ \hat{\beta}_j \pm t_{n-p-1,\,\alpha/2} \cdot \mathrm{SE}(\hat{\beta}_j) \]
직관: 이 t-검정은 “다른 모든 변수가 모형에 있을 때 \(x_j\) 가 추가적으로 유의한가?”를 검정한다. 따라서 어떤 변수가 모형에 포함되느냐에 따라 동일 변수의 p-값이 달라진다.
6.2 전체 유의성 검정 — F-검정
\(H_0: \beta_1 = \beta_2 = \cdots = \beta_p = 0\) (절편만 있는 귀무모형)를 검정한다.
변동의 분해:
| 변동 원인 | 제곱합 | 자유도 | 평균제곱 |
|---|---|---|---|
| 회귀 (SSR) | \(\|\hat{\mathbf{Y}} - \bar{Y}\mathbf{1}\|^2\) | \(p\) | \(\mathrm{MSR} = \mathrm{SSR}/p\) |
| 잔차 (SSE) | \(\|\mathbf{Y} - \hat{\mathbf{Y}}\|^2\) | \(n-p-1\) | \(\mathrm{MSE} = \mathrm{SSE}/(n-p-1)\) |
| 전체 (SST) | \(\|\mathbf{Y} - \bar{Y}\mathbf{1}\|^2\) | \(n-1\) | — |
F-통계량은
\[ F = \frac{\mathrm{MSR}}{\mathrm{MSE}} = \frac{\mathrm{SSR}/p}{\mathrm{SSE}/(n-p-1)} \sim F_{p,\; n-p-1} \]
\(H_0\) 하에서 \(F \sim F(p, n-p-1)\) 이다. F 값이 크면 \(H_0\) 를 기각한다.
해석: \(H_0\) 가 사실이면 MSR ≈ MSE, 즉 \(F \approx 1\) 이 기대된다. 회귀가 의미 있으면 MSR이 MSE보다 훨씬 커지므로 \(F \gg 1\) 이 된다.
6.3 부분 F-검정 (Partial F-test)
변수 그룹 \(x_{q+1}, \ldots, x_p\) 의 유의성을 검정할 때 사용한다.
- 완전 모형(Full): 모든 \(p\) 개 예측변수 포함 → \(\mathrm{SSE}_F\), 자유도 \(n-p-1\)
- 축소 모형(Reduced): 처음 \(q\) 개 예측변수만 포함 → \(\mathrm{SSE}_R\), 자유도 \(n-q-1\)
\[ F = \frac{(\mathrm{SSE}_R - \mathrm{SSE}_F)/(p-q)}{\mathrm{SSE}_F/(n-p-1)} \sim F_{p-q,\; n-p-1} \]
\(H_0: \beta_{q+1} = \cdots = \beta_p = 0\) 하에서 \(F \sim F(p-q, n-p-1)\) 이다. 전체 F-검정은 \(q=0\) 인 부분 F-검정의 특수 사례이다.
개별 t-검정 \(t_j^2\) 는 “제 \(j\) 변수 하나만 제거했을 때의 부분 F-검정”과 동치이다.
7 모형 적합도 — \(R^2\) 와 수정 \(R^2\)
7.1 결정계수 \(R^2\)
\[ R^2 = \frac{\mathrm{SSR}}{\mathrm{SST}} = 1 - \frac{\mathrm{SSE}}{\mathrm{SST}} \in [0, 1] \]
\(R^2\) 는 반응변수의 총 변동 중 회귀가 설명하는 비율이다.
경고: 변수를 추가하면 \(R^2\) 는 반드시 증가하거나 같다(절대 감소하지 않는다). 쓸모없는 변수를 추가해도 \(R^2\) 가 조금씩 올라가므로, \(R^2\) 만으로 변수 선택을 하면 과적합이 발생한다.
7.2 수정 결정계수 (Adjusted \(R^2\))
자유도를 보정하여 변수 추가에 패널티를 부과한다.
\[ R^2_{\mathrm{adj}} = 1 - \frac{\mathrm{SSE}/(n-p-1)}{\mathrm{SST}/(n-1)} = 1 - (1-R^2) \cdot \frac{n-1}{n-p-1} \]
쓸모없는 변수를 추가하면 \(\mathrm{MSE} = \mathrm{SSE}/(n-p-1)\) 가 오히려 증가하므로 \(R^2_{\mathrm{adj}}\) 가 감소한다. 따라서 변수 선택 기준으로 쓸 수 있다.
7.3 AIC와 BIC
정보 기준은 우도에 모수 수에 대한 패널티를 더한다.
\[ \mathrm{AIC} = n\log(\mathrm{SSE}/n) + 2(p+2) \]
\[ \mathrm{BIC} = n\log(\mathrm{SSE}/n) + (p+2)\log n \]
BIC는 AIC보다 더 큰 패널티를 부과하여 더 작은 모형을 선호한다.
8 다중공선성 (Multicollinearity)
8.1 문제의 본질
다중공선성은 예측변수들 사이에 강한 선형 관계가 있을 때 발생한다. \(x_j\) 가 다른 예측변수들의 선형결합에 가까우면 \(\mathbf{X}^{\top}\mathbf{X}\) 가 거의 특이행렬이 되어
\[ \mathrm{Var}(\hat{\beta}_j) = \sigma^2 [(\mathbf{X}^{\top}\mathbf{X})^{-1}]_{jj} \]
이 매우 커진다. 추정량은 여전히 비편향이지만 분산이 폭발하여 표준오차가 커지고 t-검정 p-값이 커진다.
직관적 설명: \(x_1\) 과 \(x_2\) 가 거의 같은 정보를 담고 있다면, “\(x_2\) 를 고정하고 \(x_1\) 만 한 단위 변화할 때”라는 상황 자체가 데이터에서 거의 관측되지 않는다. 편회귀계수를 추정할 정보가 없는 것이다.
8.2 분산팽창인수 (VIF)
\(x_j\) 를 나머지 예측변수들로 회귀했을 때의 결정계수를 \(R^2_j\) 라 하면
\[ \mathrm{VIF}_j = \frac{1}{1 - R^2_j} \]
\(R^2_j \to 1\) 이면 \(\mathrm{VIF}_j \to \infty\) 이다.
VIF 해석:
| VIF 범위 | 판단 |
|---|---|
| 1 | 다중공선성 없음 |
| 1 ~ 5 | 허용 수준 |
| 5 ~ 10 | 주의 필요 |
| 10 이상 | 심각한 다중공선성 |
\(\mathrm{VIF}_j > 10\) 이면 \(R^2_j > 0.9\) 이므로, \(x_j\) 의 90% 이상이 다른 예측변수로 설명된다는 뜻이다.
8.3 조건수 (Condition Number)
\(\mathbf{X}^{\top}\mathbf{X}\) 의 최대·최소 고유값 비율의 제곱근으로 정의된다.
\[ \kappa = \sqrt{\frac{\lambda_{\max}}{\lambda_{\min}}} \]
\(\kappa > 30\) 이면 다중공선성이 의심된다.
8.4 대처 방법
| 방법 | 설명 |
|---|---|
| 변수 제거 | 높은 VIF 변수를 제거한다 |
| 주성분 회귀(PCR) | \(\mathbf{X}\) 를 PCA로 직교화 후 회귀한다 |
| 능형 회귀(Ridge) | \(\hat{\boldsymbol{\beta}}_{\mathrm{Ridge}} = (\mathbf{X}^{\top}\mathbf{X} + \lambda \mathbf{I})^{-1}\mathbf{X}^{\top}\mathbf{Y}\) |
| LASSO | L1 페널티로 계수를 0으로 수축한다 |
Ridge는 작은 \(\lambda > 0\) 을 더해 \(\mathbf{X}^{\top}\mathbf{X}\) 의 역변환을 안정화한다. 편향을 도입하지만 분산을 크게 줄여 MSE를 개선한다.
9 변수 선택 (Variable Selection)
9.1 왜 필요한가
불필요한 변수를 포함하면 추정량의 분산이 증가한다. 반대로 필요한 변수를 빠뜨리면 편향이 발생한다(과소 적합, underfitting). 이 편향-분산 트레이드오프를 최적화하는 것이 변수 선택의 목표이다.
9.2 단계적 방법
전진 선택법(Forward Selection):
- 절편만 있는 모형에서 시작
- AIC를 가장 많이 줄이는 변수를 순차 추가
- 어떤 변수를 추가해도 AIC가 줄지 않으면 정지
후진 제거법(Backward Elimination):
- 모든 변수가 있는 완전 모형에서 시작
- AIC를 가장 적게 높이는 변수를 순차 제거
- 어떤 변수를 제거해도 AIC가 오르면 정지
단계적 선택법(Stepwise): 전진 선택과 후진 제거를 번갈아 반복한다.
9.3 AIC 기반 비교
\[ \mathrm{AIC}_{\mathrm{reduced}} < \mathrm{AIC}_{\mathrm{full}} \Rightarrow \text{축소 모형 선호} \]
AIC 차이 \(\Delta \mathrm{AIC} < 2\) 이면 두 모형이 동등하다고 본다.
주의: 단계적 방법은 p-값 다중비교 문제가 있고 지역 최적에 빠질 수 있다. 최적 부분집합 선택(All Subsets Regression, \(2^p\) 모형 비교)이 이론적으로 완전하지만 \(p\) 가 크면 비현실적이다.
10 응용 분야
| 분야 | 활용 | 구체적 예시 |
|---|---|---|
| 경제학 | 임금 결정 요인 | 교육년수, 경력, 성별, 산업이 임금에 미치는 효과 추정 |
| 의학 | 혈압 예측 | 나이, BMI, 운동량, 염분 섭취를 통한 수축기 혈압 모형화 |
| 금융 | 주가 팩터 모형 | 시장, 규모, 가치 팩터가 주식 수익률에 미치는 영향 |
| 마케팅 | 매출 예측 | TV, 라디오, 소셜 광고 예산이 매출에 미치는 기여도 분리 |
| 기계공학 | 품질 관리 | 온도, 압력, 속도가 제품 결함률에 미치는 영향 |
11 예시 — 광고 예산과 매출
광고 데이터셋: 200개 시장, TV/라디오/신문 광고 예산(단위: 1000달러)과 매출(단위: 1000개) 가정.
11.1 단순 회귀 vs. 다중 회귀
| 모형 | TV 계수 | 라디오 계수 | 신문 계수 | \(R^2\) |
|---|---|---|---|---|
| SLR (TV만) | 0.048 | — | — | 0.61 |
| SLR (라디오만) | — | 0.203 | — | 0.33 |
| MLR (전체) | 0.046 | 0.189 | −0.001 | 0.90 |
신문 계수가 SLR에서는 양수였다가 MLR에서 유의하지 않게 된다. 이유: 신문과 라디오 광고 예산의 상관 때문에 신문의 효과가 라디오에 귀속된 것이다.
MLR에서 각 계수의 해석: - TV 계수 0.046: 라디오·신문 예산을 고정할 때, TV 예산 1단위 증가 시 매출 0.046 증가 - 라디오 계수 0.189: TV·신문 예산을 고정할 때, 라디오 예산 1단위 증가 시 매출 0.189 증가
12 코드 예시
12.1 Step 1: 순수 NumPy 구현 (원리 이해)
import numpy as np
# 광고 데이터 시뮬레이션
np.random.seed(42)
n = 200
TV = np.random.uniform(0, 300, n)
radio = np.random.uniform(0, 50, n)
# 진짜 관계: sales = 3 + 0.046*TV + 0.189*radio + noise
sales = 3.0 + 0.046 * TV + 0.189 * radio + np.random.normal(0, 1.5, n)
# 설계행렬 구성 (절편 열 포함)
X = np.column_stack([np.ones(n), TV, radio]) # (200, 3)
y = sales.reshape(-1, 1) # (200, 1)
# OLS: beta_hat = (X'X)^{-1} X'y
XtX = X.T @ X # (3, 3)
Xty = X.T @ y # (3, 1)
beta_hat = np.linalg.solve(XtX, Xty) # 역행렬 대신 선형 시스템 풀기
print("OLS 계수 추정량:")
print(f" beta_0 (절편) = {beta_hat[0, 0]:.4f}")
print(f" beta_1 (TV) = {beta_hat[1, 0]:.4f}")
print(f" beta_2 (radio) = {beta_hat[2, 0]:.4f}")
# 적합값과 잔차
y_hat = X @ beta_hat
residuals = y - y_hat
# 잔차 제곱합과 sigma^2 추정
p = 2 # 절편 제외 예측변수 수
SSE = float(residuals.T @ residuals)
s2 = SSE / (n - p - 1) # 비편향 추정량
print(f"\ns^2 (MSE) = {s2:.4f}")
print(f"s (RMSE) = {np.sqrt(s2):.4f}")
# 표준오차: SE(beta_j) = sqrt(s^2 * [(X'X)^{-1}]_jj)
cov_beta = s2 * np.linalg.inv(XtX) # (3, 3)
se = np.sqrt(np.diag(cov_beta))
# t-통계량과 p-값
from scipy.stats import t as t_dist
df = n - p - 1
t_stats = beta_hat.flatten() / se
p_values = 2 * t_dist.sf(np.abs(t_stats), df=df)
print("\n계수 추론표:")
print(f"{'변수':^12} {'계수':^10} {'SE':^10} {'t':^8} {'p-값':^10}")
names = ['절편', 'TV', '라디오']
for name, b, s_e, t_s, pv in zip(names, beta_hat.flatten(), se, t_stats, p_values):
print(f"{name:^12} {b:>10.4f} {s_e:>10.4f} {t_s:>8.3f} {pv:>10.4f}")
# F-검정
SST = float(((y - y.mean())**2).sum())
SSR = SST - SSE
F_stat = (SSR / p) / (SSE / (n - p - 1))
from scipy.stats import f as f_dist
F_pval = f_dist.sf(F_stat, dfn=p, dfd=n-p-1)
print(f"\nF-통계량 = {F_stat:.2f}, p-값 = {F_pval:.4e}")
print(f"R^2 = {SSR/SST:.4f}")
print(f"Adjusted R^2 = {1 - (SSE/(n-p-1)) / (SST/(n-1)):.4f}")
# VIF 계산
def compute_vif(X_no_intercept):
"""X에서 절편 열을 제외한 행렬을 입력"""
k = X_no_intercept.shape[1]
vifs = []
for j in range(k):
# x_j 를 나머지로 회귀
x_j = X_no_intercept[:, j]
others = np.delete(X_no_intercept, j, axis=1)
X_oth = np.column_stack([np.ones(n), others])
b = np.linalg.solve(X_oth.T @ X_oth, X_oth.T @ x_j)
x_j_hat = X_oth @ b
sst_j = ((x_j - x_j.mean())**2).sum()
sse_j = ((x_j - x_j_hat)**2).sum()
r2_j = 1 - sse_j / sst_j
vifs.append(1 / (1 - r2_j))
return vifs
vifs = compute_vif(X[:, 1:]) # 절편 열 제외
print(f"\nVIF(TV) = {vifs[0]:.3f}, VIF(라디오) = {vifs[1]:.3f}")12.2 Step 2: statsmodels 구현 (실무 활용)
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
# 데이터 준비 (Step 1과 동일 seed)
np.random.seed(42)
n = 200
TV = np.random.uniform(0, 300, n)
radio = np.random.uniform(0, 50, n)
sales = 3.0 + 0.046 * TV + 0.189 * radio + np.random.normal(0, 1.5, n)
df = pd.DataFrame({'TV': TV, 'radio': radio, 'sales': sales})
# statsmodels OLS
X = sm.add_constant(df[['TV', 'radio']]) # 절편 추가
model = sm.OLS(df['sales'], X).fit()
print(model.summary())
# VIF
vif_data = pd.DataFrame()
vif_data['변수'] = X.columns
vif_data['VIF'] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
print("\nVIF:")
print(vif_data.to_string(index=False))
# 변수 선택 — AIC 비교
# 모든 변수 포함
m_full = sm.OLS(df['sales'], sm.add_constant(df[['TV', 'radio']])).fit()
# TV만
m_tv = sm.OLS(df['sales'], sm.add_constant(df[['TV']])).fit()
# 라디오만
m_rad = sm.OLS(df['sales'], sm.add_constant(df[['radio']])).fit()
print(f"\nAIC 비교:")
print(f" Full (TV + radio): {m_full.aic:.2f}")
print(f" TV only: {m_tv.aic:.2f}")
print(f" Radio only: {m_rad.aic:.2f}")결과 해석:
model.summary()에서 각 계수의 t-통계량, p-값, 95% 신뢰구간을 직접 확인한다.- VIF 값이 모두 5 미만이면 다중공선성이 없다고 판단한다.
- AIC가 가장 낮은 모형이 최적 모형이다 — 여기서는 Full 모형이다.
13 관련 주제
선행 지식
- Simple Linear Regression 개요 — SLR의 구조와 역할
- SLR Least Squares — 정규방정식과 OLS 유도
- SLR BLUE — Gauss-Markov와 사영 기하
- SLR 분포 가정 — 조건부 정규 모형
- SLR 추정·검정 — t-검정과 F-검정
후속 주제
- 회귀 모델 전체 계보 — MLR에서 GLM, 혼합모형으로 이어지는 흐름
- Logistic Regression: The Model — 이항 반응에 대한 GLM 확장
- Robust Regression — OLS 취약점 보완
관련 개념
- MANOVA — 반응변수가 여러 개일 때 (\(\mathbf{Y}\) 가 행렬)
- Ridge, LASSO — 다중공선성·고차원 대응
- EIV Regression — 예측변수에도 측정오차가 있는 경우