1 왜 Ch.3 의 연습을 재구성하는가
McCullagh & Nelder §3.11 의 11 개 연습은 얼핏 “컴퓨터 실습” 또는 “계산 드릴” 처럼 보인다. 그러나 묶어 보면 Ch.3 본문이 다루지 못한 심화 주제를 정확히 짚는다.
- Suppression 효과 (Ex 3.1, Hamilton 1987): 단변량에서는 안 보이던 관계가 다변량에서 드러나는 역설.
- 설계 행렬 구성 (Ex 3.2, 3.3): 블록 설계와 다항 대조의 실제 조립.
- 제한 설계 (Ex 3.4, 3.10): 삼각·라틴스퀘어의 aliasing 과 rank.
- 계수 상관 (Ex 3.5, 3.6): 공변량 각도에서 추정치 공분산으로.
- Sweep 연산자 (Ex 3.7, 3.8): 자기 역성이 주는 업데이트 효율.
- 비표준 예측자 (Ex 3.9, 3.11): 차분 모형, “교호 있는데 주효과 없는” 지수 감쇠 모형.
이 포스트는 11 개 문제를 6 개 개념 결과로 재묶고, 각 결과의 주장·증명 핵심·실무 의의를 정리한다. 번호 (3.1, 3.2, …) 는 원서 문제 번호.
직관: 본문이 “모형이 어떻게 생겼는가” 를 보여 주면, 연습은 “그 모형으로 실제 해 보면 무엇이 일어나는가” 를 드러낸다. 특히 §3.11 은 “비표준 설계 / 비표준 예측자” 를 만났을 때의 판단 기준을 제공한다.
2 결과 1: Suppression — 단변량에서 숨어 있던 관계 (Ex 3.1, Hamilton 1987)
2.1 Hamilton 의 예시
문제 3.1 에 실린 15 관측 데이터: \(y\), \(x_1\), \(x_2\). 세 가지 회귀를 순차적으로 실행한다.
- 단순 회귀 \(y \sim x_1\)
- 단순 회귀 \(y \sim x_2\)
- 다중 회귀 \(y \sim x_1 + x_2\)
McCullagh 가 요구하는 비교: 단변량 회귀의 계수와 다중 회귀의 계수가 어떻게 다른가?
2.2 현상
Hamilton 의 구성은 극적이다. \(x_1\), \(x_2\) 각각과 \(y\) 의 단순 상관은 거의 0 — 산점도를 그려도 무관계로 보임. 그런데 둘을 동시에 넣은 다중 회귀 는 두 계수 모두 매우 유의하고 \(R^2\) 가 매우 높다.
이것이 suppression effect (억제 효과) 의 고전적 예시. 변수 간 상관이 각 변수의 \(y\) 와의 고유 기여를 서로 가린다. 둘 모두 모형에 있어야 비로소 드러난다.
2.3 기하적 설명
2 공변량 기하 (§3.6.4) 로 보면:
- \(P_1\): \(\mathbf{y}\) 를 \(\mathbf{x}_1\) 축으로 사영한 점. \(x_1\) 만으로 설명한 \(y\).
- \(P_2\): \(\mathbf{y}\) 를 \(\mathbf{x}_2\) 축으로 사영.
- \(P_{12}\): \(\mathbf{y}\) 를 두 벡터의 평면으로 사영.
\(P_1, P_2\) 는 각각 원점에 가깝지만 \(P_{12}\) 는 원점에서 멀 수 있다. 이것이 suppression 의 기하. \(x_1\) 과 \(x_2\) 의 선형 결합이 \(y\) 를 잘 설명하지만, 각 변수 단독으로는 엉뚱한 방향으로 당겨지는 경우.
2.4 실무 함의
- 단변량 유의성으로 변수 선택 금지: 다변량에서 매우 유의한 변수가 단변량에서 비유의할 수 있음.
- 혼란변수 통제의 필요: 역학·사회과학에서 “통제 후 효과” 가 통제 이전과 크게 다를 수 있음.
- Directed Acyclic Graph (DAG) 의 교란변수 이론: suppression 은 collider 나 mediator 의 기하학적 표현.
직관: “둘 다 필요하다” — 서로 기여를 가리는 두 변수는 묶어서만 비로소 데이터의 신호를 드러낸다. Stepwise forward 가 이런 경우를 놓치기 쉬운 이유다 (\(x_1\) 을 먼저 넣을 때 개선이 작으면 거부).
3 결과 2: 실험 설계의 모형 행렬 구성 (Ex 3.2, 3.3)
3.1 Ex 3.2 — 무작위 블록 설계 (Randomized Blocks Design)
설계: 처리 3 수준, 블록 4 개. 각 블록 내 모든 처리 1 회 적용 → 총 12 관측.
모형: \(Y_{ij} = \mu + \alpha_i + \beta_j + \varepsilon_{ij}\), \(i = 1,2,3\) (처리), \(j = 1,2,3,4\) (블록).
모형 행렬 (reference coding, \(\alpha_1 = \beta_1 = 0\)):
| 관측 | \(i\) | \(j\) | 절편 | \(\alpha_2\) | \(\alpha_3\) | \(\beta_2\) | \(\beta_3\) | \(\beta_4\) |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 2 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 3 | 3 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
| 4 | 1 | 2 | 1 | 0 | 0 | 1 | 0 | 0 |
| \(\vdots\) | ||||||||
| 12 | 3 | 4 | 1 | 0 | 1 | 0 | 0 | 1 |
총 6 개 모수 (절편 + 2 처리 + 3 블록). rank = 6 (full rank).
자유도 분해: - 처리: \(3 - 1 = 2\) - 블록: \(4 - 1 = 3\) - 잔차: \(12 - 6 = 6\) - 총: \(12 - 1 = 11\)
3.2 Ex 3.3 — 다항 대조 (Polynomial Contrasts)
처리가 세 농도 수준 (0, 1, 2 또는 low·mid·high) 이면 factor 보다 수치 변수로 취급하는 게 낫다. 단, 선형 외에도 곡률 (2차) 이 있을 수 있어 선형 + 2차 대조 로 분해.
직교 다항 대조 (수준 \(-1, 0, +1\) 기준):
| 수준 | 선형 \(L\) | 2차 \(Q\) |
|---|---|---|
| 1 (low) | \(-1\) | \(+1\) |
| 2 (mid) | \(0\) | \(-2\) |
| 3 (high) | \(+1\) | \(+1\) |
검증: \(\sum L_i = 0\), \(\sum Q_i = 0\), \(\sum L_i Q_i = 0\) — 직교.
모형 행렬: 절편 + \(L\) + \(Q\) + 블록 더미 → 1 + 2 + 3 = 6 열. 원래 factor 모형과 같은 rank. 의미가 다르다 — \(\hat\beta_L\) 은 선형 추세, \(\hat\beta_Q\) 는 곡률.
3.3 왜 다항 대조를 쓰는가
- 해석 집중: “농도가 선형으로 작동하는가?” 를 \(\beta_L\) 하나로 답.
- 직교성: \(L\) 과 \(Q\) 가 직교라 sequential SS 가 순서 무관.
- 자유도 절약: 트렌드가 선형임이 확인되면 \(Q\) 를 제거해 자유도 +1.
- Extrapolation: factor 는 관측된 수준 밖 예측 불가, 연속 변수는 가능.
직관: 순서·수치 정보가 있는 범주형을 factor 로 다루면 정보 손실. 다항 대조가 “범주 → 연속 + 곡률” 로 데이터의 구조를 드러내는 도구다.
4 결과 3: 제한 설계 — Triangular과 Latin Square (Ex 3.4, 3.10)
4.1 Ex 3.4 — 삼각 배치 (\(i \ge j\) 만 관측)
설계: \(A\) 와 \(B\) 가 각각 5 수준. 관측은 \(i \ge j\) 조합만 가능 — 총 \(\binom{5}{2} + 5 = 15\) 셀. 파생 요인 \(C\) 를 \(k = i - j + 1\) 로 정의 (값 1, 2, 3, 4, 5).
모형 비교: 다음 모형들 중 어느 것이 동등한가?
- \(A + B\)
- \(A + C\)
- \(B + C\)
- \(A + B + C\)
분석: \(C = A - B + 1\) 는 \(A, B\) 의 선형 함수. 따라서
\[ \mathbf{u}^C_k \;=\; \sum_{i-j+1=k}\mathbf{u}^A_i\otimes\mathbf{u}^B_j \]
의 형태로 \(A, B\) 더미들의 선형 결합. 따라서 \(\{A, B\}\) 의 span 이 \(\{A, B, C\}\) 의 span 과 같다.
결론:
- \(A + B + C\) 의 rank = \(A + B\) 의 rank.
- \(A + C\) 와 \(B + C\) 는 일반적으로 다른 부분공간 (삼각 배치에서 \(C\) 만으로는 \(A, B\) 를 완전 복원 불가).
- \(A + B, A + C, B + C\) 셋 모두 rank 는 같다 (삼각 배치의 특별한 구조 때문).
3번 질문 (수치 변수로 취급): \(A, B, C\) 를 각각 \(i, j, k\) 의 수치라 보자. \(C = A - B + 1\) 의 선형 관계는 여전히 성립. 모형 \(A + C = A + (A - B + 1) = 2A - B + 1\) 은 \(A + B\) 와 같은 1 차원 부분공간 (상수 + 선형 결합) 를 준다. rank = 2 (절편 + 하나의 독립 선형 결합).
실무 응용: Cox & Snell (1981, p.58) 의 triangular cross-classification. 예: 응답자의 현재 연령 \(A\) 와 기준 연령 \(B\) 의 차이 \(C\) — “이후 경과 시간” 같은 파생 변수가 자연스럽게 발생하는 설계.
직관: 파생 변수가 원 변수의 선형 함수면 aliasing 발생. 어떤 조합이 실제로 추정 가능한가 를 기하적으로 판단해야 한다.
4.2 Ex 3.10 — Latin Square (배제 제약)
설계: 4 요인 \(A, B, C, D\) 각각 4 수준. 제약: 어떤 두 요인도 같은 수준을 동시에 가질 수 없음. 가능한 조합은 \(4!=24\) 개만.
이것이 Graeco-Latin square (라틴스퀘어의 확장) 의 구조. 블록·처리·행·열이 서로 중첩되지 않는 설계.
모형 rank 질문:
- \(A + B + C + D\): full rank?
- \(A + B + C\): full rank?
- \((A + B + C + D)^{**2}\) (모든 2차 교호까지)?
분석: Latin square 에서 한 요인의 수준이 결정되면 다른 요인의 수준이 제약됨. 따라서 요인들 사이에 숨은 선형 종속이 존재할 수 있다.
일반적으로 (4 수준 × 4 요인, 24 관측):
- \(A + B + C + D\): 절편 1 + 주효과 3×4 = 13. rank ≤ \(4!-1+1 = 24\) 일 가능성 있으나 실제로는 제약 때문에 더 적음. 4 개 블록 설계의 부분공간 분해로 계산해야 함.
- 교호작용은 배제 제약 때문에 많은 더미가 영벡터 — 유효 교호 차원이 크게 축소.
용도: Latin / Graeco-Latin square 는 분산원 분해에 효율적. 작은 관측수로 여러 블로킹 요인을 통제할 수 있어 농업·산업 실험에서 고전적. 하지만 교호작용 검정이 어렵다는 한계.
직관: 제한 설계는 “관측 수를 아끼는 대신 가정을 더 많이 한다”. 교호작용이 없다는 가정 하에서만 타당.
5 결과 4: 계수 상관의 기하 (Ex 3.5, 3.6)
5.1 Ex 3.5 — 상관된 공변량의 계수는 음의 상관
주장: \(\mathbf{x}_1, \mathbf{x}_2\) 가 양의 상관 이면 \(\hat\beta_1, \hat\beta_2\) 는 음의 상관.
증명:
\[ \mathrm{cov}(\hat{\boldsymbol\beta}) \;=\; \sigma^2(\mathbf{X}^\top\mathbf{X})^{-1} \]
2 × 2 행렬의 역:
\[ \begin{pmatrix}\mathbf{x}_1^\top\mathbf{x}_1 & \mathbf{x}_1^\top\mathbf{x}_2 \\ \mathbf{x}_1^\top\mathbf{x}_2 & \mathbf{x}_2^\top\mathbf{x}_2\end{pmatrix}^{-1} \;=\; \frac{1}{\Delta}\begin{pmatrix}\mathbf{x}_2^\top\mathbf{x}_2 & -\mathbf{x}_1^\top\mathbf{x}_2 \\ -\mathbf{x}_1^\top\mathbf{x}_2 & \mathbf{x}_1^\top\mathbf{x}_1\end{pmatrix} \]
비대각 성분이 \(-\mathbf{x}_1^\top\mathbf{x}_2\). 공변량이 양의 상관 (양의 내적) 이면 이 성분이 음수 → \(\mathrm{cov}(\hat\beta_1, \hat\beta_2) < 0\).
5.2 각도로의 표현
\(\mathbf{x}_1, \mathbf{x}_2\) 사이 각도 \(\theta\) 라면
\[ \mathrm{corr}(\hat\beta_1, \hat\beta_2) \;=\; \frac{-\mathbf{x}_1^\top\mathbf{x}_2}{\|\mathbf{x}_1\|\|\mathbf{x}_2\|\sin^2\theta \cdot \text{something}} \;=\; -\cos\theta \]
단순 형태 (\(\sigma^2\) 같은 상수 빠지면): 계수 상관 = \(-\cos\theta\).
- \(\theta = 90°\) (직교): 계수 상관 = 0. 공변량이 독립이면 계수도 독립.
- \(\theta = 0°\) (같은 방향): 계수 상관 = \(-1\). 완전 aliasing.
- \(\theta = 180°\) (반대 방향): 계수 상관 = \(+1\).
5.3 Ex 3.6 — 절편 포함 시 행렬식
§3.6.6 은 절편 없는 2 변수 회귀의 Fisher 정보 행렬 행렬식을
\[ |\mathbf{X}^\top\mathbf{X}| \;=\; \|\mathbf{x}_1\|^2 \|\mathbf{x}_2\|^2 \sin^2\theta \]
로 주었다. 절편이 포함되면 공변량을 중심화된 벡터로 대체해 동일 결과.
\(\tilde{\mathbf{x}}_j = \mathbf{x}_j - \bar x_j \mathbf{1}\) 로 두면
\[ |\mathbf{X}^\top\mathbf{X}|_{\text{centered}} \;=\; n\cdot\|\tilde{\mathbf{x}}_1\|^2 \|\tilde{\mathbf{x}}_2\|^2 \sin^2\tilde\theta \]
각도 \(\tilde\theta\) 는 중심화된 벡터들 사이 각도 = 공변량 상관계수와 직접 관계 (\(\cos\tilde\theta = r_{12}\)).
직관: 공변량의 각도 = 계수 상관의 부호반전. 다중공선성은 이 각도가 0 에 수렴하는 극단 상황.
6 결과 5: Sweep 연산자의 자기 역성 (Ex 3.7, 3.8)
6.1 주장
§3.8.1 의 Beaton sweep \(\mathcal S_k\) 는 자기 역연산 (involution):
\[ \mathcal S_k \mathcal S_k \mathbf{A} \;=\; \mathbf{A} \]
6.2 증명 개요
\(\mathcal S_k\) 의 정의를 쓰면:
- 대각 원소: \(a_{kk} \to -1/a_{kk}\). 다시 sweep 하면 \(-1/(-1/a_{kk}) = a_{kk}\). ✓
- 비대각 \((i, k)\): \(a_{ik} \to a_{ik}/|a_{kk}|\). 다시 sweep 하면 \((a_{ik}/|a_{kk}|)/|{-1/a_{kk}}| = a_{ik}\). ✓
- 안쪽 원소 \((i, j)\): \(a_{ij} \to a_{ij} - a_{ik}a_{kj}/a_{kk}\). 다시 sweep 하면 원 \(a_{ij}\) 로 복귀 (추적 가능).
6.3 실무 이점 (Ex 3.7, 3.8 의 핵심)
- 변수 추가: \(\mathcal S_k\) 적용 → 변수 \(k\) 가 모형에 포함된 상태로 갱신.
- 변수 제거: \(\mathcal S_k\) 를 한 번 더 적용 → 변수 \(k\) 가 빠진 상태로 복귀.
- 계산 비용: 각 sweep 이 \(O(p^2)\). 부분 행렬 연산 만 수정.
- 중간 상태 활용: 일부만 sweep 된 행렬에서도 조건부 회귀 계수, 조건부 공분산 을 직접 읽을 수 있음 (§3.8.1).
6.4 대화형 시스템의 한계
Ex 3.8 는 “왜 대부분의 통계 패키지가 sweep 를 사용하지 않는가” 를 묻는다. McCullagh 의 언급:
- 메모리 사용이 많음 (행렬 전체 저장).
- 순차 인터페이스에서 사용자의 반복적인 “추가/제거” 가 복잡한 sweep 순서로 이어짐 — 버그 여지.
- 표준 라이브러리 (LAPACK) 가 QR/Cholesky 에 집중.
- 예외: stepwise regression 은 sweep 에 특화. R 의
step()내부, SASPROC REG의SELECTION=STEPWISE가 여전히 sweep 구조.
직관: Sweep 은 “변수 추가/제거의 로컬 업데이트” 엔진. 현대적 최적화가 아니어도 대화형 변수 선택에서 독보적인 효율. 특정 문맥에서 남아 있는 고전.
7 결과 6: 비표준 선형 예측자 (Ex 3.9, 3.11)
7.1 Ex 3.9 — 차분 모형 (Paired Comparison)
설정: 요인 \(A\) 가 4 수준 (\(\alpha_1, \alpha_2, \alpha_3, \alpha_4\)). 관측이 쌍 비교 형태:
\[ \eta_{rs} \;=\; \alpha_r - \alpha_s,\quad r < s \]
즉 4C2 = 6 개 쌍 비교 관측이 있다.
모형 행렬 (6 × 4):
| 관측 | \((r, s)\) | \(\alpha_1\) | \(\alpha_2\) | \(\alpha_3\) | \(\alpha_4\) |
|---|---|---|---|---|---|
| 1 | (1,2) | \(+1\) | \(-1\) | \(0\) | \(0\) |
| 2 | (1,3) | \(+1\) | \(0\) | \(-1\) | \(0\) |
| 3 | (1,4) | \(+1\) | \(0\) | \(0\) | \(-1\) |
| 4 | (2,3) | \(0\) | \(+1\) | \(-1\) | \(0\) |
| 5 | (2,4) | \(0\) | \(+1\) | \(0\) | \(-1\) |
| 6 | (3,4) | \(0\) | \(0\) | \(+1\) | \(-1\) |
Rank: 3. 모든 행의 원소 합이 0 → 행공간이 상수 벡터 \((1,1,1,1)\) 에 직교 하는 3 차원 부분공간.
결과:
- 상수 벡터가 column space 에 속하지 않는다 — 절편 추정 불가능.
- 4 개의 \(\alpha_r\) 자체는 추정 불가능, 대조 \(\alpha_r - \alpha_s\) 만 추정 가능.
- 정상화 제약 (예: \(\sum \alpha_r = 0\) 또는 \(\alpha_1 = 0\)) 으로 유일 해 설정.
응용: Bradley-Terry 모형 (경기 승패), conjoint 분석 (제품 선호), Thurstone 모형 (심리 측정). 피실험자가 두 대안의 차이만 평가할 때 자연스럽게 등장.
직관: 차분은 절편 정보를 보존하지 않는다. 차이만 관측되는 실험에서는 절대 수준이 원리적으로 식별 불가능.
7.2 Ex 3.11 — 교호작용 있고 주효과 없는 지수 감쇠 (Snedecor-Cochran)
데이터: 냉장 보관 중 스냅빈의 아스코르빈산 농도. 3 온도 (0, 10, 20°F) × 4 시간 (2, 4, 6, 8 주).
모형:
\[ \mu_{ij} \;=\; E[Y_{ij}] \;=\; \exp(\alpha - \beta_i\,t_j) \]
여기서 \(i\) 는 온도, \(t_j\) 는 시간. 주목할 점:
- \(\exp(\alpha)\) 는 온도와 무관. 초기 농도가 공통 — 실험 설계상 \(t=0\) 에서 구분 불가.
- 감쇠율 \(\beta_i\) 는 온도마다 다름 — 즉 “온도 × 시간 교호작용” 이 있음.
- 그러나 “온도 주효과” 는 없음 (기울기만 다를 뿐 절편은 공통).
7.3 GLM 형태로
로그 척도에서
\[ \log \mu_{ij} \;=\; \alpha - \beta_i\,t_j \]
Gamma 또는 로그-정규 GLM with log link. 선형 예측자
\[ \eta_{ij} \;=\; \alpha + \gamma_{it}\cdot t_j \]
이때 \(\gamma_{it} = -\beta_i\) 는 “온도 \(i\) 의 시간 기울기” — 혼합 항 (mixed term, §3.3.4). 모형식은
\[ \text{log(y)} \sim 1 + t\!:\!A \]
(주효과 \(A\) 없이 \(A\!:\!t\) 만). 이는 계층 원칙 (hierarchical principle) 을 깨는 모형이지만, 과학적 근거 (공통 초기값) 가 있으므로 정당화됨.
7.4 반감기 추정
\(Y = Y_0/2 \iff \alpha - \beta_i t_{1/2} = \alpha - \log 2 \iff t_{1/2} = \log 2 / \beta_i\).
세 온도별 반감기: - 온도가 높을수록 \(\beta_i\) 가 커서 반감기 짧음. - 델타 방법 (delta method) 으로 \(t_{1/2}\) 의 신뢰구간 근사.
7.5 실무 의미
이 모형은 §3.9 “공변량 선택” 에서 강조한 계층 원칙의 예외다. 과학적 근거 (설계상 공통 시작점) 가 있으면 주효과 제외가 정당화된다. 자동 stepwise 가 이런 구조를 놓치는 이유는 “과학 맥락이 없는 순수 통계 기준만 본다” 는 점.
직관: 모형식은 통계적 유의성과 과학적 타당성 의 교차점. §3.11 마지막 exercise 는 후자가 전자를 override 할 수 있음을 보여 준다.
8 코드 예시
8.1 Step 1: Hamilton suppression 재현
import numpy as np
import pandas as pd
import statsmodels.api as sm
# Ex 3.1 의 원 데이터
data = {
"x1": [2.23, 2.57, 3.87, 3.10, 3.39, 2.83, 3.02, 2.14,
3.04, 3.26, 3.39, 2.35, 2.76, 3.90, 3.15],
"x2": [9.66, 8.94, 4.40, 6.64, 4.91, 8.52, 8.04, 9.05,
7.71, 5.11, 5.05, 8.51, 6.59, 4.90, 6.96],
"y": [12.37, 12.66, 12.00, 11.93, 11.06, 13.03, 13.13, 11.44,
12.86, 10.84, 11.20, 11.56, 10.83, 12.63, 12.46],
}
df = pd.DataFrame(data)
# 단순 회귀 둘
m1 = sm.OLS(df["y"], sm.add_constant(df["x1"])).fit()
m2 = sm.OLS(df["y"], sm.add_constant(df["x2"])).fit()
m12 = sm.OLS(df["y"], sm.add_constant(df[["x1","x2"]])).fit()
print(f"y ~ x1 : beta = {m1.params['x1']:+.3f}, R² = {m1.rsquared:.3f}")
print(f"y ~ x2 : beta = {m2.params['x2']:+.3f}, R² = {m2.rsquared:.3f}")
print(f"y ~ x1 + x2 : beta_1 = {m12.params['x1']:+.3f}, "
f"beta_2 = {m12.params['x2']:+.3f}, R² = {m12.rsquared:.3f}")
print(f"\n상관계수 (x1, x2): {df[['x1','x2']].corr().iloc[0,1]:+.3f}")
print(f"상관계수 (y, x1): {df[['y','x1']].corr().iloc[0,1]:+.3f}")
print(f"상관계수 (y, x2): {df[['y','x2']].corr().iloc[0,1]:+.3f}")결과: 단순 회귀는 약하거나 이상한 부호, 다중 회귀는 둘 다 강한 유의. 공변량 간 음의 상관이 suppression 의 수학적 조건.
8.2 Step 2: 직교 다항 대조
from numpy.polynomial import polynomial as P
# 3 수준 직교 다항 대조
levels = np.array([-1, 0, 1])
L = levels # 선형
Q = levels**2 - 2/3 # 2차 (평균 0 으로 중심화)
Q = Q - Q.mean()
print(f"선형 L: {L}, sum={L.sum()}")
print(f"2차 Q: {Q}, sum={Q.sum():.3f}")
print(f"L · Q: {(L*Q).sum():.3f} (직교 확인)")
# 실제 설계 행렬
n_blocks = 4
n_treat = 3
design = []
for b in range(n_blocks):
for t in range(n_treat):
design.append([1, L[t], Q[t]] + [int(b == k) for k in range(1, n_blocks)])
X = np.array(design)
print(f"\nShape: {X.shape}, Rank: {np.linalg.matrix_rank(X)}")직교성 \(\sum L_i Q_i = 0\) 과 설계 행렬의 full rank 를 수치 확인.
8.3 Step 3: Sweep 자기 역성 검증
def sweep(A, k):
"""대칭 sweep operator, k 번째 행·열 기준"""
n = A.shape[0]
B = A.copy()
akk = A[k, k]
for i in range(n):
for j in range(n):
if i != k and j != k:
B[i, j] = A[i, j] - A[i, k] * A[k, j] / akk
elif i == k and j != k:
B[i, j] = A[i, j] / abs(akk)
elif i != k and j == k:
B[i, j] = A[i, j] / abs(akk)
B[k, k] = -1 / akk
return B
# 대칭 양의 정부호 행렬
rng = np.random.default_rng(0)
X_test = rng.normal(size=(20, 4))
A = X_test.T @ X_test
# sweep 을 두 번 적용
B = sweep(A, 1)
C = sweep(B, 1)
print(f"A - sweep(sweep(A, 1), 1) 최대 차이: {np.abs(A - C).max():.2e}")두 번 sweep 후 원 행렬 복귀 — 자기 역성의 수치 검증.
8.4 Step 4: 교호-만-있는 지수 감쇠 (Ex 3.11)
# Snedecor-Cochran ascorbic acid data (합계, 반복 3 기준)
temp = np.array([0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20])
weeks = np.array([2, 4, 6, 8, 2, 4, 6, 8, 2, 4, 6, 8])
totals = np.array([45, 47, 46, 46, 45, 43, 41, 37, 34, 28, 21, 16])
n_rep = 3
means = totals / n_rep
df_ac = pd.DataFrame({"temp": temp, "t": weeks, "y": means})
df_ac["temp_fac"] = pd.Categorical(df_ac["temp"])
# 모형: log(y) ~ 1 + t:temp_fac (주효과 temp 없음)
import statsmodels.formula.api as smf
m = smf.ols("np.log(y) ~ 1 + t:temp_fac", data=df_ac).fit()
print(m.summary().tables[1])
# 반감기 계산: t_{1/2} = log 2 / beta_i
for temp_level in [0, 10, 20]:
coef_name = f"t:temp_fac[{temp_level}]"
beta_i = -m.params[coef_name] # 부호 반전 (감쇠율은 양수)
half_life = np.log(2) / beta_i
print(f"온도 {temp_level}°F: beta = {beta_i:.4f}/week, 반감기 = {half_life:.2f} weeks")교호 항만 포함한 모형이 log-scale 에서 잘 적합되며, 반감기가 온도별로 계산된다. 계층 원칙 예외의 과학적 동기.
9 흔한 실수
| 실수 | 처방 |
|---|---|
| 단변량 회귀로 “중요 변수 없음” 결론 | Suppression 가능성 점검 — 다변량 회귀 필수 |
| 순서·수치 정보 있는 범주를 factor 로만 처리 | 직교 다항 대조로 선형·곡률 분해 |
| 파생 변수 정의 시 aliasing 체크 누락 | \(C = f(A, B)\) 형태의 관계 명시적 확인 |
| 공변량 상관 큰데 계수 해석을 개별로 | 계수 상관이 음일 수 있음. Contrast 로 해석 |
| Sweep 의 자기 역성을 무시하고 재계산 | 변수 추가/제거가 많은 탐색에서는 sweep 가 효율 |
| 계층 원칙 예외를 자동으로 거부 | 과학적 근거 (공통 \(t=0\) 등) 있으면 정당 |
10 요약
- Suppression (Ex 3.1): 단변량 무관계 변수가 다변량에서 강한 유의. 상관된 공변량 집합이 서로의 기여를 가린다. 변수 선택을 단변량 유의성에만 의존하지 말 것.
- 설계 행렬 (Ex 3.2, 3.3): 블록 설계의 더미 구조, 직교 다항 대조로 “범주 → 연속 + 곡률” 분해.
- 제한 설계 (Ex 3.4, 3.10): 삼각·라틴스퀘어에서 aliasing 와 rank. 파생 변수 \(C = A - B + 1\) 의 종속성, Latin square 의 배제 제약.
- 계수 상관 (Ex 3.5, 3.6): 공변량 양의 상관 → 계수 음의 상관. \(\mathrm{corr}(\hat\beta_1, \hat\beta_2) \approx -\cos\theta\).
- Sweep 자기 역성 (Ex 3.7, 3.8): \(\mathcal S_k\mathcal S_k = \mathbf{I}\). 변수 추가/제거가 동일 연산. Stepwise 에 적합.
- 비표준 예측자 (Ex 3.9, 3.11): 차분 모형 (절편 추정 불가), 교호-만-있는 지수 감쇠 (계층 원칙 예외). 과학적 근거가 통계적 관행을 override.
한 줄 요약: §3.11 의 11 연습은 “설계 행렬의 기하, aliasing 의 실제, 선형 예측자의 유연성” 을 드러내는 장치다. 본문이 제공하는 framework 안에서 얼마나 다양한 현실 문제를 다룰 수 있는지, 그리고 그 framework 의 한계를 언제 과학적 판단으로 override 해야 하는지 — 이 두 가지가 연습의 진짜 가르침이다.
11 관련 주제
선행 지식
- 선형 예측자의 구성 — Systematic Component — 더미·혼합 항
- Aliasing — 식별불가의 두 얼굴 — marginality 와 rank
- 선형모형의 추정 — MLE·사영 기하 — 계수 상관의 기하적 배경
- 최소제곱 알고리즘 — Sweep 연산자
- 공변량 선택 — 계층 원칙
관련 개념
후속 주제
- Bradley-Terry / Thurstone 모형 — 차분 모형의 확장
- Latin / Graeco-Latin square 설계 — 분산원 통제
- Causal inference DAG — suppression 의 인과 해석