선형모형 심화 결과와 연습 — Ch.3 Exercises 재구성

McCullagh & Nelder §3.11 — Suppression·Contrasts·Triangular Design·Sweep·Interaction-only Models

McCullagh & Nelder (1989) §3.11 의 11개 연습을 6개 핵심 결과로 재구성한다. Hamilton 의 suppression 효과, 블록 설계의 모형 행렬, 삼각·라틴스퀘어 제한 설계, 계수 상관의 기하적 유도, sweep 연산자의 자기 역성, 주효과 없는 교호작용만 있는 지수감쇠 모형까지 — 각 결과의 주장·증명 핵심·실무 의의를 직관과 수식으로 정리한다.

Statistics
GLM
Math
linear_algebra
저자

Kwangmin Kim

공개

2026년 04월 14일

1 왜 Ch.3 의 연습을 재구성하는가

McCullagh & Nelder §3.11 의 11 개 연습은 얼핏 “컴퓨터 실습” 또는 “계산 드릴” 처럼 보인다. 그러나 묶어 보면 Ch.3 본문이 다루지 못한 심화 주제를 정확히 짚는다.

  1. Suppression 효과 (Ex 3.1, Hamilton 1987): 단변량에서는 안 보이던 관계가 다변량에서 드러나는 역설.
  2. 설계 행렬 구성 (Ex 3.2, 3.3): 블록 설계와 다항 대조의 실제 조립.
  3. 제한 설계 (Ex 3.4, 3.10): 삼각·라틴스퀘어의 aliasing 과 rank.
  4. 계수 상관 (Ex 3.5, 3.6): 공변량 각도에서 추정치 공분산으로.
  5. Sweep 연산자 (Ex 3.7, 3.8): 자기 역성이 주는 업데이트 효율.
  6. 비표준 예측자 (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 실무 함의

  1. 단변량 유의성으로 변수 선택 금지: 다변량에서 매우 유의한 변수가 단변량에서 비유의할 수 있음.
  2. 혼란변수 통제의 필요: 역학·사회과학에서 “통제 후 효과” 가 통제 이전과 크게 다를 수 있음.
  3. 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 왜 다항 대조를 쓰는가

  1. 해석 집중: “농도가 선형으로 작동하는가?” 를 \(\beta_L\) 하나로 답.
  2. 직교성: \(L\)\(Q\) 가 직교라 sequential SS 가 순서 무관.
  3. 자유도 절약: 트렌드가 선형임이 확인되면 \(Q\) 를 제거해 자유도 +1.
  4. 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 의 핵심)

  1. 변수 추가: \(\mathcal S_k\) 적용 → 변수 \(k\) 가 모형에 포함된 상태로 갱신.
  2. 변수 제거: \(\mathcal S_k\) 를 한 번 더 적용 → 변수 \(k\) 가 빠진 상태로 복귀.
  3. 계산 비용: 각 sweep 이 \(O(p^2)\). 부분 행렬 연산 만 수정.
  4. 중간 상태 활용: 일부만 sweep 된 행렬에서도 조건부 회귀 계수, 조건부 공분산 을 직접 읽을 수 있음 (§3.8.1).

6.4 대화형 시스템의 한계

Ex 3.8 는 “왜 대부분의 통계 패키지가 sweep 를 사용하지 않는가” 를 묻는다. McCullagh 의 언급:

  • 메모리 사용이 많음 (행렬 전체 저장).
  • 순차 인터페이스에서 사용자의 반복적인 “추가/제거” 가 복잡한 sweep 순서로 이어짐 — 버그 여지.
  • 표준 라이브러리 (LAPACK) 가 QR/Cholesky 에 집중.
  • 예외: stepwise regression 은 sweep 에 특화. R 의 step() 내부, SAS PROC REGSELECTION=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 관련 주제

선행 지식

관련 개념

후속 주제

  • Bradley-Terry / Thurstone 모형 — 차분 모형의 확장
  • Latin / Graeco-Latin square 설계 — 분산원 통제
  • Causal inference DAG — suppression 의 인과 해석

Subscribe

Enjoy this blog? Get notified of new posts by email: