1 4 가지 진단 도구
| 도구 | 용도 |
|---|---|
| Forest plot | 전반 시각화 |
| Influence analysis | 개별 연구의 영향 |
| Sensitivity analysis | Subset 통합 |
| Meta-regression | Continuous moderator |
(Woodward, 2014, Ch.12.4).
2 1. Forest Plot — 전반 시각화
- 추상 정의: 각 연구의 효과 + CI + 가중치를 한 그림에. Outlier·일관성 시각.
- 일상어 비유: 여러 평론가의 영화 평가 평균 + 각 평가의 위치. Outlier 평론가 식별.
- 반사실 시나리오: 통합 결과만 보고 시 outlier 의 영향 모름. Forest plot 이 raw data 보존.
시각 패턴: - 모든 연구가 통합 효과 부근 → low heterogeneity. - Outlier 연구 ↑ → influence analysis 필요. - 두 그룹으로 분리 → subgroup analysis 가능.
3 2. Influence Analysis
- 추상 정의: 한 연구가 sensitive — 그 연구 제거 시 결과 큰 변화. Robust 연구 → 제거해도 결과 안정.
- 일상어 비유: 한 평론가의 의견이 평균에 큰 영향 — 그 평론가의 신뢰성 점검 필요.
- 반사실 시나리오: Outlier 연구 = quality 문제 가능성. RoB 평가 + sensitivity 분석.
3.1 Cook’s D 같은 도구
각 연구의 영향력 정량화: \[\text{Cook's D}_i = \frac{(\hat\theta_{-i} - \hat\theta)^2}{\text{Var}(\hat\theta) / (k-1)}\]
큰 값 = 영향력 큰 연구.
4 3. Sensitivity Analysis
특정 부분 인구 제거 또는 포함 후 재통합. 결과 안정성 평가.
예시: - High RoB 연구 제거. - 작은 표본 (\(n < 100\)) 제거. - 출판 연도 별 (예: 2010 이전 vs 이후). - 발생 지역 별 (서양 vs 동양).
- 추상 정의: 결과의 robustness 점검 — 다른 subset 에서도 같은 결론?
- 일상어 비유: 평균 점수의 안정성 — 다른 학년 제외 후도 같은 결과?
- 반사실 시나리오: Sensitivity 분석 안 하면 결과의 conditional 의 conditional 모름. 보고 시 필수.
5 4. Subgroup Analysis
사전 명시 subgroup 별 별도 통합 + 비교.
예시: - 성별 별 (남 vs 여). - 인종 별. - 환자 baseline (노인 vs 청년). - 처치 강도 (저용량 vs 고용량).
5.1 Subgroup 검정
\[Q_{\text{between}} = \sum_{g} w_g (\hat\theta_g - \hat\theta_{\text{pooled}})^2\]
\(Q_{\text{between}} \sim \chi^2_{G-1}\) (\(G\) = subgroup 수).
기각 = subgroup 간 효과 차이 유의.
\(G\) 개 subgroup → \(\binom{G}{2}\) 비교. 다중 검정 문제.
3 단계 직관:
- 추상 정의: 각 비교 5% Type I → 다중 비교 누적. Bonferroni 보정 필요.
- 일상어 비유: 10 그룹 비교 — 5% × 45 비교 = 다수 false positive 가능.
- 반사실 시나리오: 사전 명시된 subgroup 만 검정. Post-hoc subgroup 은 신뢰성 ↓.
6 5. Meta-regression
연구 수준 covariate (예: 평균 연령, 추적 기간, dose) 의 효과를 회귀.
\[\hat\theta_i = \beta_0 + \beta_1 X_i + \epsilon_i\]
\(\hat\beta_1\) = X 1 단위당 효과 변화.
6.1 직관 — Meta-regression 의 도구
- 추상 정의: Continuous moderator 식별 — subgroup 의 일반화.
- 일상어 비유: 학생 점수의 학교 평균 vs 학교 자원 — 자원 ↑ 시 점수 ↑ 의 양적 관계.
- 반사실 시나리오: Subgroup 만 사용 시 cutoff 의 자의성. Meta-regression 이 연속 효과 추정.
예시: Sodium 감소량 (mEq/d) vs BP 변화 — 50 mEq 감소 시 -2 mmHg, 100 mEq 감소 시 -4 mmHg 같은 dose-response.
6.2 Meta-regression 의 한계
연구 수준 covariate (집단 평균) 와 개인 수준 효과의 관계가 다를 수 있음.
3 단계 직관:
- 추상 정의: 집단 평균 X 와 효과의 관계 → 개인 X 와 효과의 관계 다를 수 있음.
- 일상어 비유: 학교 평균 점수와 학교 자원 — 학교 단위 회귀가 학생 단위 효과 추정 아님.
- 반사실 시나리오: 진성 개인 수준 분석은 IPD meta-analysis 필요.
6.3 작은 표본의 한계
\(k\) 작 (\(< 10\)) 에서 meta-regression 의 검정력 ↓ + over-fitting 위험.
Cochrane 권장: \(k \ge 10\) 일 때만 meta-regression. 더 작으면 subgroup.
7 통합 진단 절차
[Step 1] Forest plot 시각화.
↓
[Step 2] I² + τ² + PI 산출.
↓
[Step 3] I² > 25% 이면 source 탐색.
↓
[Step 4] Influence analysis (outlier 식별).
↓
[Step 5] Sensitivity analysis (RoB, 표본 크기).
↓
[Step 6] Subgroup analysis (사전 명시 subgroup).
↓
[Step 7] Meta-regression (continuous moderator, k ≥ 10).
8 코드 예시 — 종합 진단
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 가상 자료 — 다양한 인구 + 효과
studies = pd.DataFrame({
"study": list("ABCDEFGHIJKL"),
"theta": [0.30, 0.45, 0.55, 0.40, 0.60, 0.35, 0.50, 0.65, 0.25, 0.70, 0.42, 0.55],
"se": [0.15, 0.12, 0.18, 0.20, 0.13, 0.16, 0.11, 0.14, 0.22, 0.17, 0.13, 0.10],
"year": [2005, 2008, 2010, 2012, 2014, 2007, 2011, 2013, 2009, 2015, 2006, 2016],
"region": ["W"] * 6 + ["E"] * 6, # West vs East
})
studies["v"] = studies["se"] ** 2
# Forest plot
fig, ax = plt.subplots(figsize=(8, 6))
y_pos = np.arange(len(studies))
ax.errorbar(studies["theta"], y_pos, xerr=1.96 * studies["se"],
fmt="s", capsize=4)
ax.set_yticks(y_pos)
ax.set_yticklabels(studies["study"])
ax.axvline(0, linestyle="--", color="gray")
ax.set_xlabel("Effect size (θ)")
ax.set_title("Forest plot")
# Subgroup analysis (West vs East)
for region in ["W", "E"]:
sub = studies[studies["region"] == region]
w = 1 / sub["v"]
theta_pooled = (w * sub["theta"]).sum() / w.sum()
SE_pooled = np.sqrt(1 / w.sum())
print(f"Region {region}: θ = {theta_pooled:.3f}, SE = {SE_pooled:.3f}")
# Meta-regression (year)
import statsmodels.api as sm
X = sm.add_constant(studies["year"])
m = sm.WLS(studies["theta"], X, weights=1/studies["v"]).fit()
print(f"\nMeta-regression by year:")
print(f" Slope: {m.params['year']:.4f} per year")
print(f" p-value: {m.pvalues['year']:.4f}")해석: Forest plot 에서 outlier 시각, subgroup 분석에서 West vs East 차이, meta-regression 에서 시간 추세.
9 A/B 테스트의 Heterogeneity Source
A/B 결과의 heterogeneity 가능 source: - 시간: 분기별 변동 (계절성, 시장 변화). - 지역: 국가·시장별 효과 차이. - Segment: 사용자 유형별 효과. - 버전: 기능 구현 변화.
Meta-regression: 시간·지역·segment 의 lift 효과.
3 단계 직관:
- 추상 정의: A/B 의 외적 타당도 평가 → 어느 조건에서 효과 ↑?
- 일상어 비유: 광고 캠페인의 시장별 + 시기별 효과 분석.
- 반사실 시나리오: 평균 lift 만 보면 어느 조건에 강한 효과인지 모름. Source 탐색이 personalization 의 통계 기초.
10 Galbraith Plot — Heterogeneity 의 시각
X 축: \(1/\text{SE}_i\) (precision). Y 축: \(\hat\theta_i / \text{SE}_i\) (z-score).
대각선 = 회귀 직선 (FE pooled). 각 점의 분산은 일정 (z-score 단위).
(Galbraith, 1988).
- 추상 정의: Funnel plot 의 회전 — outlier 와 heterogeneity 가시화.
- 일상어 비유: 시험 점수 vs 학교 크기 — 각 학교의 평균이 일정 분산 단위.
- 반사실 시나리오: Forest plot 이 임상 익숙, Galbraith 이 통계학자 친화. 둘 다 활용.
11 L’Abbé Plot — RR 의 시각
X 축: \(r_0\) (control 결과 비율). Y 축: \(r_1\) (treatment 결과 비율).
각 연구의 점. 대각선 = no effect.
(L’Abbé et al., 1987).
- 추상 정의: Baseline 위험 의 함수로 효과 시각. Effect modification by baseline 식별.
- 일상어 비유: 학교의 baseline 점수 vs 처치 점수 — 처치 효과의 baseline 의존.
- 반사실 시나리오: Treatment 효과가 baseline 의 함수면 단일 RR 부적절. Subgroup 또는 meta-regression.
12 Q&A — Heterogeneity Source 의 흔한 오해
A: 권장. 사전 명시 + multiple testing 보정.
3 단계 직관:
- 추상 정의: 다중 비교 누적 false positive.
- 일상어 비유: 10 회 시험 후 가장 좋은 점수만 — cherry-picking.
- 반사실 시나리오: 사전 명시 subgroup 만 검정 + Bonferroni. Post-hoc subgroup 은 hypothesis-generating.
A: 인과 그래프 + 임상 가설 우선. 통계 알고리즘 (stepwise) 부적절.
3 단계 직관:
- 추상 정의: 모더레이터 선정이 인과 분석.
- 일상어 비유: 회사 매출 차이의 원인 — 시장 변수 vs 회사 변수. 인과 그래프.
- 반사실 시나리오: 자료 본 후 모더레이터 선정 → over-fit. 사전 가설 우선.
13 결론
Heterogeneity 의 source 는 forest plot (시각) → influence (outlier) → sensitivity (subset) → subgroup (사전) → meta-regression (continuous) 의 5 단계로 탐색. Galbraith·L’Abbé plot 이 추가 시각 도구. Multiple testing 의 함정과 ecological fallacy 의 한계 주의.
다음 글 (H-WOO12-6) 에서 표 자료 (2x2) 의 통합 (MH, Peto, zeros) 을 본다.
14 관련 주제
- Pooling 사례
- 1111-11-11, Tabular Data Pooling