Summary
검정력(statistical power) = 실제 효과가 존재할 때 그것을 탐지할 확률 = 1 - β. 검정력은 α, 표본 크기(n), 효과 크기(effect size)와 함께 4원 관계를 이루며, 나머지 셋이 정해지면 하나가 결정된다.
용어 설명
- α (유의수준, Significance level): “효과가 없는데 있다고 잘못 판단”할 확률의 허용 한계. 보통 0.05(5%)로 설정
- β (Type II Error 확률): “효과가 있는데 없다고 잘못 판단”할 확률. 주의: 회귀분석의 회귀계수 β와는 완전히 다른 개념
- Power (검정력, 1 − β): 실제 효과가 존재할 때 그것을 올바르게 탐지할 확률. 0.80이면 “효과가 있을 때 80%의 확률로 찾아낸다”는 의미
- Effect size (효과 크기): 차이 또는 관계의 실질적 크기를 표준화한 지표 (예: Cohen’s d, η²). 효과가 클수록 같은 표본 크기에서 탐지하기 쉬움
- 위양성 (False positive): 효과가 없는데 있다고 판단 = Type I Error
- 위음성 (False negative): 효과가 있는데 없다고 판단 = Type II Error
Statistical Power (검정력)
Type I / Type II Error
| H₀ 참 (효과 없음) | H₀ 거짓 (효과 있음) | |
|---|---|---|
| H₀ 기각 | Type I Error (α) — 위양성 | Correct (Power = 1-β) |
| H₀ 기각 실패 | Correct (1-α) | Type II Error (β) — 위음성 |
- α (유의수준): 효과가 없는데 있다고 판단할 확률 (보통 0.05)
- β: 효과가 있는데 없다고 판단할 확률
- Power = 1 - β: 효과가 있을 때 이를 탐지할 확률
관례적 기준
- α = 0.05 (위양성 허용 5%)
- Power ≥ 0.80 (위음성 허용 20% 이하)
- 엄격한 연구: Power ≥ 0.90
4원 관계 (Power Quartet)
Power는 네 요소의 함수이며, 나머지 셋을 고정하면 하나가 결정된다:
flowchart LR A["α (유의수준)"] --> P["Power (1-β)"] B["n (표본 크기)"] --> P C["Effect Size (d, η²)"] --> P P --> D["β (Type II Error)"]
| 변화 | Power에 미치는 영향 |
|---|---|
| α ↑ (e.g., .05 → .10) | Power ↑ (but 위양성 위험↑) |
| n ↑ | Power ↑ |
| Effect size ↑ | Power ↑ |
| 양측 → 단측 검정 | Power ↑ (but 방향 가정 필요) |
검정력이 낮으면 생기는 문제
- 진짜 효과를 놓침 — 유의하지 않은 결과가 “효과 없음”이 아닐 수 있음
- 유의한 결과의 effect size 과대추정 — 낮은 power에서 유의하게 나온 결과는 effect size가 부풀려진 경향 (winner’s curse)
- 재현 불가 — 원 연구가 우연히 유의했을 확률↑
흔한 오해
“유의하지 않다” ≠ “효과가 없다”
검정력이 0.30밖에 안 되는 연구에서 p = 0.12가 나왔다면, 효과가 있는데 탐지 못한 것일 가능성이 70%나 된다.
Power Analysis의 용도
| 용도 | 고정 | 구함 |
|---|---|---|
| 사전 표본 크기 결정 | α, power, effect size | n |
| 사후 검정력 확인 | α, n, effect size | power |
| 최소 탐지 가능 효과 | α, n, power | effect size |
→ 가장 중요한 활용: 연구 설계 전 Sample Size Determination
Implementation
from statsmodels.stats.power import ( TTestIndPower, TTestPower, FTestAnovaPower ) # Independent t-test: d=0.5, α=0.05, power=0.8 → n=? analysis = TTestIndPower() n = analysis.solve_power(effect_size=0.5, alpha=0.05, power=0.8) print(f"필요 표본 크기 (per group): {n:.1f}") # → 63.8 # 표본 크기별 power 곡선 import matplotlib.pyplot as plt import numpy as np ns = np.arange(10, 200) powers = [analysis.power(effect_size=0.5, nobs1=n, alpha=0.05) for n in ns] plt.plot(ns, powers) plt.axhline(y=0.8, color='r', linestyle='--', label='Power = 0.80') plt.xlabel('Sample size (per group)') plt.ylabel('Power') plt.title('Power curve (d=0.5, α=0.05)') plt.legend() plt.show() # ANOVA: f=0.25 (medium), k=3, α=0.05, power=0.8 → n=? from statsmodels.stats.power import FTestAnovaPower f_analysis = FTestAnovaPower() n_anova = f_analysis.solve_power(effect_size=0.25, alpha=0.05, power=0.8, k_groups=3) print(f"ANOVA 필요 표본 크기 (per group): {n_anova:.1f}")
관련 문서
- Sample Size Determination — power analysis 기반 표본 크기 결정
- Effect Size 개요 — effect size가 power에 미치는 영향
- Cohen’s d — t-test에서의 effect size
- Eta-squared — ANOVA에서의 effect size → Cohen’s f 변환