검정통계량과 p-값¶
검정통계량¶
검정통계량은 표본자료로부터 계산한 값으로, 이론적 분포에서 나온 문턱과 비교하여 귀무가설 \(H_0\)을 기각할지 판단하는 데 쓰인다. 어떤 검정통계량을 쓸지는 자료의 종류와 검정하려는 가설에 달려 있다. 표준적인 검정통계량으로 z-통계량, t-통계량, 카이제곱 통계량이 있다.
- \(z\)-통계량: 모분산을 알거나, 표본이 크거나, 자료가 정규분포를 따를 때 쓸 수 있다.
- \(t\)-통계량: 모분산을 모르고 표본이 작을 때 쓸 수 있다. 자료가 정규모집단에서 나왔다고 가정한다.
- \(\chi^2\)-통계량: 보통 범주형 자료에서 독립성이나 적합도를 검정하는 데 쓴다.
- \(f\)-통계량: 주로 분산분석(ANOVA)과 회귀분석에서 집단 간 분산을 비교하고 집단 평균이 유의하게 다른지 검정하는 데 쓴다. 모형이 설명하는 분산을 설명되지 않은 분산으로 나누어 계산한다.
검정통계량을 계산하는 공식은 검정마다 다르다. 예를 들어 모평균을 검정할 때 흔히 쓰는 z-통계량의 공식은
여기서 \(\bar{x}\)는 표본평균, \(\mu_0\)은 귀무가설 아래의 평균, \(\sigma\)는 모표준편차, \(n\)은 표본크기이다.
유의수준 (alpha)과 오류의 종류¶
가설검정의 오류를 이해하는 것은 통계검정 결과를 올바르게 해석하는 데 필수적이다. 가설검정을 수행할 때 생길 수 있는 오류는 두 종류이다:
- 제1종 오류: 흔히 "거짓 양성"이라 불리는 제1종 오류는 귀무가설 \(H_0\)이 참인데도 이를 잘못 기각하고 대립가설 \(H_a\)를 택할 때 생긴다. 재판에서 무고한 사람에게 유죄를 선고하는 것에 해당한다. 유의수준 \(\alpha\)는 귀무가설을 기각하기 위해 우리가 정한 문턱이며, 제1종 오류를 범할 잠재적 위험, 즉 \(H_0\)이 참일 때 이를 기각할 확률을 나타낸다. 예를 들어 \(\alpha = 0.05\)로 두면 \(H_0\)을 잘못 기각할 위험이 5%이다.
- 제2종 오류: "거짓 음성"이라고도 하는 제2종 오류는 귀무가설 \(H_0\)이 거짓인데도 기각하지 못하고 잘못 유지할 때 생긴다. 재판에서 유죄인 사람을 무죄로 방면하는 것에 해당한다. 제2종 오류를 범할 확률은 \(\beta\)로 표기한다. \(\beta\)가 작을수록 거짓인 \(H_0\)을 유지할 위험이 작다. \(\beta\)의 여집합이 검정의 검정력이며, \(H_0\)이 거짓일 때 이를 올바르게 기각할 확률을 나타낸다. 다시 말해 검정력은 효과가 있을 때 그것을 탐지하는 능력이다.
\(\alpha\)와 \(\beta\)의 균형은 가설검정에서 결정적이다. \(\alpha\)를 낮추면 제1종 오류의 가능성은 줄지만 제2종 오류의 위험은 커지고, 그 반대도 마찬가지이다. 따라서 적절한 유의수준의 선택은 검정의 맥락과 두 오류가 각각 초래하는 결과에 달려 있다.
p-값과 그 해석¶
p-값은 귀무가설(\(H_0\))에 반하는 증거를 정량화하는 가설검정의 근본 개념이다. 구체적으로 p-값은 귀무가설이 참이라는 가정 아래, 표본자료에서 계산한 검정통계량만큼 또는 그보다 극단적인 값을 관측할 확률이다. 관측된 자료가 \(H_0\)과 부합하는지, 아니면 \(H_0\)을 기각하고 대립가설(\(H_a\))을 택할 만큼 충분한 증거를 주는지 판단하는 데 도움을 준다.
p-값은 \(H_0\)이 성립한다는 가정 아래 관측된 자료가 얼마나 이례적인지를 잰다:
-
작은 p-값(\(p \leq \alpha\))은 관측된 자료가 귀무가설 아래에서 의심스럽다는 뜻이다. \(H_0\)에 반하는 강한 증거를 시사하므로 기각하게 된다. 다시 말해 p-값이 작을수록 귀무가설로 관측된 자료를 설명하기 어려워진다. 예를 들어 유의수준을 \(\alpha = 0.05\)로 두었는데 검정의 p-값이 \(p = 0.01\)이면, \(H_0\)이 참이라는 가정 아래 이 표본만큼 극단적인 자료를 볼 확률이 1%뿐이라는 뜻이다. 따라서 \(H_0\)을 기각한다.
-
큰 p-값(\(p > \alpha\))은 자료가 귀무가설과 충분히 어긋나지 않는다는 뜻이다. 이 경우 \(H_0\)을 기각할 증거가 부족하므로 기각하지 못한다. 이는 \(H_0\)이 참임을 뜻하지 않는다. 다만 자료가 그에 반하는 충분히 강한 증거를 주지 못했을 뿐이다. 예를 들어 p-값이 \(p = 0.20\)이고 \(\alpha = 0.05\)이면 자료가 \(H_0\) 아래에서 그럴듯하다고 결론짓고 귀무가설을 기각하지 않는다.

왼쪽이 정의 그대로다. \(H_0\) 아래에서 검정통계량이 따르는 분포를 그리고, 관측된 값보다 극단적인 쪽의 넓이를 재면 그것이 \(p\)다. 양측검정이면 양쪽 꼬리를 모두 세므로 한쪽 넓이의 두 배가 된다.
오른쪽은 덜 알려졌지만 더 중요한 사실이다. \(H_0\)이 참이면 \(p\)-값 자체가 \([0, 1]\) 위의 균등분포를 따른다. 파란 막대가 어느 구간에서나 높이 1로 평평한 것이 그것이며, \(p < 0.05\)인 비율이 정확히 \(0.05\)가 나오는 것도 여기서 따라 나온다. 유의수준 \(\alpha\)가 곧 제1종 오류율이 되는 이유가 이 균등성이다.
주황 막대는 실제로 효과가 있을 때의 \(p\)-값 분포다. 0 쪽으로 쏠리지만 여전히 큰 값도 자주 나온다. 이 예에서 \(p < 0.05\)인 비율은 0.32에 그치며, 효과가 있는데도 열 번 중 일곱 번은 잡아내지 못한다는 뜻이다. 그 비율이 검정력이고, 9.3절의 주제다.
여기서 흔한 오해를 하나 짚어 두자. \(p\)-값은 \(H_0\)이 참일 확률이 아니다. 위 정의의 조건이 어느 쪽인지 보면 분명하다. \(p\)는 "\(H_0\)이 참일 때 이런 자료가 나올 확률"이지 "이런 자료일 때 \(H_0\)이 참일 확률"이 아니다. 뒤쪽을 계산하려면 사전확률이 필요하며, 그것이 6.5절의 베이즈 방법이다.
정리하면, p-값은 관측된 자료가 귀무가설과 양립 가능한지 평가하는 도구이다. p-값이 낮을수록 \(H_0\)에 반하는 증거가 강하고, 높을수록 증거가 약하며, 유의수준 \(\alpha\)에 비추어 귀무가설을 기각할지 유지할지 안내한다.
검정의 이름¶
검정의 이름 — 가설¶
검정의 이름 — 자료¶
검정의 이름 — 표본분포¶
이름 짓는 규칙¶
가설검정의 단계¶
가설검정은 표본자료에 근거하여 모수에 관한 가정을 평가하는 체계적인 과정이다. 그 단계들은 결론의 무결성과 정확성을 보장하는 데 결정적이다.
1단계: 가설 설정¶
가설검정의 첫 단계는 서로 맞서는 두 가설을 세우는 것이다:
- 귀무가설 (\(H_0\)): 모집단에 효과나 차이가 없다고 가정한다. 검정이 도전하고자 하는 기준 가설 역할을 한다.
- 대립가설 (\(H_a\)): 효과나 차이가 있다고 상정한다. 증거가 귀무가설을 기각할 만하다면 택하게 되는 가설이다.
예를 들어 새 약이 혈압을 낮추는지 조사한다면 가설은 다음과 같을 수 있다:
- \(H_0\): 이 약에 의한 혈압의 평균 감소량은 0이다.
- \(H_a\): 이 약에 의한 혈압의 평균 감소량은 0보다 크다.
2단계: 적절한 검정의 선택¶
올바른 통계검정을 고르는 일은 결정적이며 자료의 종류와 가설에 달려 있다. 어떤 검정을 고르느냐가 검정통계량을 계산하는 방식과 가설을 평가하는 방식을 좌우한다. 고려할 요인으로는 자료의 측정 수준, 표본크기, 자료가 정규분포를 따르는지 여부가 있다. 표준적인 검정으로는 z-검정, t-검정, 카이제곱 검정, 분산분석이 있다.
3단계: 유의수준의 결정¶
유의수준(\(\alpha\))은 귀무가설을 기각하는 문턱이다. 참인 귀무가설을 기각하는 제1종 오류를 범할 확률을 나타낸다. \(\alpha\)의 전형적인 값은 0.05, 0.01, 0.10이다. 편향을 피하려면 자료를 분석하기 전에 이 값을 정해야 한다.
4단계: 검정통계량의 계산¶
검정통계량은 표본자료로부터 계산한 값으로, 귀무가설이 참이라는 가정 아래 특정 확률분포를 따른다. 검정통계량은 관측된 자료를 귀무가설 아래의 표본분포와 견준다. 예를 들어 평균에 대한 z-검정에서 검정통계량은 다음과 같이 계산한다:
여기서 \(\bar{x}\)는 표본평균, \(\mu_0\)은 귀무가설 아래의 평균, \(\sigma\)는 모표준편차, \(n\)은 표본크기이다.
5단계: p-값의 결정¶
p-값은 귀무가설 아래에서 관측된 통계량만큼 또는 그보다 극단적인 검정통계량을 관측할 확률이다. 귀무가설을 기각할지 결정하는 데 결정적인 척도이다. p-값이 \(\alpha\)보다 작으면 귀무가설에 반하는 강한 증거를 시사한다.
6단계: 판정¶
p-값과 미리 정한 유의수준에 따라 다음과 같이 판정한다:
- p-값 \(\leq \alpha\)이면 귀무가설을 기각한다.
- p-값 \(> \alpha\)이면 귀무가설을 기각하지 않는다.
7단계: 가설검정의 마무리¶
마지막 단계는 연구 질문의 맥락에서 결과를 해석하는 것이다. 판정의 함의를 살피고, 있을 수 있는 오류를 논하며, 필요하다면 후속 연구를 제안하는 일이 여기에 포함된다.
연습문제¶
연습문제 1. p-값을 형식적으로 정의하고 \(H_0\) 아래 검정통계량 분포와의 관계를 설명하라.
풀이
p-값: \(H_0\) 아래에서 관측된 값만큼 또는 그보다 극단적인 검정통계량을 얻을 확률.
형식적으로: \(p = P_{H_0}(T \ge t_{\text{obs}})\) (단측) 또는 \(p = 2 \min[P_{H_0}(T \ge t_{\text{obs}}), P_{H_0}(T \le t_{\text{obs}})]\) (양측).
관측된 통계량 너머 귀무분포의 꼬리 넓이로 계산한다.
\(H_0\) 아래에서 p-값 자체는 \([0, 1]\) 위의 균등분포를 따른다(확률적분변환). 이것이 "\(p \le \alpha\)이면 기각한다"는 판정 규칙을 정당화한다 — 제1종 오류율이 정확히 \(\alpha\)가 된다.
연습문제 2. 채식하는 청소년. Evie가 학생 25명을 표본으로 뽑았더니 20%가 채식주의자였다. \(H_0: p = 0.06\) 대 \(H_1: p > 0.06\)을 검정한다. 정확한 p-값을 계산하라.
풀이
관측값: \(n = 25\) 중 채식주의자 \(X = 5\)명. \(H_0\) 아래에서 \(X \sim \mathrm{Binomial}(25, 0.06)\).
p-값: \(P(X \ge 5) = 1 - P(X \le 4) = 1 - \sum_{k=0}^4 \binom{25}{k}(0.06)^k (0.94)^{25-k}\).
수치로: \(P(X \le 4) \approx 0.9849\)이므로 \(p \approx 0.0151\).
이 학교의 채식 비율이 6%를 넘는다는 증거이다. \(\alpha = 0.05\)에서 \(H_0\)을 기각하지만 \(\alpha = 0.01\)에서는 기각하지 못한다.
정규근사를 쓰면 \(z = (0.20 - 0.06)/\sqrt{0.06 \cdot 0.94/25} \approx 2.95\), \(p \approx 0.0016\)이 된다 — 정확한 값보다 거의 열 배 작다. \(np_0 = 1.5 < 10\)이므로 정규근사 조건이 깨져 있어, 이런 경우에는 정확한 이항검정을 써야 한다.
연습문제 3. 여러 언어를 쓰는 미국인. \(\hat p = 40/120 \approx 0.333\)으로 \(H_0: p = 0.26\) 대 \(H_1: p > 0.26\)을 검정한다. 정규근사로 p-값을 계산하라.
풀이
\(\mathrm{SE} = \sqrt{0.26 \cdot 0.74/120} \approx 0.0400\). \(z = (0.333 - 0.26)/0.0400 \approx 1.83\).
p-값: \(P(Z > 1.83) = 1 - \Phi(1.83) \approx 0.034\). \(\alpha = 0.05\)에서 \(H_0\)을 기각한다.
결론: 미국인의 26% 넘는 비율이 여러 언어를 쓴다는 증거이다.
확인: \(np_0 = 31.2 \ge 10\), \(n(1-p_0) = 88.8 \ge 10\). 검정의 오류율까지 명목 수준에 가깝기를 요구하는 보수적 기준을 넉넉히 만족하므로 정규근사에 기댄 p-값을 믿어도 된다.
연습문제 4. p-값에 대한 흔한 오해. 세 가지를 들라.
풀이
-
"\(p\)-값은 \(H_0\)이 참일 확률이다." 틀렸다. p-값은 \(H_0\)을 가정한 확률이지 \(H_0\)에 관한 확률이 아니다. \(P(H_0 \mid \text{자료})\)를 얻으려면 사전분포와 Bayes 정리가 필요하다.
-
"\(1 - p\)는 \(H_1\)이 참일 확률이다." 틀렸다. 같은 혼동이다.
-
"\(p < 0.05\)는 효과가 크다는 뜻이다." 틀렸다. p-값은 효과크기와 표본크기 둘 다에 의존한다. \(n = 10^6\)이면 무의미할 만큼 작은 효과도 \(p < 10^{-10}\)일 수 있다. p-값과 함께 항상 효과크기와 신뢰구간을 보고하라.
다른 오해: "p = 0.05는 오류 확률이 5%라는 뜻이다"(절차가 아니라 가설에 관한 확률 진술로 오해), "\(p > 0.05\)이면 \(H_0\)이 참이다"(기각하지 못하는 것 ≠ 받아들이는 것).
연습문제 5. 모의실험 기반 p-값. 채식주의자 보기로 보여라.
풀이
import numpy as np
rng = np.random.default_rng(42)
p0, n, x_obs = 0.06, 25, 5
n_sim = 10_000
samples = rng.binomial(n, p0, size=n_sim)
# p-값의 정의를 그대로 코드로 옮긴 것이다.
# "H0가 참일 때 관측값 이상이 나오는 비율"을 세면 된다.
p_value = (samples >= x_obs).mean()
print(f"Simulated p-value: {p_value:.4f}")
출력:
Simulated p-value: 0.0158
정확한 이항 계산은 \(P(X \ge 5 \mid n = 25,\, p = 0.06) = 0.01505\)이다. 모의실험이 0.0158을 주었고, 이 추정값의 표준오차가 \(\sqrt{0.015 \times 0.985/10000} \approx 0.0012\)이므로 차이는 오차 범위 안이다.
모의실험의 장점:
- 표준적인 통계량만이 아니라 어떤 검정통계량에도 통한다.
- 연속성 보정을 자동으로 처리한다.
- 귀무분포의 모양을 드러낸다(히스토그램).
단점:
- 몬테카를로 오차: \(\mathrm{SE} \approx \sqrt{p(1-p)/n_{\text{sim}}}\). \(p = 0.015\)이고 \(n_{\text{sim}} = 10^4\)이면 \(\mathrm{SE} \approx 0.0012\)로 상대오차가 약 8%이다. 자릿수를 더 얻으려면 \(n_{\text{sim}}\)을 크게 늘려야 한다.
- 둘 다 가능할 때는 해석적 계산보다 느리다.
연습문제 6. p-값과 효과크기. p-값만으로 충분하지 않은 이유는?
풀이
p-값은 효과크기와 표본크기를 뒤섞는다:
- 작은 효과 + 아주 큰 \(n\): \(p\)는 작지만 실질적 유의성은 무시할 만하다.
- 큰 효과 + 작은 \(n\): \(p\)는 크지만(유의하지 않지만) 효과는 중요할 수 있다.
두 개의 A/B 검정:
- 검정 1: 집단당 100,000명, 전환율 51% 대 50%. \(p \approx 0.00001\). 효과: 1퍼센트포인트.
- 검정 2: 집단당 50명, 전환율 70% 대 50%. \(p \approx 0.04\). 효과: 20퍼센트포인트.
p-값으로는 검정 1이 훨씬 "유의하지만" 효과는 검정 2가 훨씬 크다.
항상 보고할 것:
- 효과크기(원 단위 또는 Cohen의 \(d\) 같은 표준화 값).
- 신뢰구간(그럴듯한 효과의 범위).
- p-값(\(H_0\)에 반하는 증거).
이 셋이 함께 있어야 이야기가 온전해진다. p-값만으로는 빈약하다.
연습문제 7. \(H_0\)이 참이면 \(p\)-값이 균등분포를 따른다는 성질을 증명하고, 이산분포에서 왜 깨지는지 수치로 보여라.
풀이
연속인 경우의 증명. 검정통계량 \(T\)의 \(H_0\) 아래 분포함수를 \(F\)라 하고 \(F\)가 연속·순증가라 하자. 단측 \(p\)-값은 \(P=1-F(T)\)다. \(F(T)\sim\text{Unif}(0,1)\)이므로(확률적분변환) \(P=1-F(T)\)도 균등분포다. \(\square\)
따라서 \(P(P\le\alpha)=\alpha\)가 모든 \(\alpha\)에서 성립한다. 이것이 "수준 \(\alpha\) 검정"의 의미다.
import numpy as np
from scipy import stats
rng = np.random.default_rng(7)
M, n = 100_000, 20
x = rng.normal(0, 1, (M, n))
t = x.mean(1) / (x.std(1, ddof=1) / np.sqrt(n))
pv = 2 * stats.t.sf(np.abs(t), n - 1)
print(f"t 검정 — KS 적합도 p = {stats.kstest(pv, 'uniform').pvalue:.4f}")
for a in [0.01, 0.05, 0.10, 0.20]:
print(f" P(p ≤ {a:.2f}) = {np.mean(pv <= a):.4f}")
print("\n이항 n=20, p0=0.5 양측 정확검정")
k = np.arange(21)
pmf = stats.binom.pmf(k, 20, 0.5)
pvs = np.array([stats.binomtest(int(j), 20, 0.5).pvalue for j in k])
for a in [0.01, 0.05, 0.10, 0.20]:
print(f" P(p ≤ {a:.2f}) = {pmf[pvs <= a].sum():.4f}")
t 검정 — KS 적합도 p = 0.5350
P(p ≤ 0.01) = 0.0101
P(p ≤ 0.05) = 0.0502
P(p ≤ 0.10) = 0.1005
P(p ≤ 0.20) = 0.2001
이항 n=20, p0=0.5 양측 정확검정
P(p ≤ 0.01) = 0.0026
P(p ≤ 0.05) = 0.0414
P(p ≤ 0.10) = 0.0414
P(p ≤ 0.20) = 0.1153
연속인 경우는 완벽하다. 네 지점 모두 명목과 일치한다.
이산인 경우는 어긋난다.
- \(\alpha=0.01\)에서 실제 0.0026으로 4분의 1에 불과하다.
- \(\alpha=0.05\)와 \(\alpha=0.10\)의 값이 같다(0.0414). 그 사이에 도달 가능한 \(p\)-값이 없기 때문이다.
이산분포에서는 \(P(P\le\alpha)\le\alpha\)만 성립한다. 등호가 아니라 부등호다. 이를 초균등(super-uniform) 이라 하며, 검정이 타당하지만 보수적임을 뜻한다.
도달 가능한 \(p\)-값의 집합. \(n=20\), \(p_0=0.5\)에서 양측 \(p\)-값이 취할 수 있는 값은
로 유한하다. 0.05와 0.01 사이에는 아무 값도 없다.
함의 셋.
- 보수성. 실제 수준이 명목보다 낮아 검정력을 잃는다. 앞서 본 중간-\(p\)가 대처법이다.
- 다중검정 보정이 지나치게 보수적이 된다. 이산 \(p\)-값에 벤야미니-호흐베르크를 그냥 적용하면 발견을 크게 놓친다. 이산성을 반영한 보정이 따로 개발되어 있다.
- \(p\)-값 결합에도 영향. 피셔 결합은 균등성을 전제하므로, 이산 \(p\)를 결합하면 보수적이 된다.
연습문제 8. \(H_1\)이 참일 때 \(p\)-값의 분포를 조사하라. 검정력 80%인 연구를 똑같이 반복하면 다시 유의할 확률은 얼마인가?
풀이
핵심 — \(p\)-값은 확률변수다. \(H_1\) 아래에서도 표본마다 달라지며, 그 변동이 매우 크다.
import numpy as np
from scipy import stats
rng = np.random.default_rng(7)
M = 100_000
za = stats.norm.ppf(0.975)
print(f"{'설계 검정력':>10s} {'P(p<0.05)':>11s} {'P(p<0.01)':>11s} "
f"{'p의 중앙값':>12s}")
for pw in [0.50, 0.80, 0.95]:
nc = za + stats.norm.ppf(pw) # 비중심 모수
z = rng.normal(nc, 1, M)
p = 2 * stats.norm.sf(np.abs(z))
print(f"{pw:10.0%} {np.mean(p < 0.05):11.3f} {np.mean(p < 0.01):11.3f} "
f"{np.median(p):12.4f}")
설계 검정력 P(p<0.05) P(p<0.01) p의 중앙값
50% 0.499 0.268 0.0502
80% 0.801 0.591 0.0050
95% 0.951 0.849 0.0003
검정력 80%인 연구를 반복하면 80%의 확률로 다시 유의하다. 당연해 보이지만, 이 숫자를 직시할 필요가 있다. 다섯 번 중 한 번은 "재현 실패" 로 보일 것이다.
검정력 50%면 절반만 재현된다. 실제 문헌의 많은 연구가 검정력 50% 이하로 추정되므로, 재현율이 낮은 것은 부정행위가 없어도 예상되는 일이다.
\(p\)-값의 변동이 크다. 검정력 80%인 설계에서 \(p\)-값의 사분위를 보면
nc = za + stats.norm.ppf(0.80)
p = 2 * stats.norm.sf(np.abs(rng.normal(nc, 1, M)))
q = np.percentile(p, [5, 25, 50, 75, 95])
print(" 5%, 25%, 50%, 75%, 95% 백분위:",
" ".join(f"{v:.4f}" for v in q))
5%, 25%, 50%, 75%, 95% 백분위: 0.0000 0.0005 0.0051 0.0332 0.2428
같은 연구를 반복하면 \(p\)-값이 0.0000에서 0.24까지 흔들린다. 20배가 아니라 수천 배의 변동이다. 이것을 "\(p\)-값의 춤(dance of the \(p\)-values)"이라 부른다.
함의.
- \(p=0.049\)와 \(p=0.051\)의 차이는 무의미하다. 같은 자료를 다시 모으면 순서가 뒤바뀔 수 있다.
- \(p\)-값을 소수 셋째 자리까지 보고하는 관행이 과잉 정밀이다.
- 재현 연구의 표본을 더 크게 잡아야 한다. 원 연구와 같은 \(n\)으로는 검정력이 부족하다.
- 효과크기와 구간으로 판단하는 것이 훨씬 안정적이다. 구간의 변동은 \(p\)-값의 변동보다 훨씬 작다.
연습문제 9. 여러 독립 연구의 \(p\)-값을 결합하는 방법(피셔, 스토퍼)을 설명하고, 두 방법이 갈리는 예를 들어라.
풀이
피셔의 방법. \(H_0\) 아래에서 \(-2\log P_i\sim\chi^2_2\)이므로
스토퍼의 방법. \(Z_i=\Phi^{-1}(1-p_i)\)를 평균 내어
import numpy as np
from scipy import stats
cases = [[0.04, 0.06, 0.08], [0.20, 0.20, 0.20], [0.001, 0.9, 0.9]]
print(f"{'p-값들':>22s} {'피셔 p':>9s} {'스토퍼 p':>10s}")
for ps in cases:
X = -2 * np.sum(np.log(ps))
pf = stats.chi2.sf(X, 2 * len(ps))
z = np.sum(stats.norm.isf(ps)) / np.sqrt(len(ps))
print(f"{str(ps):>22s} {pf:9.4f} {stats.norm.sf(z):10.4f}")
p-값들 피셔 p 스토퍼 p
[0.04, 0.06, 0.08] 0.0089 0.0033
[0.2, 0.2, 0.2] 0.1399 0.0725
[0.001, 0.9, 0.9] 0.0271 0.3804
첫 두 줄에서는 결론이 같다. 각각의 \(p\)가 비슷할 때는 두 방법이 대체로 일치하며, 스토퍼가 조금 더 민감하다.
셋째 줄에서 정반대다. \(p=(0.001,\ 0.9,\ 0.9)\)에서
- 피셔: 0.027로 기각. \(-2\log(0.001)=13.8\)이 지배한다.
- 스토퍼: 0.380으로 비기각. \(z=(3.09-1.28-1.28)/\sqrt3=0.30\)으로 상쇄된다.
성격의 차이.
| 피셔 | 스토퍼 | |
|---|---|---|
| 민감한 상황 | 하나라도 아주 작을 때 | 여러 개가 고르게 작을 때 |
| 큰 \(p\)의 영향 | 작다(\(\log\)가 완만) | 크다(음의 \(z\)로 상쇄) |
| 가중 가능 | 어렵다 | 쉽다(연구 크기로 가중) |
| 방향 | 무시 | 반영 |
어느 쪽이 맞는가 — 질문에 달렸다.
- "어느 하나라도 효과가 있는가" 라면 피셔가 적절하다.
- "전반적으로 같은 방향의 효과가 있는가" 라면 스토퍼가 적절하다. 메타분석의 정신에 더 가깝다.
주의할 점 넷.
- 독립성이 필요하다. 같은 자료를 다른 방법으로 분석한 \(p\)들은 결합하면 안 된다.
- \(H_0\)의 의미. 결합 검정의 \(H_0\)는 "모든 연구에서 \(H_0\)가 참"이다. 기각해도 "적어도 하나"를 말할 뿐이다.
- 출판 편향. 유의한 연구만 모아 결합하면 당연히 유의하게 나온다.
- 효과크기를 잃는다. \(p\)-값만 결합하면 효과의 크기와 방향이 사라진다. 원 자료나 효과크기가 있으면 제대로 된 메타분석이 훨씬 낫다.
연습문제 10. \(p\)-값을 대체하거나 보완하는 지표들 — \(s\)-값, 우도비, 베이즈 인자 — 를 소개하고 각각의 장단점을 적어라.
풀이
1 — \(s\)-값(놀람값, surprisal).
"\(H_0\)과 모든 보조가정이 옳을 때, 이 자료는 공정한 동전을 \(s\)번 던져 모두 앞면이 나온 것만큼 놀랍다"로 읽는다.
import numpy as np
print(f"{'p':>8s} {'s = -log2(p)':>14s}")
for p in [0.5, 0.1, 0.05, 0.01, 0.005, 0.001]:
print(f"{p:8.3f} {-np.log2(p):14.2f}")
p s = -log2(p)
0.500 1.00
0.100 3.32
0.050 4.32
0.010 6.64
0.005 7.64
0.001 9.97
- 장점: \(p=0.05\)가 "동전 4.3번 연속 앞면" 정도의 놀라움임을 직관적으로 보여 준다. 대단하지 않다. 척도가 선형이라 \(p=0.05\)와 \(p=0.01\)의 차이(2.3비트)를 가늠하기 쉽다.
- 단점: 새 정보는 없다. \(p\)의 단조변환일 뿐이다.
2 — 우도비. \(\ell(\hat\theta)/\ell(\theta_0)\). "자료가 어느 쪽을 몇 배 더 지지하는가."
- 장점: 증거의 직접적 측도. 사전분포가 필요 없다. 옮겨 담기 쉽다(연구를 합칠 때 곱하면 된다).
- 단점: 복합가설에서는 최대를 취해야 하는데, 그러면 모수 개수의 차이를 보정하지 않아 복잡한 모형에 유리해진다.
3 — 베이즈 인자. 앞서 본 대로 주변가능도의 비.
- 장점: \(H_0\)을 지지하는 증거도 표현할 수 있다(BF\(<1\)). 모형 복잡도가 자동으로 벌점을 받는다.
- 단점: 사전분포에 민감하다. 앞서 본 예에서 BF가 1.5배 차이 났다. 계산이 무겁다.
4 — 신뢰구간. 사실 가장 실용적인 답이다.
- 장점: 효과의 크기와 정밀도를 함께 준다. 검정 결과를 포함한다(0을 담는지). 실무적 중요성을 판단할 수 있다.
- 단점: 하나의 문턱을 원하는 상황에는 답하지 않는다.
비교 표.
| 지표 | 답하는 질문 | 사전분포 | 효과크기 |
|---|---|---|---|
| \(p\)-값 | \(H_0\) 아래에서 자료가 드문가 | 불필요 | 없음 |
| \(s\)-값 | 얼마나 놀라운가 | 불필요 | 없음 |
| 우도비 | 어느 쪽을 몇 배 지지하는가 | 불필요 | 간접 |
| 베이즈 인자 | 어느 모형이 자료를 더 잘 예측했나 | 필요 | 간접 |
| 신뢰구간 | 효과가 얼마나 큰가 | 불필요 | 직접 |
권고. 신뢰구간을 중심으로 보고하고, \(p\)-값을 덧붙이며, 필요하면 \(s\)-값으로 증거의 강도를 표현한다. 모형 비교가 목적이면 베이즈 인자나 정보기준을 쓴다.
가장 중요한 한 가지. 어떤 지표를 쓰든, \(H_0\) 외의 모든 가정(무작위 표본, 모형, 측정, 결측 처리)이 옳아야 그 값이 의미를 갖는다. \(p\)-값이 작다는 것은 "\(H_0\)이 틀렸다"가 아니라 "이 모형 전체 중 무언가가 자료와 맞지 않는다"는 신호다.
정리하며¶
검정통계량은 관측된 자료가 \(H_0\) 아래에서 얼마나 극단적인지를 하나의 수로 요약한다.
- 구조가 언제나 같다. (추정값 \(-\) 귀무가설 값) \(\div\) 표준오차. \(z\)·\(t\)·\(\chi^2\)·\(F\) 가 갈리는 것은 표준오차를 무엇으로 추정하고 어떤 분포를 참조하느냐뿐이다.
- \(p\) 값은 \(H_0\) 이 참일 확률이 아니다. \(H_0\) 이 참이라고 가정했을 때 이만큼 또는 더 극단적인 자료를 볼 확률이며, 조건이 걸리는 방향이 반대다.
- 두 오류가 맞바꿈 관계다. \(\alpha\) 를 낮추면 제1종 오류는 줄지만 \(\beta\) 가 늘어 검정력 \(1-\beta\) 가 떨어진다. 둘 다 줄이는 유일한 방법은 표본을 늘리는 것이다.
- 작은 \(p\) 값이 큰 효과를 뜻하지 않는다. \(n\) 이 크면 실질적으로 무의미한 차이도 아주 작은 \(p\) 값을 낸다. 효과크기와 신뢰구간을 함께 보아야 한다.
다음 절 유의수준과 판정 규칙으로 넘어간다.