mu_D에 대한 대응 t-검정¶
대응표본 t 검정¶
대응표본 t-검정은 종속표본 t-검정 또는 짝지은 쌍 t-검정이라고도 하며, 한 표본의 관측값을 다른 표본의 관측값과 짝지을 수 있는 두 표본에서 두 모평균을 비교하는 절차이다. 환자-대조군 연구, 반복측정, 처리 전후로 같은 개체를 측정하는 실험 등이 흔한 상황이다.
A. 가설¶
가설은 개별 값이 아니라 짝지은 관측값들의 차이에 초점을 맞춘다:
- 귀무가설 (\(H_0\)): 짝지은 관측값의 평균 차이가 0이다.
$$ H_0: \mu_d = 0 $$
- 대립가설 (\(H_a\)): 짝지은 관측값의 평균 차이가 0이 아니다:
- 양측: \(H_a: \mu_d \neq 0\)
- 단측(큼): \(H_a: \mu_d > 0\)
- 단측(작음): \(H_a: \mu_d < 0\)

이 그림이 대응표본 검정의 전부다. 쌍마다 차이를 하나씩 계산하는 순간 두 표본 문제가 한 표본 문제로 줄어든다. 왼쪽에 남은 것은 수 \(n\)개와 그것들이 0에서 얼마나 떨어져 있는가라는 물음뿐이며, 이는 9.2절의 일표본 t 검정과 같은 물음이다.
그래서 새로 외울 공식이 없다. 아래의 검정통계량은 일표본 t 통계량에 \(\bar X\) 대신 \(\bar d\)를, \(S\) 대신 \(S_d\)를 넣은 것이고, 자유도도 그대로 \(n - 1\)이다. 쌍이 \(n\)개면 관측값은 \(2n\)개지만 자유도는 \(n-1\)이다. 차이를 취하면서 절반을 이미 써 버렸기 때문이다.
B. 검정통계량¶
대응표본 t-검정의 검정통계량은 다음과 같이 계산한다:
여기서 \(\bar{d}\)는 대응표본 차이의 평균, \(s_d\)는 그 차이의 표준편차, \(n\)은 쌍의 개수이다. 이 t-통계량은 자유도 \(n - 1\)인 t-분포를 따른다.
C. 판정 규칙¶
- 양측검정: \(|t| > t_{\alpha/2, n-1}\)이면 \(H_0\)을 기각한다.
- 단측검정(큼): \(t > t_{\alpha, n-1}\)이면 \(H_0\)을 기각한다.
- 단측검정(작음): \(t < -t_{\alpha, n-1}\)이면 \(H_0\)을 기각한다.
D. p-값¶
- 양측검정: \(p\text{-값} = 2P(T \geq |t|)\)
- 단측검정: 방향에 따라 \(p\text{-값} = P(T \geq t)\) 또는 \(p\text{-값} = P(T \leq t)\).
E. 해석¶
- p-값 \(\leq \alpha\)이면 귀무가설을 기각할 통계적으로 유의한 증거가 있으며, 대응 차이의 평균에 유의한 차이가 있음을 뜻한다.
- p-값 \(> \alpha\)이면 귀무가설을 기각할 증거가 부족하다.
보기¶
보기 1. 러닝화. 올림픽 육상팀 감독은 Harpo 신발이 Zeppo 신발보다 기록을 낮출 수 있다고 의심한다. 러너 여섯 명이 각각 두 바퀴(신발마다 한 바퀴)를 달리며, 순서는 동전 던지기로 정한다.
풀이
검정: 대응표본 t 검정
보기 2. 사전/사후 시험 점수.
| 학생 | 사후 | 사전 | 차이 |
|---|---|---|---|
| 1 | 93 | 76 | 17 |
| 2 | 70 | 72 | -2 |
| 3 | 81 | 75 | 6 |
| 4 | 65 | 68 | -3 |
| 5 | 79 | 65 | 14 |
| 6 | 54 | 54 | 0 |
| 7 | 94 | 88 | 6 |
| 8 | 91 | 81 | 10 |
| 9 | 77 | 65 | 12 |
| 10 | 65 | 57 | 8 |
| 11 | 95 | 86 | 9 |
| 12 | 89 | 87 | 2 |
| 13 | 78 | 78 | 0 |
| 14 | 80 | 77 | 3 |
| 15 | 76 | 76 | 0 |
가설:
풀이
import numpy as np
import scipy.stats as stats
data = np.array([[93,76], [70,72], [81,75], [65,68], [79,65],
[54,54], [94,88], [91,81], [77,65], [65,57],
[95,86], [89,87], [78,78], [80,77], [76,76]])
# 짝마다 차이를 만들고 나면 그 뒤로는 완전히 일표본 문제다.
# 사람마다 점수 수준이 54에서 95까지 흩어져 있어도 그 개인차가 여기서 사라진다.
difference = data[:,0] - data[:,1]
x_bar = difference.mean()
mu = 0
s = difference.std(ddof=1)
n = difference.shape[0] # 관측값 30개가 아니라 짝 15개
t = (x_bar - mu) / (s / np.sqrt(n))
p_value = 2 * stats.t(n-1).cdf(-abs(t))
print(f"{t = :.4f}")
print(f"{p_value = :.4f}")
# scipy로 확인. ttest_ind가 아니라 ttest_**rel**이다.
t2, p2 = stats.ttest_rel(data[:,0], data[:,1], alternative="two-sided")
print(f"\nscipy: t = {t2:.4f}, p = {p2:.4f}")
# 짝을 무시하고 독립 이표본으로 다루면 어떻게 되는지 비교한다.
t3, p3 = stats.ttest_ind(data[:,0], data[:,1])
print(f"ttest_ind (틀린 분석): t = {t3:.4f}, p = {p3:.4f}")
출력:
t = 3.4616
p_value = 0.0038
scipy: t = 3.4616, p = 0.0038
ttest_ind (틀린 분석): t = 1.3354, p = 0.1925
같은 자료인데 결론이 정반대다. 대응검정은 \(p = 0.0038\)로 기각하고, 짝을 무시한 검정은 \(p = 0.19\)로 기각하지 못한다.
이유는 산포에 있다. 점수 자체의 표준편차는 사전 12.1점, 사후 10.3점인데 사전-사후 차이의 표준편차는 6.1점뿐이다. 잘하는 학생은 두 번 다 잘하고 못하는 학생은 두 번 다 못하기 때문에, 짝을 지으면 그 개인차가 통째로 상쇄된다. 짝지어진 자료를 독립표본으로 분석하는 것은 검정력을 버리는 일이다.
대응표본 Wilcoxon 부호순위 검정¶
대응표본 Wilcoxon 부호순위 검정은 짝지은 관측값의 중앙값 차이가 0과 유의하게 다른지 판단하는 비모수 검정이다. 자료가 정규성 가정을 만족하지 못할 때 대응 t-검정의 비모수적 대안으로 쓰인다.
핵심 특징¶
- 귀무가설 (\(H_0\)): 대응표본 차이의 중앙값이 0이다.
- 자료 요건: 자료가 짝지어져 있고 연속형이거나 순서형이어야 한다. 쌍 사이의 차이가 대칭으로 분포해야 한다.
검정 절차¶
- 차이를 계산한다: \(d_i = X_i - Y_i\). \(d_i = 0\)인 것은 버린다.
- 절대차이 \(|d_i|\)를 오름차순으로 순위를 매긴다.
- 각 차이의 부호를 해당 순위에 부여한다.
- \(W^+ = \sum(\text{양의 순위})\)와 \(W^- = \sum(\text{음의 순위})\)를 계산한다.
- 검정통계량: \(W = \min(W^+, W^-)\).
- 표본이 크면(\(n > 20\)) 정규근사를 쓴다:
보기 3. 교수법의 개선 효과. 어떤 연구자가 학생 10명에 대해 새 교수법이 시험 점수를 높이는지 검정한다.
- 사전: \([70, 68, 75, 80, 72, 74, 69, 77, 73, 76]\)
- 사후: \([72, 69, 78, 85, 75, 76, 70, 79, 74, 80]\)
차이가 모두 양수이므로(\(d = [2, 1, 3, 5, 3, 2, 1, 2, 1, 4]\)) \(W^+ = 55\), \(W^- = 0\)이 되어 \(W = 0\)이다. \(W = 0 < 8\)(\(n=10\), \(\alpha=0.05\)의 임계값)이므로 \(H_0\)을 기각한다.
풀이
import numpy as np
from scipy.stats import wilcoxon
before = np.array([70, 68, 75, 80, 72, 74, 69, 77, 73, 76])
after = np.array([72, 69, 78, 85, 75, 76, 70, 79, 74, 80])
# 차이가 전부 양수라 음의 순위가 하나도 없다. W = min(W+, W-) = 0이 된다.
stat, p_value = wilcoxon(after, before)
print(f"Test Statistic: {stat}")
print(f"P-value: {p_value}")
alpha = 0.05
if p_value < alpha:
print("Reject H0: Significant improvement in scores.")
else:
print("Fail to reject H0: No significant improvement.")
출력:
Test Statistic: 0.0
P-value: 0.001953125
Reject H0: Significant improvement in scores.
p-값 \(0.001953125 = 1/512 = 2/2^{10}\)이 딱 떨어지는 분수다. 우연이 아니다. \(H_0\) 아래에서 10개의 부호가 각각 반반의 확률로 정해지므로 가능한 부호 배열이 \(2^{10} = 1024\)가지이고, 그중 "모두 같은 방향"인 배열은 양쪽 합해 둘뿐이다. 순위 자료를 다루는 비모수 검정에서는 이렇게 p-값이 조합론적으로 결정된다.
여기서 도달할 수 있는 가장 작은 p-값이 0.00195라는 뜻이기도 하다. \(n = 10\)이면 아무리 결과가 극단적이어도 그보다 작은 p-값은 나올 수 없다.
장점과 한계¶
장점: 정규성을 가정하지 않으며 이상점에 로버스트하다.
한계: 차이 분포의 대칭성을 가정하며, 정규성이 성립할 때는 모수적 검정보다 검정력이 낮다.
맺음말¶
대응표본 t-검정은 관련되거나 종속인 표본 쌍을 비교하는 자료를 분석하는 필수 도구이다. 전후 연구나 같은 피험자가 두 조건에 노출되는 상황에서 특히 유용하다. 이 검정은 피험자 간 변동을 통제하여 검정하려는 처리나 조건의 효과에 더 정확히 초점을 맞추게 해 준다. 대응표본의 종속성을 반영하므로, 대응 설계가 적절한 상황에서는 독립 이표본 검정보다 강력하고 민감한 분석을 제공한다.
연습문제¶
연습문제 1. 운동 프로그램: 참가자 10명을 전후로 측정했다. 차이에서 \(\bar d = 1.7\), \(s_d \approx 0.483\)을 얻었다. \(\alpha = 0.05\)에서 검정하라.
풀이
대응표본이므로 \(t_9\)를 쓴다.
\(t = 1.7/(0.483/\sqrt{10}) = 1.7/0.153 \approx 11.13\).
임계값: \(t_{0.05, 9} = 1.833\) (단측). \(11.13 \gg 1.833\). 압도적으로 기각한다. 운동이 체지방을 유의하게 줄인다.
연습문제 2. 식이요법: 참가자 12명, \(\bar d = 7.5\) mg/dL 감소, \(s_d \approx 2.61\). \(\alpha = 0.05\)에서 검정하라.
풀이
\(t = 7.5/(2.61/\sqrt{12}) = 7.5/0.754 \approx 9.95\).
임계값: \(t_{0.05, 11} = 1.796\). \(9.95 \gg 1.796\). 기각한다. 이 식이요법이 콜레스테롤을 낮춘다.
연습문제 3. 대응이 독립보다 나은 이유. 연습문제 1에서 짝짓기를 무시하고 사전 값 10개와 사후 값 10개를 독립표본으로 취급한다고 하자. 무엇이 달라지는가?
풀이
사전: 평균 28.2, 표준편차 2.66. 사후: 평균 26.5, 표준편차 2.42. 합동 표준편차 ≈ 2.55.
독립 \(t\) = \((28.2 - 26.5)/\sqrt{2.55^2(1/10 + 1/10)} = 1.7/1.14 \approx 1.49\). 임계값(단측, 자유도 18): 1.734. 기각하지 못한다.
대응 분석(\(t \approx 11.1\))은 압도적인 유의성을 주지만 독립 분석(\(t \approx 1.5\))은 탐지하지 못한다.
이유: 피험자 내 상관이 높다(각 피험자의 전후 값이 서로 비슷하다). 대응 분석은 이를 활용하지만 독립 분석은 잡음으로 취급한다.
교훈: 분석은 항상 설계에 맞추라. 짝짓기를 무시하면 정보를 낭비한다.
연습문제 4. 대응 \(t\)-검정의 조건.
풀이
- 확률적으로 짝지은 쌍 / 짝지은 피험자: 적절한 짝짓기(같은 피험자, 쌍둥이, 짝지은 대조군).
- 쌍 사이의 독립성: 피험자들이 서로 영향을 주지 않는다.
- 차이 \(D_i\)의 근사적 정규성: 차이의 Q-Q 그림으로 확인한다.
유의: 사전이나 사후 값 각각이 아니라 차이가 정규여야 한다. 차이가 정규가 아니면 Wilcoxon 부호순위 검정을 쓴다.
연습문제 5. 비모수적 대안으로서의 Wilcoxon 부호순위 검정. 간단히 기술하라.
풀이
대응 자료에서:
- 차이 \(D_i\)를 계산한다.
- \(|D_i|\)의 순위를 매긴다(부호는 무시).
- 양의 차이와 음의 차이의 순위를 각각 더한다.
- 검정통계량: 두 합 중 작은 것(또는 둘 다 임계값과 비교).
\(H_0: \mathrm{median}(D) = 0\) 아래에서 이 검정은 알려진 귀무분포를 갖는다(작은 \(n\)에서는 표로, 큰 \(n\)에서는 정규근사로).
장점: 정규성을 가정하지 않는다. 이상점에 로버스트하다.
단점: 정규성이 성립할 때 대응 \(t\)-검정보다 검정력이 낮다. 해석이 덜 직관적이다.
현대의 실무: 차이가 깨끗하게 정규이면 대응 \(t\), 치우쳤거나 이상점이 잦으면 Wilcoxon.
연습문제 6. 대응과 비대응의 검정력. 피험자들이 상관 \(\rho\)로 짝지어져 있다면 대응 분석에서 \(n\)은 얼마나 작아도 되는가?
풀이
대응 차이의 분산: \(\sigma_D^2 = 2\sigma^2(1 - \rho)\). 비대응: \(2\sigma^2\).
비: \(\sigma_D^2/\sigma_{\text{unp}}^2 = 1 - \rho\).
같은 검정력에 필요한 \(n\)은 분산에 비례하므로:
\(n_{\text{paired}}/n_{\text{unp}} = 1 - \rho\).
\(\rho = 0.5\)이면 대응 분석에 자료가 절반만 필요하다. \(\rho = 0.9\)이면 10분의 1이면 된다.
실무적 함의: 가능하다면 짝짓기가 표본크기 예산을 크게 아껴 준다. 비용이 큰 연구(임상시험)에서 특히 가치가 있다.
연습문제 7. 대응 자료에서 \(t\)·윌콕슨·부호검정의 검정력을 차이의 분포별로 비교하라.
풀이
import numpy as np
from scipy import stats
rng = np.random.default_rng(45)
n, M = 20, 10_000
cases = [("정규", lambda s: rng.normal(0, 1, s), 0.5),
("t(3)", lambda s: rng.standard_t(3, s), 0.5),
("이중지수", lambda s: rng.laplace(0, 1 / np.sqrt(2), s), 0.5),
("로그정규(중심화)",
lambda s: rng.lognormal(0, 1, s) - np.exp(0.5), 0.8)]
print(f"{'차이의 분포':>16s} {'t':>8s} {'윌콕슨':>9s} {'부호':>8s}")
for name, gen, shift in cases:
c = np.zeros(3)
for _ in range(M):
d = gen(n) + shift
c[0] += stats.ttest_1samp(d, 0).pvalue < 0.05
c[1] += stats.wilcoxon(d).pvalue < 0.05
k = int((d > 0).sum())
c[2] += stats.binomtest(k, n, 0.5).pvalue < 0.05
print(f"{name:>16s} {c[0] / M:8.4f} {c[1] / M:9.4f} {c[2] / M:8.4f}")
차이의 분포 t 윌콕슨 부호
정규 0.5623 0.5454 0.3826
t(3) 0.3182 0.3850 0.3297
이중지수 0.5927 0.6669 0.6290
로그정규(중심화) 0.3875 0.2819 0.0753
분포마다 최선이 다르다.
| 차이의 분포 | 최선 | 비고 |
|---|---|---|
| 정규 | \(t\)(0.562) | 윌콕슨이 0.545로 3%포인트만 손해 |
| \(t_3\) | 윌콕슨(0.385) | \(t\)(0.318)보다 21% 강력 |
| 이중지수 | 윌콕슨(0.667) | 부호검정도 0.629로 선전 |
| 로그정규 | \(t\)(0.388) | 윌콕슨 0.282, 부호 0.075 |
마지막 줄이 중요하다. 치우친 분포에서 순위 기반 검정이 오히려 크게 약하다. 세 검정이 다른 모수를 검정하기 때문이다.
- \(t\)는 평균을 검정한다. 중심화한 로그정규에 0.8을 더했으므로 평균이 0.8이다.
- 윌콕슨은 유사중앙값을 검정한다. 그 값이 0.8보다 훨씬 작다.
- 부호검정은 중앙값을 검정하는데, 로그정규의 중앙값이 평균보다 한참 아래라 0에 가깝다. 그래서 검정력이 0.075로 거의 없다.
이것은 검정의 결함이 아니라 대상의 차이다. "로그정규 자료에는 비모수를 쓰라"는 조언이 얼마나 위험한지 보여 준다.
점근상대효율로 정리하면.
| 분포 | \(t\) 대비 윌콕슨 | \(t\) 대비 부호 |
|---|---|---|
| 정규 | 0.955 | 0.637 |
| 균등 | 1.000 | 0.333 |
| 로지스틱 | 1.097 | 0.822 |
| 이중지수 | 1.500 | 2.000 |
| \(t_3\) | 1.62 | 1.62 |
이중지수에서 부호검정이 \(t\)의 두 배다. 중앙값이 이 분포의 최대가능도추정량이기 때문이다.
실무 지침 넷.
- 차이의 분포를 그려 본다. 대칭인가, 꼬리가 두꺼운가, 치우쳤는가.
- 대칭이면 윌콕슨이 안전한 기본값. 정규에서 손실이 4.5%뿐이고 두꺼운 꼬리에서 크게 이긴다.
- 치우쳤고 평균이 관심사면 \(t\)나 부트스트랩. 순위 검정으로 바꾸지 않는다.
- 방법을 사전에 정한다. 자료를 보고 고르면 앞서 본 2단계 절차의 문제가 생긴다.
연습문제 8. 대응 자료에서 한쪽이 결측된 쌍을 어떻게 다루는지 비교하라.
풀이
import numpy as np
from scipy import stats
rng = np.random.default_rng(19)
n, M, rho = 20, 5_000, 0.7
L = np.linalg.cholesky(np.array([[1, rho], [rho, 1]]))
hit_cc = hit_ind = 0
for _ in range(M):
z = rng.standard_normal((n, 2)) @ L.T
x, y = 10 + z[:, 0], 10.5 + z[:, 1] # 참 차이 0.5
miss = rng.random(n) < 0.25 # y 가 25% 결측
d = (y - x)[~miss] # 완전사례 대응 검정
hit_cc += stats.ttest_1samp(d, 0).pvalue < 0.05
yy = y[~miss] # 있는 자료를 다 쓰되 독립으로
hit_ind += stats.ttest_ind(yy, x, equal_var=False).pvalue < 0.05
print(f"완전사례 대응 검정 검정력 {hit_cc / M:.4f}")
print(f"짝 깨고 독립 검정 검정력 {hit_ind / M:.4f}")
완전사례 대응 검정 검정력 0.6380
짝 깨고 독립 검정 검정력 0.2096
완전사례 대응 검정이 세 배 강력하다. 자료의 25%를 버렸는데도 그렇다.
왜 그런가. \(\rho=0.7\)의 이득이 결측으로 잃는 정보보다 훨씬 크다. 쌍 15개의 대응 검정이 \((20,15)\) 두 독립표본보다 정보가 많다.
손익분기. 앞서 본 \(\rho^*\) 계산과 같은 구조다. 결측률 \(q\)에서 완전사례 대응이 유리할 조건은 대략
이다. 결측률보다 상관이 크면 대응을 유지한다. 실무에서는 대개 그렇다.
더 나은 방법 셋.
-
혼합모형. 개체를 임의효과로 두면 모든 관측값을 쓰면서 상관도 반영한다. MAR 아래에서 완전사례보다 효율적이고 편향도 없다.
-
다중대체. 결측값을 여러 번 대체하고 루빈의 규칙으로 결합한다. 보조변수를 대체 모형에 넣을 수 있다.
-
이변량 정규의 최대가능도. 결측이 있어도 직접 적합할 수 있다.
하지 말 것 둘.
- 결측을 평균으로 채우기. 분산을 인위적으로 줄여 \(p\)-값이 작게 나온다.
- 마지막 관측값 이월(LOCF). 편향을 만들고 분산을 과소평가한다. 한때 표준이었으나 지금은 권장되지 않는다.
가장 중요한 것 — 결측 기전. 위 계산은 완전 무작위 결측을 가정했다. 상태가 나빠진 사람이 추적을 놓친다면 완전사례 분석이 편향된다. 결측 여부와 관측 변수의 관계를 반드시 조사한다.
연습문제 9. 대응 검정의 효과크기를 정의하는 여러 방식을 비교하고, 어느 것을 보고해야 하는지 논하라.
풀이
문제. 대응 설계에서는 "표준화"할 표준편차가 여럿이다.
import numpy as np
from scipy import stats
rng = np.random.default_rng(72)
n, rho = 30, 0.7
L = np.linalg.cholesky(np.array([[1, rho], [rho, 1]]))
z = rng.standard_normal((n, 2)) @ L.T
pre = 50 + 10 * z[:, 0]
post = 53 + 10 * z[:, 1]
d = post - pre
sd_d = d.std(ddof=1)
sd_pre = pre.std(ddof=1)
sd_avg = np.sqrt((pre.var(ddof=1) + post.var(ddof=1)) / 2)
r = np.corrcoef(pre, post)[0, 1]
print(f"평균 차이 {d.mean():.4f}")
print(f"SD(차이) {sd_d:.4f}, SD(사전) {sd_pre:.4f}, "
f"SD(평균) {sd_avg:.4f}, r = {r:.4f}")
print()
print(f"d_z = 평균차/SD(차이) = {d.mean() / sd_d:.4f}")
print(f"d_rm = d_z × √(2(1-r)) = "
f"{d.mean() / sd_d * np.sqrt(2 * (1 - r)):.4f}")
print(f"d_av = 평균차/SD(평균) = {d.mean() / sd_avg:.4f}")
print(f"d_pre = 평균차/SD(사전) = {d.mean() / sd_pre:.4f}")
평균 차이 3.1253
SD(차이) 7.0163, SD(사전) 8.5041, SD(평균) 9.0700, r = 0.7060
d_z = 평균차/SD(차이) = 0.4454
d_rm = d_z × √(2(1-r)) = 0.3416
d_av = 평균차/SD(평균) = 0.3446
d_pre = 평균차/SD(사전) = 0.3675
네 값이 0.34에서 0.45까지 걸친다. 같은 자료, 같은 평균 차이인데 30% 차이가 난다.
어느 것이 맞는가 — 목적에 달렸다.
| 지표 | 분모 | 언제 |
|---|---|---|
| \(d_z\) | SD(차이) | 검정력 계산. \(t\) 통계량과 직접 연결 |
| \(d_{av}\) | SD(사전·사후 평균) | 메타분석. 독립설계와 비교 가능 |
| \(d_{pre}\) | SD(사전) | 사전 분포를 기준으로 볼 때 |
| \(d_{rm}\) | 상관 보정 | \(d_{av}\)와 수학적으로 같다 |
핵심 — 메타분석에는 \(d_{av}\)를 쓴다. \(d_z\)는 \(\rho\)에 의존하므로, 상관이 다른 연구끼리 비교할 수 없다. \(\rho\)가 클수록 \(d_z\)가 커진다.
\(\rho=0.9\)면 \(d_z\)가 \(d_{av}\)의 2.24배다. 같은 효과인데 상관이 큰 연구가 "더 큰 효과"로 보인다.
for rho_v in [0.0, 0.5, 0.7, 0.9, 0.95]:
print(f"ρ = {rho_v:.2f}: d_z / d_av = "
f"{1 / np.sqrt(2 * (1 - rho_v)):.3f}")
ρ = 0.00: d_z / d_av = 0.707
ρ = 0.50: d_z / d_av = 1.000
ρ = 0.70: d_z / d_av = 1.291
ρ = 0.90: d_z / d_av = 2.236
ρ = 0.95: d_z / d_av = 3.162
보고 권고.
- 원 척도의 평균 차이와 구간을 우선 보고한다. "3.13점(95% CI 0.51~5.75)"이 가장 유익하다.
- 표준화 효과크기를 적을 때는 어느 판인지 명시한다. "\(d_{av}=0.34\)"처럼.
- 상관 \(r\)을 반드시 보고한다. 이것이 있어야 다른 판으로 변환할 수 있고, 후속 연구의 표본크기 계산에 쓸 수 있다.
- 사전·사후의 평균과 SD를 모두 적는다. 메타분석에 필요하다.
연습문제 10. 대응 검정의 결과를 보고하는 양식을 만들고, 흔한 잘못을 지적하라.
풀이
보고할 것 여덟.
- 설계. 무엇을 무엇과 짝지었는가. 전후인가, 교차인가, 짝지은 대조군인가.
- 각 조건의 요약. 평균과 SD를 조건별로.
- 차이의 요약. \(\bar d\), \(s_d\), 그리고 상관 \(r\).
- 검정통계량과 자유도. \(t(29)=2.44\).
- \(p\)-값과 단측/양측.
- 차이의 신뢰구간. 원 척도로.
- 효과크기. 어느 판인지 명시.
- 가정 확인. 차이의 정규성, 이상치.
좋은 보고의 예.
참가자 30명의 점수는 개입 전 49.1(SD 8.5), 개입 후 52.2(SD 9.6)였고, 사전·사후 상관은 0.71이었다. 평균 차이는 3.13점(SD 7.02)으로, 대응 \(t\) 검정에서 \(t(29)=2.44\), 양측 \(p=0.021\)이었다. 차이의 95% 신뢰구간은 0.51~5.75점, \(d_{av}\)는 0.34(95% CI 0.05~0.63)이다. 차이의 Q-Q 그림에서 정규성 위배는 보이지 않았고(왜도 \(-0.26\)), 윌콕슨 부호순위 검정도 같은 결론을 주었다(\(p=0.026\)). 임상적으로 의미 있다고 보는 5점 차이가 구간에 포함되므로, 효과의 실무적 크기는 확정하기 어렵다.
흔한 잘못 일곱.
| 잘못 | 왜 문제인가 |
|---|---|
| 사전·사후 SD만 적고 \(s_d\)를 안 적음 | 재계산이 불가능하다 |
| 상관 \(r\)을 안 적음 | 메타분석과 후속 설계에 필수 |
| 사전·사후 각각의 정규성을 검정 | 차이의 정규성이 필요하다 |
| 대응 자료를 독립 \(t\)로 분석 | 앞서 본 대로 검정력을 크게 잃는다 |
| 독립 자료를 대응으로 분석 | 짝짓기 근거가 없으면 무효 |
| 효과크기 판을 명시하지 않음 | 0.36과 0.45가 뒤섞인다 |
| 대조군 없는 전후 비교를 인과로 해석 | 평균회귀와 시간효과가 섞여 있다 |
마지막 항목이 가장 중요하다. 대조군 없는 전후 설계에서
이며, 통계는 이 넷을 분리하지 못한다. 대응 \(t\) 검정이 유의해도 "처리가 효과가 있다"고 말할 수 없다.
보고에 반드시 넣을 한 문장.
이 연구는 대조군이 없는 전후 설계이므로, 관측된 변화에는 처리효과 외에 시간 경과, 평균회귀, 기대효과가 섞여 있을 수 있다. 인과적 해석에는 대조군을 둔 후속 연구가 필요하다.
이 문장이 없는 전후 연구는 대부분 과잉해석되어 있다.
정리하며¶
대응 \(t\) 검정은 차이를 만들어 일표본 문제로 바꾼다.
- 가설이 개별 값이 아니라 차이에 대한 것이다. 두 측정의 평균을 각각 다루지 않고 짝별 차이 하나만 본다.
- 자유도는 쌍의 개수에서 하나를 뺀 \(n-1\) 이다. 관측 총수 \(2n\) 이 아니다.
- 피험자 간 변동이 뺄셈으로 사라진다. 개인차가 클수록 이득이 크며, 그것이 이 설계를 쓰는 이유다.
- 차이의 정규성만 가정한다. 원래 두 측정이 각각 정규일 필요는 없다.
- 짝을 깨뜨리면 안 된다. 자료를 섞어 독립 이표본으로 다루는 순간 짝짓기의 정보가 통째로 버려진다.
다음 절 대응표본과 이표본, 언제 무엇을 쓰는가에서 그 선택의 기준을 정리한다.