1 정의
| 측도 | 정의 | 해석 |
|---|---|---|
| \(\eta^2\) | \(SS_{\text{effect}} / SS_{\text{total}}\) | 효과가 전체 변동에서 차지하는 비율 |
| partial \(\eta^2\) | \(SS_{\text{effect}} / (SS_{\text{effect}} + SS_W)\) | 다른 효과를 통제한 후의 비율 |
| \(\omega^2\) | \(\frac{SS_{\text{effect}} - df_{\text{effect}} \cdot MS_W}{SS_{\text{total}} + MS_W}\) | \(\eta^2\) 의 편향 보정 |
| Cohen’s \(f\) | \(\sqrt{\eta^2 / (1 - \eta^2)}\) | 검정력 계산용 표준화 효과 크기 |
\(\eta^2\) 는 직관적이지만 양의 편향이 있고 (작은 표본에서 과대), partial \(\eta^2\) 는 factorial 비교에 표준적이며, \(\omega^2\) 는 비편향 추정량으로 보고 권장이다.
2 단일 요인 vs factorial 의 효과 크기
단일 요인 ANOVA 에서 \(\eta^2 = SS_B / SS_T\) 가 명확하다. Factorial 에서는 다른 효과 (다른 요인, 상호작용) 가 SS_T 에 들어가므로 한 효과의 \(\eta^2\) 가 다른 효과의 크기에 의존한다.
해결: partial \(\eta^2\) — 분모를 “그 효과와 오차” 만으로 한정.
\[ \text{partial } \eta^2_A = \frac{SS_A}{SS_A + SS_W} \]
여러 effect 의 partial \(\eta^2\) 합은 1 을 넘을 수 있다 (각자 다른 분모). 한편 \(\eta^2\) 의 합은 항상 \(\le 1\).
3 Maxwell SBP 데이터의 효과 크기
| 효과 | \(SS\) | \(df\) | \(\eta^2\) | partial \(\eta^2\) | \(\omega^2\) |
|---|---|---|---|---|---|
| Drug | 720 | 1 | \(720/2540 = 0.283\) | \(720/(720+1000) = 0.419\) | \(\approx 0.260\) |
| BF | 500 | 1 | \(500/2540 = 0.197\) | \(500/1500 = 0.333\) | \(\approx 0.173\) |
| Drug × BF | 320 | 1 | \(320/2540 = 0.126\) | \(320/1320 = 0.242\) | \(\approx 0.102\) |
| Within | 1000 | 16 | — | — | — |
| Total | 2540 | 19 | — | — | — |
세 효과 모두 Cohen 의 기준 (large \(\eta^2 \approx 0.14\)) 을 넘는 큰 효과.
4 \(\omega^2\) — 비편향 추정량
\[ \omega^2 = \frac{SS_{\text{effect}} - df_{\text{effect}} \cdot MS_W}{SS_T + MS_W} \]
Drug: \[ \omega^2_A = \frac{720 - 1 \times 62.5}{2540 + 62.5} = \frac{657.5}{2602.5} = 0.253 \]
작은 표본에서는 \(\omega^2 < \eta^2\) 가 일반적. Maxwell 의 권장: 결과 보고에는 \(\omega^2\), 검정력 계산에는 \(f\).
\(F\) 통계량의 기대값은 귀무가설이 참이어도 1 보다 약간 크다 (작은 표본 효과). 이로 인해 \(SS_{\text{effect}}\) 가 평균적으로 모집단 효과를 약간 과대평가한다. \(\omega^2\) 의 분자에서 \(df \cdot MS_W\) 를 빼는 것이 이 편향 보정이다 — “\(F = 1\) 일 때 \(\omega^2 = 0\)” 이 되도록 설계됨.
5 Cohen’s \(f\) 와 검정력 분석
Cohen 의 \(f\) 는 ANOVA 검정력 표의 표준 효과 크기:
\[ f = \sqrt{\frac{\eta^2}{1 - \eta^2}} = \sqrt{\frac{SS_{\text{effect}}}{SS_W}} \cdot \frac{1}{\sqrt{N}} \]
(또는 partial \(\eta^2\) 를 사용한 변종.) Cohen 의 기준: - 작은 효과: \(f = 0.10\) - 중간 효과: \(f = 0.25\) - 큰 효과: \(f = 0.40\)
비중심 모수 (noncentrality parameter): \[ \lambda = N \cdot f^2 \]
이 \(\lambda\) 가 noncentral \(F\) 분포의 위치를 결정해 검정력을 산출한다.
6 검정력 분석 — 표본 크기 산출
\(2 \times 2\) factorial 에서 상호작용을 검출할 검정력 0.80, \(\alpha = 0.05\), \(f = 0.25\) (중간 효과) 에 필요한 표본?
\[ \lambda_{\text{interaction}} = N \cdot f^2 = N \cdot 0.0625 \]
\(F_{\text{crit}}(\alpha, df_1, df_2)\) 와 noncentral \(F\) 분포 from \(\lambda\) 가 만나는 \(N\) 을 풀면 약 \(N = 128\) (셀당 32 명).
이는 주효과보다 큰 표본을 요구하는 것이 일반적이다 — 같은 \(f\) 라도 상호작용은 자유도 분배가 더 까다롭기 때문.
7 검정력 비교: 같은 표본에서 어느 효과를 잘 잡을까?
Maxwell 의 SBP 데이터 (cell n=5, N=20) 에서 사후 검정력:
Drug main: f = √(720/1000)/√20 ≈ 0.190 → 검정력 ≈ 0.90 (df=1,16)
BF main: f = √(500/1000)/√20 ≈ 0.158 → 검정력 ≈ 0.78
Drug×BF: f = √(320/1000)/√20 ≈ 0.126 → 검정력 ≈ 0.59
작은 N=20 에서도 큰 효과는 잡히지만, 상호작용 검정력 0.59 는 미흡 — 더 큰 표본이 권장된다.
관측된 \(f\) 를 그대로 사후 검정력 계산에 쓰는 것은 통계적으로 결합 분포 문제를 일으킨다 (observed power 의 부정확성). 사전 (prior) 검정력 분석 을 위해 가장 작은 임상적· 실무적 의미가 있는 효과 크기 (MDE) 를 외부 근거 (이전 연구, Pilot, 도메인 지식) 로 설정하는 것이 표준이다.
8 $G^*Power · statsmodels 비교
| 도구 | 검정력 분석 함수 |
|---|---|
| G*Power | F tests → ANOVA: Fixed effects, special, main effects and interactions |
| Python statsmodels | FTestAnovaPower().solve_power() (단순) |
| Python pingouin | power_anova() (factorial) |
| Python scipy | ncf 직접 사용 (수동) |
9 Python 코드
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
from statsmodels.stats.power import FTestAnovaPower
from scipy import stats
# Maxwell Table 7.1 데이터 재사용
data = pd.DataFrame({
"drug": ["yes"]*10 + ["no"]*10,
"bf": (["yes"]*5 + ["no"]*5) * 2,
"sbp": [158, 163, 173, 178, 168,
188, 183, 198, 178, 193,
186, 191, 196, 181, 176,
185, 190, 195, 200, 180]
})
model = ols("sbp ~ C(drug, Sum) * C(bf, Sum)", data=data).fit()
anova = sm.stats.anova_lm(model, typ=2)
print("ANOVA Type II:")
print(anova.round(3))
# Effect sizes
ss_w = anova.loc["Residual", "sum_sq"]
ms_w = anova.loc["Residual", "mean_sq"]
df_w = anova.loc["Residual", "df"]
ss_t = anova["sum_sq"].sum()
N = len(data)
print("\nEffect sizes:")
for src in ["C(drug, Sum)", "C(bf, Sum)", "C(drug, Sum):C(bf, Sum)"]:
ss = anova.loc[src, "sum_sq"]
df = anova.loc[src, "df"]
eta2 = ss / ss_t
peta2 = ss / (ss + ss_w)
omega2 = (ss - df * ms_w) / (ss_t + ms_w)
f_cohen = np.sqrt(peta2 / (1 - peta2))
# noncentrality for post-hoc power
F_obs = anova.loc[src, "F"]
F_crit = stats.f.ppf(0.95, df, df_w)
ncp = N * f_cohen**2
power = 1 - stats.ncf.cdf(F_crit, df, df_w, ncp)
print(f" {src:>30s}: eta2={eta2:.3f} peta2={peta2:.3f} "
f"omega2={omega2:.3f} f={f_cohen:.3f} power={power:.3f}")
# 사전 검정력: MDE = 작은 효과 (f=0.10), large (f=0.40) 에 필요한 N
print("\n=== Sample size for interaction (df=1, alpha=0.05, power=0.80) ===")
for f_target in [0.10, 0.25, 0.40]:
# statsmodels FTestAnovaPower 는 단순 ANOVA 용 — 직접 풀기
# interaction df=1, error df=N-4 (2x2)
power_target = 0.80
alpha = 0.05
# bisection
lo, hi = 10, 5000
while hi - lo > 1:
mid = (lo + hi) // 2
df_e = mid - 4
if df_e < 1:
lo = mid; continue
F_crit = stats.f.ppf(1 - alpha, 1, df_e)
ncp = mid * f_target**2
power = 1 - stats.ncf.cdf(F_crit, 1, df_e, ncp)
if power >= power_target:
hi = mid
else:
lo = mid
print(f" f = {f_target} → N ≈ {hi}")기대 출력:
Effect sizes:
C(drug, Sum): eta2=0.283 peta2=0.418 omega2=0.260 f=0.847 power=...
C(bf, Sum): eta2=0.197 peta2=0.333 omega2=0.173 f=0.707 power=...
C(drug, Sum):C(bf, Sum): eta2=0.126 peta2=0.242 omega2=0.102 f=0.566 power=...
=== Sample size for interaction (df=1, alpha=0.05, power=0.80) ===
f = 0.10 → N ≈ 787
f = 0.25 → N ≈ 128
f = 0.40 → N ≈ 52
10 IT 매핑
| 디자인 | 셀 표본 가이드 (중간 효과 \(f=0.25\), 검정력 0.80) |
|---|---|
| \(2 \times 2\) A/B 테스트 (UI 색 × 위치) | 셀당 32 명, 총 128 명 |
| \(3 \times 4\) multivariate (가격 × 발송 시간) | 셀당 ~20 명, 총 240 명 |
| \(4 \times 4\) ML hyperparameter | 각 조합 5~10 회 + 노이즈 모형 |
A/B Test 의 트래픽이 충분하면 (만 단위 사용자) 작은 효과 (\(f = 0.05\)) 도 잡을 수 있다. 이 경우 검정력 분석의 초점이 “통계적 유의” 가 아니라 “의사결정 의미 가 있는 효과 크기 (MDE)” 로 이동한다. Kohavi (2020) 와 Phase F.5 (Speed Matters) 의 점진 분석 (gradual rollout, sequential testing) 이 이 흐름의 연장이다.
11 가정과 한계
- 셀 등분산: 효과 크기·검정력 모두 \(MS_W\) 에 의존. 셀별 분산이 다르면 robust 대안 (Welch ANOVA, bootstrap CI on partial \(\eta^2\)).
- 사전 검정력 vs 사후 검정력: 사전 권장. 사후 검정력은 \(F\) 와 함수적 관계라 추가 정보 거의 없음.
- MDE 의 외부 근거: 효과 크기 추정은 도메인·이전 연구에 의존. 추측보다는 pilot 데이터 또는 expert elicitation.
- 다중 비교 영향: 여러 효과를 동시에 검정하면 FWER 보정이 검정력을 떨어뜨림. Bonferroni 보정 시 \(\alpha / k\) 로 검정력 재계산.
12 MAX Ch.7 시리즈 정리
G-MAX7-0 Two-Way Factorial 개관 — 주효과·상호작용·검정력의 이득
G-MAX7-1 2×2 설계, 직교 대비 분해
G-MAX7-2 Simple Effects, Interaction Contrasts (post-hoc)
G-MAX7-3 Type I/II/III SS (비직교 설계)
G-MAX7-4 Effect Size, Power, Sample Size ← 현재 글
│
▼
G-MAX8 (Higher-Order: 2×2×2)
G-MON3 (Factorial 정통, 분수 분할)
G-MON4 (Asymmetric, Split-Plot)
13 관련 주제
선행 지식
- G-MAX7-0~3 시리즈
- A-WOO Ch.8 — Sample Size Determination (작성 예정, Phase A)
후속 주제
- G-MAX8 — Higher-Order Factorial (작성 예정)
- G-MON3 — Factorial Experiments (작성 예정)
다른 카테고리 연결
- AB Test — 표본 크기와 검정력 — 단일 요인 검정력의 IT 적용
- AB Test — 다중 비교 실험 — multivariate testing 검정력