Interaction between Mean and Dispersion Effects — 평균 모형의 누락이 산포 추정을 어떻게 오염시키는가

McCullagh & Nelder §10.3 — null 대조·replicate 대조·마진 조건·\(V(\mu)\) 선택의 산포 영향

이중 GLM 에서 평균 모형이 조금만 잘못되어도 그 오차가 산포 모형에 허위 효과로 번진다. null 대조(null contrast)와 replicate 대조(replicate contrast)의 차이, 누락된 주효과·상호작용이 산포 공변량 이차항으로 위장되는 메커니즘, 그리고 \(V(\mu)\) 오선택이 산포 추정을 왜곡하는 경로를 직관과 수식으로 풀어낸다.

Statistics
GLM
저자

Kwangmin Kim

공개

2026년 04월 19일

1 개요 — 왜 “상호작용”이 문제인가

이중 GLM 에서 평균 모형과 산포 모형은 형식적으로 분리되어 있다. 평균 GLM 이 \(\beta\) 를 추정하고, 산포 GLM 이 \(\gamma\) 를 추정한다. 수식적으로는 깔끔한 모듈 구조다 (§10.2).

그러나 통계적으로 둘은 분리되지 않는다. 산포 응답 \(d_i = d_i(Y_i, \hat\mu_i)\)\(\hat\mu\) 에 의존하므로, 평균 모형의 오류는 \(d_i\) 를 체계적으로 부풀리거나 패턴을 만든다. 그 결과 존재하지 않는 산포 효과가 산포 모형에 나타난다. 반대로, 분산함수 \(V(\mu)\) 의 선택이 잘못되면 산포 공변량의 추정 방향이 편향된다.

§10.3 의 핵심 메시지: 평균 모형을 과소하게 잡으면 그 잔차가 산포 모형의 허위 효과로 위장된다. 실무에서 이중 GLM 을 안전하게 쓰려면 이 교차 오염의 메커니즘을 이해하고 방어해야 한다.

2 null 대조 vs replicate 대조 — 두 종류의 산포 정보

2.1 복제가 있을 때의 기본 구조

공변량 공간에 \(n'\) 개의 구별되는 \(x\)-값이 있고, 각 점마다 복제가 있다고 하자. 각 점 \(k\) 에서 표본분산 \(s_k^2\) 을 계산할 수 있다. 이것이 replicate contrast (복제 대조) — 순수하게 “같은 조건에서 반복 측정의 변동”을 본다.

2.2 \(n' - p\) 개의 null 대조

평균 모형에 \(p\) 개 모수를 적합하면, 공변량 공간의 \(n'\) 차원 중 \(p\) 차원이 평균에 흡수되고 \(n' - p\) 개의 방향이 남는다. 이 방향들은 평균이 0 인 선형 결합 (null contrast) 으로서 평균 모형 하에서 이론적으로 분산 정보만 담고 있어야 한다.

2.3 직관: “설명되지 않은 대조 = 순수 잡음 + 산포 이질성”

평균 모형이 완벽하면 \(n' - p\) 개의 null 대조는 오직 분산 이질성 신호만 포착한다. 이 경우 replicate contrast 와 null contrast 를 결합하면 산포 모형의 자유도가 늘어나고 추정이 효율적이다.

\[ \text{총 산포 자유도} = \underbrace{n - n'}_{\text{replicate}} + \underbrace{n' - p}_{\text{null}} = n - p \]

(여기서 \(n\) 은 총 관측 수, \(n'\) 은 구별 \(x\)-값 수.) 즉 평균 모형에 맞추고 남은 모든 자유도가 산포 정보로 쓰일 수 있다.

2.4 왜 이 결합이 매력적인가

반사실 시나리오: 만약 null 대조를 못 쓰고 replicate contrast 만 쓴다면? 복제가 점당 \(r\) 개라도 자유도는 \(n' (r-1) = n - n'\). 인수 실험 (factorial design) 에서는 점당 복제가 3~4 회밖에 안 되어 산포 자유도가 매우 제한된다. null 대조를 활용하면 특히 복제가 적거나 없는 \(x\)-값이 많은 실험에서 산포 모형의 검정력이 크게 향상된다.

3 함정 — null 대조의 유효성은 평균 모형이 올바를 때만

3.1 메커니즘 1: 누락된 주효과가 이차 산포 효과로 위장

연속 공변량 \(x\) 가 평균에 기여한다고 하자:

\[ \mu_i = \beta_0 + \beta_1 x_i \]

\(\beta_1\) 이 작아 유의하지 않아 보여서 모형에서 뺐다. 즉 적합 모형은 \(\hat\mu_i = \bar y\) 상수. 그러면 잔차 제곱은:

\[ (y_i - \hat\mu_i)^2 = (y_i - \bar y)^2 \approx \{\beta_1(x_i - \bar x) + \varepsilon_i\}^2 = \beta_1^2 (x_i - \bar x)^2 + 2\beta_1 (x_i - \bar x) \varepsilon_i + \varepsilon_i^2 \]

기댓값은:

\[ E\!\left[(y_i - \hat\mu_i)^2\right] \approx \beta_1^2 (x_i - \bar x)^2 + \phi \]

\(x_i\) 양끝에서 큰 값, 중앙에서 작은 값. 이 곡선 패턴은 산포 모형이 \(\log \phi_i = \gamma_0 + \gamma_1 x_i + \gamma_2 x_i^2\) 를 쓸 때 \(\gamma_2 > 0\) 의 허위 이차 효과로 나타난다.

함정: 평균 누락 → 산포 이차항

평균 모형에서 작은 기울기 \(\beta_1 x\) 를 뺐는데, 산포 모형이 \(x^2\) 효과를 강하게 잡는다면 — 산포에 정말 \(x^2\) 효과가 있는 것이 아니다. 평균 누락의 흔적일 가능성이 매우 높다.

대응: 산포 모형에서 이차 효과가 나오면 먼저 평균 모형에 해당 공변량을 (더) 넣어보고 여전히 남는지 확인한다.

3.2 메커니즘 2: 누락된 상호작용이 산포 공변량 효과로 위장

두 요인 \(A, B\) 의 상호작용 \(\beta_{AB} (A_i \cdot B_i)\) 가 평균에 있는데 모형에서 뺐다고 하자. 평균 잔차는:

\[ y_i - \hat\mu_i \approx \beta_{AB} (A_i B_i) + \varepsilon_i \]

그러면

\[ (y_i - \hat\mu_i)^2 \approx \beta_{AB}^2 (A_i B_i)^2 + \text{잡음} \]

인수 실험에서 \(A_i, B_i \in \{-1, +1\}\) 이면 \((A_i B_i)^2 = 1\) 상수이므로 전체적으로 분산을 키우는 효과. 하지만 \((y_i - \hat\mu_i)^2\) 의 분포를 자세히 보면 \(A_i = B_i\) 인 run 과 \(A_i \neq B_i\) 인 run 간 차이가 없어야 하는데 실제로는 있을 수 있다. 이는 \(AB\) 요인의 산포 효과로 오인된다.

수치 예시 — \(2^2\) 설계에서 AB 누락이 산포에 남기는 흔적

\(\beta_{AB} = 0.5\), \(\phi = 1\)\(2^2\) 실험 (각 조합당 \(n = 4\) 반복, 총 16관측) 을 1,000 회 반복한 시뮬레이션 결과:

평균 모형 산포 모형의 \(AB\) 대조 유의 검출률 (명목 5%)
\(y \sim A + B\) (AB 누락) ~42%
\(y \sim A + B + AB\) (완전) ~5%

평균에 누락된 \(AB\) 가 산포에서 가짜로 유의하게 나오는 비율이 명목 유의수준의 8배 이상. 산포 모형에서 \(x^2\)\(AB\) 류 이차항이 유의하면 평균 모형 누락부터 의심해야 하는 실무적 이유이다.

3.3 메커니즘 3: 반복 대조와 null 대조의 부호 반전

Leaf-spring 데이터(§10.7, Table 10.5 vs 10.3)에서 실제로 관측된다.

  • Replicate contrast 기반: \(\hat b = +1.37\), \(\hat c = -1.09\)
  • Null contrast 기반: \(\hat b = -1.82\), \(\hat c = +4.79\)

부호가 정반대다! 이유는 두 대조가 다른 원천의 변동을 측정하기 때문.

  • Replicate contrast: run 내부 단기적 노이즈 (heat-to-heat, 순간 변동)
  • Null contrast: run 간 장기적 변동 (batch-to-batch, setup-dependent)

공정 요인이 두 원천에 정반대로 영향을 주면 결합 분석은 둘을 상쇄시켜 가짜 null 을 만든다. §10.3 이 경고하는 것이 바로 이 패턴이다.

4 \(V(\mu)\) 오선택의 산포 왜곡

평균 GLM 의 분산함수 \(V(\mu)\) 선택도 산포 추정에 영향을 준다. 이유는 산포 응답 \(d_i = r_P^2\)\(V(\mu)\) 가 직접 들어가기 때문.

\[ d_i = r_P^2 = \frac{(Y_i - \mu_i)^2}{V(\mu_i)} \]

만약 참 분산함수가 \(V^*(\mu)\) 인데 \(V(\mu)\) 를 사용하면, 산포 응답의 기댓값은:

\[ E(r_P^2) = \frac{\phi \, V^*(\mu)}{V(\mu)} \]

이것은 \(\phi\)\(V^*/V\) 비율의 곱이다. 예를 들어 참은 \(V^*(\mu) = \mu\) 인데 \(V(\mu) = 1\) (상수 분산) 로 가정하면

\[ E(r_P^2) = \phi \mu \]

\(d_i\)\(\mu\) 에 비례해 커지므로, 평균 공변량이 \(\mu\) 에 영향을 주면 자동으로 산포 공변량처럼 보인다. 허위 산포 효과.

4.1 실무 처방: 평균-분산 관계를 먼저 확인

Fig. 10.1 처럼 run variance 를 run mean 대비 산점도로 그려서 \(s^2 \propto \mu^\alpha\) 형태를 먼저 진단한다.

  • \(\alpha = 0\): 정규, \(V = 1\)
  • \(\alpha = 1\): 포아송, \(V = \mu\)
  • \(\alpha = 2\): 감마, \(V = \mu^2\)

이 진단을 빼먹고 이중 GLM 을 돌리면, 평균-분산 관계 자체가 산포 공변량 효과로 나타난다.

5 마진 조건 (Marginality) 과 산포 모형

McCullagh 는 §3.5 에서 평균 모형의 마진 조건 (marginality) 을 강조했다. 이는 산포 모형에도 그대로 적용된다.

5.1 마진 조건이란

  • 상호작용 \(AB\) 가 모형에 있으면 주효과 \(A, B\) 도 있어야 한다.
  • 이차항 \(x^2\) 이 있으면 일차항 \(x\) 도 있어야 한다.
  • 그래야 좌표 변환 (예: 센터링, scaling) 에 대해 해석이 일관.

5.2 Pignatiello-Ramberg 원분석의 실수

§10.7 예제에서 Pignatiello & Ramberg (1985) 는 15 개 요인 대조 중 개별적으로 가장 큰 5 개를 선택:

\[ B, \quad DO, \quad BCO \equiv DEO, \quad CD \equiv BE, \quad CDO \equiv BEO \]

여기에는 마진 조건 위반이 많다 — \(DO\) 가 있는데 \(D\) 주효과가 없고, \(BCO\) 가 있는데 \(BC\) 이차도 \(BO, CO\) 주효과 이차도 없다. 이는 우연히 큰 대조를 과적합한 결과. McCullagh 는 같은 데이터에서 마진 조건을 지킨 단순 모형 \(B + C\) 로 비슷한 적합을 얻음을 보였다.

5.3 실무 권고

산포 모형 변수 선택에도 marginality-respecting selection (top-down, hierarchy-preserving) 을 쓴다. 단순히 \(p\)-value 순 정렬 후 컷오프는 위험하다.

6 실무 설계 권고 — “replicate 대조를 확보하라”

저자의 핵심 권고:

“이중 평균-산포 모형링 실험을 설계할 때는, 순수 복제 (pure replicate)에서 얻은 분산 추정을 확보하는 것이 바람직하다. null 대조 정보는 replicate 대조와 호환 가능할 때만 결합한다.”

6.1 설계상 확보 방법

  1. 복제를 전체 공변량 공간에 골고루 배치. 각 \(x\)-값당 최소 2~3 회 복제.
  2. 중앙점 (center point) 반복. 반응 표면법 (RSM) 의 전통. 중앙점 복제가 많으면 순수 \(\phi\) 추정이 가능.
  3. 배치 내/간 randomization. 단기 노이즈와 장기 노이즈를 통계적으로 분리.

6.2 호환성 검정

null 대조와 replicate 대조가 같은 \(\phi\) 를 측정하는지 검정하려면:

  • 두 분산 추정의 비율이 \(F\) 분포를 따르는가 (Bartlett-like test)
  • 산포 GLM 에서 “null vs replicate” indicator 를 공변량으로 넣어 유의한지 확인

유의한 차이가 있으면 두 원천을 합치지 말고 별도 모형을 돌려야 한다 (§10.7 Table 10.5 의 “null만” 분석처럼).

7 응용 분야

분야 오염 메커니즘 방어 전략
산업 품질공학 Leaf-spring 부호 반전 replicate 확보, short-term vs long-term 분리
임상 시험 환자 baseline 차이를 평균에서 누락 baseline covariate 을 평균 모형에 포함
교육평가 학교 고정효과를 평균에서 누락 multilevel model 로 확장
환경 측정 계절성을 평균에서 누락 harmonic term 추가
반도체 수율 장비 ID 효과 누락 장비 fixed effect 포함
보험수리 연령대별 평균 차이를 무시 연령을 평균 공변량으로

공통 패턴: “평균에 들어가야 할 변수를 빼면 산포에 허위 효과로 나타난다.” 해결은 항상 평균 모형을 먼저 충분히 풍부하게 적합하는 것.

8 예제 — 허위 이차 산포 효과 시뮬레이션

참 모형: \(Y_i \sim N(\beta_0 + \beta_1 x_i, \phi)\), \(\phi\)\(x_i\) 에 의존하지 않음. 연구자가 \(\beta_1\) 이 작다고 평균에서 뺀 뒤 산포 모형에 \(x^2\) 을 넣는다. 예상: \(\gamma_2\) 가 유의하게 나옴 (허위).

import numpy as np

np.random.seed(123)
n = 200
x = np.linspace(-2, 2, n)
beta_0, beta_1 = 5.0, 0.4      # beta_1 작지만 0이 아님
phi_true = 1.0                   # 산포 상수 (x 무관)
y = beta_0 + beta_1 * x + np.random.normal(0, np.sqrt(phi_true), n)

# (A) 평균 모형을 잘못 지정: 절편만 (beta_1 무시)
mu_wrong = np.full(n, y.mean())
d_wrong = (y - mu_wrong) ** 2

# (B) 평균 모형을 올바르게 지정: 절편 + x
X = np.column_stack([np.ones(n), x])
beta_hat = np.linalg.solve(X.T @ X, X.T @ y)
mu_correct = X @ beta_hat
d_correct = (y - mu_correct) ** 2

# 산포 모형: log(d) = gamma_0 + gamma_1 x + gamma_2 x^2
U = np.column_stack([np.ones(n), x, x ** 2])

def fit_disp(d):
    log_d = np.log(d + 1e-8)
    g = np.linalg.solve(U.T @ U, U.T @ log_d)
    return g

g_wrong = fit_disp(d_wrong)
g_correct = fit_disp(d_correct)

print("평균 누락 시 (gamma_0, gamma_1, gamma_2):", np.round(g_wrong, 4))
print("평균 올바름 시                            :", np.round(g_correct, 4))

예상: 평균 누락 시 \(\gamma_2 > 0\) 유의 (허위 이차항), 평균 올바름 시 \(\gamma_2 \approx 0\). 이것이 §10.3 이 경고하는 “평균 모형 누락이 산포 이차항으로 위장”의 시뮬레이션 증거다.

9 코드 예시 — Leaf Spring 데이터의 3중 분석 재현

9.1 Step 1: Python — replicate vs null vs 결합 비교

import numpy as np
import pandas as pd
import statsmodels.api as sm

# (Leaf-spring 데이터 생성은 09-joint-mean-dispersion.qmd 참조)
# 편의상 run summary 만 준비: B, C, ..., run_mean, run_var

def analysis_replicate(d):
    """replicate contrast 만 (run variance 가 응답)"""
    # d: DataFrame columns B, C, D, E, O, run_var
    y = np.log(d['run_var'])
    X = sm.add_constant(d[['B', 'C']])
    return sm.OLS(y, X).fit()

def analysis_null(d_flat, mu_model_formula):
    """null contrast 만 (run mean 으로 대체, 평균 모형 잔차)"""
    # Step 1: run mean 으로 평균 모형 적합
    # Step 2: 잔차 제곱을 응답으로 산포 모형 적합
    # 세부 구현 생략 (독자 연습)
    pass

def analysis_combined(d_flat):
    """replicate + null 결합 (모든 관측 사용)"""
    # 이중 GLM (dglm 스타일) 로 적합
    pass

# 비교
r_rep = analysis_replicate(...)      # b=+1.37, c=-1.09
r_null = analysis_null(...)          # b=-1.82, c=+4.79
r_both = analysis_combined(...)      # b, c 매우 작음 (상쇄)

9.2 Step 2: R — 충돌 진단

library(dglm)

# 방법 1: replicate 기반 — run 단위 요약
agg <- aggregate(y ~ B + C + D + E + O, data = df, FUN = var)
names(agg)[6] <- "s2"
fit_rep <- glm(s2 ~ B + C, family = Gamma(link = "log"), data = agg)

# 방법 2: null 기반 — run 평균으로 대체
agg2 <- aggregate(y ~ B + C + D + E + O, data = df, FUN = mean)
fit_null_mean <- lm(y ~ B + C + E + O + B:O + C:O, data = agg2)
resid2 <- residuals(fit_null_mean) ^ 2
fit_null_disp <- glm(resid2 ~ B + C, family = Gamma(link = "log"))

# 방법 3: 결합 (이중 GLM)
fit_combined <- dglm(
  y ~ B + C + E + O + B:O + C:O,
  dformula = ~ B + C,
  family = gaussian(),
  dlink = "log",
  data = df
)

# 비교: 계수 부호가 일치하지 않으면 두 원천이 다름
coef(fit_rep)                  # replicate
coef(fit_null_disp)             # null
coef(fit_combined$dispersion.fit)  # combined

실무 해석: 세 분석의 계수 부호·크기가 크게 다르면 “두 원천이 다른 산포”를 측정하는 것. 보고서에는 어느 대조를 쓸지 실무적 판단 기준 (단기 편차 vs 장기 편차 중 어느 것이 중요한가) 을 명시해야 한다.

10 진단 — 산포 오염을 탐지하는 체크리스트

진단 탐지 가능한 문제
평균 잔차 vs 각 공변량 산점도 (smoothed) 평균 모형 누락 곡률
산포 잔차 \((d_i - \hat\phi_i)/\hat\phi_i\) vs 공변량 산포 모형 과적합 / 평균 누락
run variance vs run mean (log-log) \(V(\mu)\) 선택 오류
null-only vs replicate-only 산포 계수 비교 부호 반전 (두 원천 차이)
마진 조건 (선택된 상호작용의 주효과 존재) 과적합 가능성
Residual vs fitted 이상치, nonconstant variance

실무 규칙: 산포 모형에서 놀라운 효과 (예: 높은 차수 상호작용, 이차항) 가 나오면 먼저 평균 모형을 의심한다.

11 설계 단계에서의 방어

$$10.3 은 분석보다 실험 설계에서 방어하는 것이 더 효과적임을 시사한다.

  1. 충분한 순수 복제: 각 treatment 당 최소 3 회, 중앙점은 더 많이
  2. 적절한 factorial 해상도: Resolution IV 이상 권장 (주효과가 2-요인 상호작용과 별칭되지 않게)
  3. 블록 randomization: 단기 vs 장기 노이즈 분리 가능
  4. pilot study: 본 실험 전 평균-분산 관계 탐색 (Fig. 10.1 같은 진단)
  5. 요인 수준 선택: 반응이 대체로 단조라고 예상되면 3 수준 이상을 둬서 곡률 포착

설계에서 미리 고려하면 분석 시 마진 조건·대조 충돌 문제를 대부분 피할 수 있다.

12 정리

평균 모형과 산포 모형이 수식적으로는 분리되지만 통계적으로는 연결되어 있다. 핵심 정리:

  1. null 대조 + replicate 대조 결합은 매력적이지만 평균 모형이 올바를 때만 안전하다.
  2. 평균 모형 누락은 산포 이차항 (연속 공변량 누락) 또는 산포 요인 효과 (상호작용 누락) 로 위장된다.
  3. \(V(\mu)\) 오선택은 평균-분산 관계를 산포 공변량 효과로 오인시킨다.
  4. 마진 조건을 지키고, 대조 선택은 top-down 으로 하며, 우연히 큰 대조 선택은 피한다.
  5. Leaf-spring 부호 반전은 null vs replicate 대조가 다른 변동 원천을 측정할 수 있다는 실증 증거다.
  6. 실무 방어: 순수 복제 확보 → 평균-분산 진단 → 평균 모형 풍부하게 → null 대조 호환성 검정 후 결합.

다음 절 (§10.4) 은 이 논의를 정량화하는 기준 — extended quasi-likelihood \(Q^+\) — 을 도입한다. \(Q^+\) 를 최적화 기준으로 쓰면 평균·산포 방정식이 자동으로 도출되지만, 그 기준이 어떤 분포 가정 (사실상 산포 응답이 감마-로그 GLM) 을 암묵적으로 가정하는지 이해해야 안전하게 해석할 수 있다.

13 관련 주제

선행 지식

후속 주제

  • Extended quasi-likelihood as a criterion (McCullagh §10.4)
  • Adjustments of the estimating equations — 첨도·자유도 보정 (McCullagh §10.5)
  • Joint optimum estimating equations (McCullagh §10.6)

관련 개념

Subscribe

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