Levene 검정 정규 대 치우친 분포 모의실험¶
개요¶
중앙값 중심 Levene 검정(Brown-Forsythe 변형)은 비정규성에 로버스트하다는 이유로 분산 동일성 검정에 자주 권장된다. 이 페이지는 정규 자료와 치우친(대수정규) 자료 모두에서 중앙값 중심 Levene 검정의 제1종 오류율을 몬테카를로 모의실험으로 조사한다. 목표는 서로 다른 분포 설정에 걸쳐 이 검정이 명목 크기 \(\alpha = 0.05\)를 유지하는지 확인하는 것이다.
모의실험 설계¶
모의실험은 다음과 같이 진행된다.
- 정규분포 또는 대수정규분포에서 모수가 모두 같은 크기 \(n\)인 집단 \(k = 3\)개를 생성한다(\(H_0\)이 성립한다).
- 수준 \(\alpha = 0.05\)에서 중앙값 중심 Levene 검정을 적용한다.
- \(H_0\)이 기각되었는지 기록한다.
- \(B\)번 반복하여 경험적 제1종 오류율을 계산한다.
검정이 잘 보정되어 있다면 분포와 무관하게 기각률이 0.05에 가까워야 한다.
보기 1. 모집단 모양에 따른 제1종 오류율. 세 집단을 같은 모집단에서 뽑아(\(H_0\) 이 참이다) 중앙값 중심 Levene 검정을 \(5000\) 번 돌린다. 집단당 \(n = 20\), \(\alpha = 0.05\) 다.
(1) 이론이 예측하는 기각률은 얼마인가. \(B = 5000\) 번 반복의 몬테카를로 표준오차를 계산하고, "로버스트하다"는 주장이 이 표에서 어떤 모습으로 나타나야 하는지 미리 적으시오.
(2) 돌려서 확인하고, 두 수치의 차이가 몬테카를로 오차 안인지 수로 판정하시오. 명목값 \(0.05\) 와의 거리도 같은 자로 재시오. 또 모집단을 다섯으로 늘려 Bartlett 과 나란히 두고, 두 검정의 크기가 흔들리는 폭을 견주시오.
풀이
(1) 이론값은 명목값 그대로다. 세 집단이 같은 모집단에서 나왔으니 \(\sigma_1^2 = \sigma_2^2 = \sigma_3^2\) 이고 \(H_0\) 이 참이다. 검정이 제대로 보정되어 있다면
여야 한다. 여기에 모집단이 무엇인지는 들어오지 않는다. 그것이 이 모의실험이 묻는 것이다.
몬테카를로 표준오차. 기각 여부는 베르누이 시행이고 \(B\) 번의 반복이 독립이므로 기각률 \(\hat p\) 의 표준오차는
이다. 그러므로 \(0.05\) 에서 \(\pm 0.006\) 바깥의 값은 우연으로 설명되지 않는다. 두 모집단의 기각률 차이를 재려면 두 분산을 더해야 하므로 그 표준오차는 \(\sqrt2\) 배인 \(0.0044\) 쯤이다.
"로버스트하다"가 무슨 모습이어야 하는가. 두 가지를 구별해 두어야 한다.
- 크기가 명목값과 같다 — 두 수치가 모두 \(0.05 \pm 0.006\) 안에 있어야 한다.
- 크기가 모집단에 의존하지 않는다 — 두 수치의 차이가 \(0\) 과 구별되지 않아야 한다.
둘은 다른 주장이고, 로버스트성이 뜻하는 것은 뒤쪽이다. 모집단을 완전히 바꾸었는데도 성능이 그대로라는 것이 로버스트성이며, 그 성능이 명목값과 정확히 같은지는 별개의 문제다.
대조군이 왜 필요한지도 여기서 분명해진다. 분산 검정에는 중심극한정리의 보호가 없다. 5.3절은 정규성이 깨지면 \(F\) 검정의 극한 오류율이 모집단 첨도 \(\beta_2\) 만의 함수
로 가고 표본을 키워도 낫지 않는다는 것까지 유도해 두었다(정규 \(0.050\), 균등 \(0.002\), 지수 \(0.327\), 로그정규 \(0.794\)). 모집단이 바뀌면 크기가 바뀌는 것이 정규 이론 검정의 기본 성질이라는 뜻이다. 로버스트 검정의 표가 그 성질에서 벗어나는지를 보는 것이 이 보기의 전부다.
(2) 돌린다.
import numpy as np
from scipy import stats
from scipy.stats import levene
rng = np.random.default_rng(0)
def simulate_once(n=20, dist="normal"):
"""주어진 분포에서 세 집단을 만들어 검정하고 p-값을 돌려준다.
셋 다 같은 모수를 쓰므로 분산은 참으로 같다. 그러니 기각 비율이
0.05 근처로 나와야 옳다.
"""
if dist == "normal":
g1 = rng.normal(0, 1.0, size=n)
g2 = rng.normal(0, 1.0, size=n)
g3 = rng.normal(0, 1.0, size=n)
else:
g1 = rng.lognormal(0, 1.0, size=n)
g2 = rng.lognormal(0, 1.0, size=n)
g3 = rng.lognormal(0, 1.0, size=n)
_, p = levene(g1, g2, g3, center='median')
return p
# 정규와 로그정규에서 각각 돌려 본다. Bartlett 이라면 로그정규에서
# 오류율이 크게 부풀지만, 중앙값 중심 방법은 0.05 근처를 지킨다.
alpha = 0.05
n_sims = 5000
rate = {}
for dist in ["normal", "lognormal"]:
pvals = [simulate_once(20, dist) for _ in range(n_sims)]
type1 = np.mean(np.array(pvals) < alpha)
rate[dist] = type1
print(f"Type I error (median-centered) under {dist}: {type1:.4f}")
# (1) 의 두 자로 잰다. 명목값과의 거리, 그리고 두 수치 사이의 거리.
print(f"\n몬테카를로 표준오차 (p = 0.05, B = {n_sims}): "
f"{np.sqrt(0.05 * 0.95 / n_sims):.5f}")
for dist in ["normal", "lognormal"]:
p = rate[dist]
se = np.sqrt(p * (1 - p) / n_sims)
print(f" {dist:>10}: {p:.4f} SE {se:.5f} "
f"-> 0.05 로부터 {(p - 0.05) / se:+.2f} SE")
d = rate["lognormal"] - rate["normal"]
se_d = np.sqrt(sum(rate[k] * (1 - rate[k]) / n_sims for k in rate))
print(f" 두 수치의 차 {d:+.4f}, 그 SE {se_d:.5f} -> {d / se_d:+.2f} SE")
# 모집단을 다섯으로 늘려 Bartlett 과 나란히 둔다. 같은 자료, 같은 반복수.
rng2 = np.random.default_rng(7)
n = 20
pops = [
("정규 N(0,1)", lambda m: rng2.normal(0, 1, (m, n)), 3.0),
("균등 U(0,1)", lambda m: rng2.uniform(0, 1, (m, n)), 1.8),
("지수 Exp(1)", lambda m: rng2.exponential(1, (m, n)), 9.0),
("t(5)", lambda m: rng2.standard_t(5, (m, n)), 9.0),
("로그정규 LN(0,1)", lambda m: rng2.lognormal(0, 1, (m, n)), 113.94),
]
print(f"\n{'모집단':>18}{'beta2':>9}{'BF 크기':>10}{'Bartlett':>10}")
bf, ba = [], []
for name, draw, b2 in pops:
A, B, C = draw(n_sims), draw(n_sims), draw(n_sims)
r_bf = r_ba = 0
for i in range(n_sims):
g = (A[i], B[i], C[i])
if stats.levene(*g, center="median")[1] < alpha:
r_bf += 1
if stats.bartlett(*g)[1] < alpha:
r_ba += 1
bf.append(r_bf / n_sims)
ba.append(r_ba / n_sims)
print(f"{name:>18}{b2:>9.1f}{r_bf / n_sims:>10.4f}{r_ba / n_sims:>10.4f}")
print(f"{'폭 (최대 - 최소)':>27}{max(bf) - min(bf):>10.4f}{max(ba) - min(ba):>10.4f}")
출력:
Type I error (median-centered) under normal: 0.0370
Type I error (median-centered) under lognormal: 0.0374
몬테카를로 표준오차 (p = 0.05, B = 5000): 0.00308
normal: 0.0370 SE 0.00267 -> 0.05 로부터 -4.87 SE
lognormal: 0.0374 SE 0.00268 -> 0.05 로부터 -4.70 SE
두 수치의 차 +0.0004, 그 SE 0.00379 -> +0.11 SE
모집단 beta2 BF 크기 Bartlett
정규 N(0,1) 3.0 0.0370 0.0518
균등 U(0,1) 1.8 0.0286 0.0032
지수 Exp(1) 9.0 0.0458 0.3922
t(5) 9.0 0.0422 0.2280
로그정규 LN(0,1) 113.9 0.0382 0.6866
폭 (최대 - 최소) 0.0172 0.6834
(1)에서 구별해 둔 두 주장이 서로 다른 답을 받는다.
모집단 의존성은 없다. 두 수치의 차가 \(+0.0004\) 이고 그 표준오차가 \(0.00379\) 이므로 \(+0.11\) 표준오차다. 모집단을 \(N(0,1)\) 에서 왜도 \(6.185\) 의 로그정규로 통째로 갈아 끼웠는데 크기가 전혀 움직이지 않았다. 이것이 로버스트성의 정확한 모습이다.
그러나 크기가 명목값과 같지는 않다. 두 수치가 \(0.05\) 에서 각각 \(-4.87\), \(-4.70\) 표준오차 떨어져 있다. 몬테카를로 오차로 설명할 수 있는 거리가 아니므로 이 보수성은 실재한다. \(0.037\) 은 \(0.05\) 의 \(74\%\) 다. 유한표본에서 중앙값을 추정하는 데 쓴 자유도가 \(F(2, 57)\) 이라는 기준분포에 반영되지 않아 생기는 것이며, 연습문제 2 에서 \(n\) 을 키우면 \(0.0378 \to 0.0462\) 로 명목선을 향해 올라가는 것이 그 증거다. 근사 오차이지 모형 오설정이 아니다.
다섯 모집단 표가 그 대조를 완성한다. 첨도가 \(1.8\) 에서 \(113.9\) 까지, 예순 배 넘게 벌어지는 다섯 모집단에서
- 중앙값 중심 Levene 의 크기는 \(0.0286\) 에서 \(0.0458\) 사이, 폭 \(0.017\)
- Bartlett 의 크기는 \(0.0032\) 에서 \(0.6866\) 사이, 폭 \(0.683\)
이다. 폭의 비가 사십 배다. Bartlett 은 정규에서 \(0.0518\) 로 정확하지만 균등에서 \(0.0032\) 로 지나치게 보수적이고 로그정규에서 \(0.6866\) 으로 폭발한다. 등분산인 세 집단의 \(69\%\) 에서 "분산이 다르다"고 답한다는 뜻이다. 15.4절이 같은 조건에서 \(0.675\) 를 보고했고 이 쪽의 \(0.6866\) 과 몬테카를로 오차 안에서 맞는다.
표에 한 가지 유보가 있다. 지수와 \(t(5)\) 는 첨도가 둘 다 \(\beta_2 = 9\) 인데 Bartlett 의 크기가 \(0.3922\) 와 \(0.2280\) 으로 다르다. 첨도만으로 크기가 정해진다는 것은 \(n \to \infty\) 의 이야기이고, \(n = 20\) 에서는 아직 거기에 이르지 않았다. 특히 \(t(5)\) 는 4차 적률이 간신히 존재하는 정도여서 표본첨도가 표본마다 크게 흔들리고 수렴이 느리다. 이 표는 "\(n = 20\) 에서 이렇다"는 측정이며 극한값이 아니다.
해석¶
- 정규 자료에서 기각률이 \(0.037\)로 0.05에 가깝다. 다소 보수적이다.
- 대수정규 자료에서도 \(0.0374\)로 사실상 동일하다. 중앙값 중심 Levene 검정의 로버스트성을 잘 보여준다.
- 같은 대수정규 상황에서 Bartlett 검정이 \(0.675\)의 기각률을 보이는 것과 극명하게 대비된다(15.4절 Bartlett 검정 비정규성 민감도).
- 중앙값 중심 변형이 로버스트성을 얻는 것은 중앙값이 대수정규분포 오른쪽 꼬리의 극단값에 영향받지 않기 때문이다.
두 수치가 거의 같다는 사실이 핵심이다
정규 \(0.0370\)과 대수정규 \(0.0374\)의 차이는 몬테카를로 오차(\(\sqrt{0.037 \times 0.963/5000} = 0.0027\)) 안에 있다. 곧 분포가 완전히 바뀌었는데도 검정의 크기가 전혀 변하지 않았다.
이것이 "로버스트"의 정확한 의미이다. 절대적으로 정확하다는 뜻이 아니라(둘 다 0.05가 아니라 0.037이다), 분포가 바뀌어도 성능이 변하지 않는다는 뜻이다.
\(0.037\)이라는 약간의 보수성은 15.5절 로버스트 검정 연습문제 4에서 논한 자유도 문제에서 온다. 중앙값을 추정하는 데 쓴 자유도가 \(F\) 기준분포에 반영되지 않기 때문이다.
두 검정의 성격 차이는 표본크기를 키워 보면 가장 선명하게 드러난다. 같은 대수정규 자료에서 표본을 늘렸을 때 두 검정이 어디로 가는지 보자.

초록(브라운–포사이드)은 \(n = 10\)의 \(0.0378\)에서 \(n = 100\)의 \(0.0462\)로 명목선 0.05를 향해 올라간다. 위에서 본 보수성이 표본과 함께 사라지는 것이다. 자유도 손실이나 \(\bar{Z}_i\)의 정규근사 오차는 모두 유한표본 현상이므로 \(n\)이 커지면 자연히 잦아든다.
빨강(바틀렛)은 정반대다. \(n = 20\)에서 \(0.675\), \(n = 30\)에서 \(0.732\), \(n = 100\)에서 \(0.813\)으로 표본을 키울수록 나빠진다. 자료를 100개씩 모아도 등분산인 세 집단의 81%에서 "분산이 다르다"고 답한다.
이 방향의 차이가 두 오차의 성격을 가른다. 브라운–포사이드가 가진 것은 근사 오차다. 기준분포가 옳고 유한표본에서만 살짝 어긋나므로 \(n\)이 그것을 고친다. 바틀렛이 가진 것은 모형 오설정이다. \(\chi^2_{k-1}\)이라는 기준분포 자체가 대수정규 자료에 대해 틀렸고, \(n\)을 키우면 틀린 기준분포가 더 좁아질 뿐이므로 불일치의 상대적 크기가 오히려 커진다.
실무에서 새겨야 할 교훈은 이렇다. "표본이 크니 괜찮겠지"는 정규성 가정에 통하지 않는다. 표본크기가 구해 주는 것은 근사 오차이지 잘못된 모형이 아니다.
연습문제¶
연습문제 1. 평균 중심 Levene 검정의 제1종 오류도 계산하도록 모의실험을 확장하라. 대수정규 자료에서 두 중심화 방식을 비교하라.
풀이
import numpy as np
from scipy.stats import levene
rng = np.random.default_rng(0)
n_sims, n, alpha = 5000, 20, 0.05
for center in ['mean', 'median']:
rej = 0
for _ in range(n_sims):
g1 = rng.lognormal(0, 1, n)
g2 = rng.lognormal(0, 1, n)
g3 = rng.lognormal(0, 1, n)
_, p = levene(g1, g2, g3, center=center)
if p < alpha:
rej += 1
print(f"Levene ({center:6s}): Type I error = {rej/n_sims:.4f}")
출력:
Levene (mean ): Type I error = 0.2470
Levene (median): Type I error = 0.0374
평균 중심 판의 기각률이 \(0.247\)로 명목값의 다섯 배이다. 중앙값 중심 판은 \(0.037\)로 안정적이다. 6.6배 차이이다.
차이는 평균이 무거운 오른쪽 꼬리 쪽으로 끌려가는 데서 생긴다. \(\text{Lognormal}(0,1)\)의 왜도가 \(6.185\)로 극단적이므로 표본평균이 표본마다 크게 흔들리고, 그 흔들림이 그 집단의 모든 절대편차에 전파된다. 집단별 \(\bar{Z}_i\)가 실제보다 흩어져 F 통계량의 분자가 부풀려진다.
중앙값은 붕괴점이 50%이므로 극단값에 흔들리지 않고, 이 연쇄가 끊어진다. \(\square\)
연습문제 2. 집단 크기를 \(n \in \{10, 20, 50, 100\}\)으로 바꿔가며 대수정규 자료에서 중앙값 중심 Levene 검정의 제1종 오류율을 그려라. 표본이 커지면 개선되는가?
풀이
import numpy as np
from scipy.stats import levene
import matplotlib.pyplot as plt
rng = np.random.default_rng(0)
n_sims, alpha = 5000, 0.05
sizes = [10, 20, 50, 100]
rates = []
for n in sizes:
rej = 0
for _ in range(n_sims):
g1 = rng.lognormal(0, 1, n)
g2 = rng.lognormal(0, 1, n)
g3 = rng.lognormal(0, 1, n)
_, p = levene(g1, g2, g3, center='median')
if p < alpha:
rej += 1
rates.append(rej / n_sims)
print(f"n={n:4d}: Type I error = {rej/n_sims:.4f}")
plt.figure(figsize=(6, 3))
plt.plot(sizes, rates, "o-")
plt.axhline(0.05, ls="--", color="red")
plt.xlabel("Group size n")
plt.ylabel("Type I error rate")
plt.title("Brown-Forsythe under lognormal data")
plt.tight_layout()
plt.show()
출력:
n= 10: Type I error = 0.0378
n= 20: Type I error = 0.0382
n= 50: Type I error = 0.0420
n= 100: Type I error = 0.0462

| \(n\) | 10 | 20 | 50 | 100 |
|---|---|---|---|---|
| 제1종 오류 | 0.038 | 0.038 | 0.042 | 0.046 |
모든 표본크기에서 0.05 근처를 유지하며, \(n\)이 커질수록 0.05에 더 가까워진다.
작은 \(n\)에서 다소 보수적인 것은 (1) 중앙값 추정에 쓴 자유도가 \(F\) 기준분포에 반영되지 않고, (2) \(\bar{Z}_i\)의 정규근사가 아직 정확하지 않기 때문이다. \(n\)이 커지면서 두 효과가 모두 사라진다.
Bartlett과의 대비가 결정적이다. 같은 자료에서 Bartlett은 \(n\)이 커질수록 악화되어 \(0.675 \to 0.813\)이었다(15.4절 Bartlett 검정 비정규성 민감도 연습문제 2). Brown-Forsythe는 개선된다.
이 방향의 차이가 두 검정의 근본적 성격을 드러낸다. Brown-Forsythe의 편차는 유한표본 근사 오차이므로 \(n\)과 함께 사라지지만, Bartlett의 편차는 모형 오설정이므로 \(n\)과 함께 커진다. \(\square\)
연습문제 3. \(t(3)\) 분포(대칭이지만 꼬리가 두꺼움) 자료로 모의실험을 반복하라. 중앙값 중심 Levene 검정이 평균 중심 판에 비해 어떻게 작동하는가?
풀이
import numpy as np
from scipy.stats import levene, t as tdist
rng = np.random.default_rng(0)
n_sims, n, alpha = 5000, 20, 0.05
for center in ['mean', 'median']:
rej = 0
for _ in range(n_sims):
g1 = tdist(df=3).rvs(n, random_state=rng)
g2 = tdist(df=3).rvs(n, random_state=rng)
g3 = tdist(df=3).rvs(n, random_state=rng)
_, p = levene(g1, g2, g3, center=center)
if p < alpha:
rej += 1
print(f"t(3), Levene ({center:6s}): {rej/n_sims:.4f}")
출력:
t(3), Levene (mean ): 0.0640
t(3), Levene (median): 0.0340
대칭인 두꺼운 꼬리(\(t(3)\))에서 두 중심화가 모두 비교적 잘 작동한다. 평균과 중앙값이 모두 0이기 때문이다.
| 자료 | Levene (평균) | Brown-Forsythe |
|---|---|---|
| \(t(3)\) (대칭, 두꺼운 꼬리) | 0.064 | 0.034 |
| Lognormal (치우침) | 0.247 | 0.037 |
대비가 결정적이다. 평균 중심 판은 \(t(3)\)에서 \(0.064\)로 약간만 부풀려지지만 대수정규에서는 \(0.247\)로 폭발한다. 두 분포 모두 꼬리가 극도로 두꺼운데도 그렇다(\(t(3)\)은 초과첨도가 무한대이다).
곧 평균 중심화가 무너지는 것은 첨도 때문이 아니라 치우침 때문이다. 이는 15.5절 대수정규에서의 비교에서 반복 확인한 결론이다.
중앙값 중심 판이 \(t(3)\)에서 \(0.034\)로 다소 보수적인 것은 극단값이 많은 자료에서 중앙값 중심 편차의 집단내 변동이 커져 F 통계량의 분모가 부풀려지기 때문이다. 로버스트성의 대가로 약간의 검정력을 내준다. \(\square\)
연습문제 4. 원자료가 비정규여도 Levene 검정통계량의 \(F\) 분포 근사가 타당한 이유를 설명하라.
풀이
Levene 검정은 원래의 \(X_{ij}\)가 아니라 변환된 관측값 \(Z_{ij} = |X_{ij} - c_i|\)에 일원분산분석 F 검정을 적용한다. \(X_{ij}\)가 비정규여도 중심극한정리에 의해 \(n\)이 어느 정도면 집단평균 \(\bar{Z}_{i\cdot}\)이 근사적으로 정규이고, \(Z_{ij}\)로 계산한 F 통계량이 근사적으로 \(F(k-1, N-k)\) 분포를 따른다.
나아가 절대편차 변환은 분산안정화 연산이다. 문제를 분산 비교(정확한 이론에 정규성이 필요하다)에서 평균 비교(중심극한정리 덕분에 로버스트하다)로 옮긴다. 분산분석 F 검정은 균형 설계와 적당한 표본크기에서 입력 자료의 중간 정도 비정규성에 로버스트한 것으로 알려져 있다.
더 근본적인 이유: 필요한 적률의 차수가 낮아진다. 15.5절 Levene 검정 연습문제 4에서 보았듯
이므로 원자료의 2차 적률만 필요하다. Bartlett과 F 검정이 4차 적률(첨도)을 요구하는 것과 대조된다.
4차 적률은 꼬리가 조금만 두꺼워져도 폭발하거나 아예 존재하지 않지만(\(t_5\)의 8차 적률처럼), 2차 적률은 분산이 유한한 어떤 분포에서든 존재하고 안정적이다.
한계도 명확하다. 이 논거는 (1) \(n\)이 중심극한정리가 작동할 만큼 크고, (2) \(c_i\)의 추정이 안정적일 때만 성립한다. 연습문제 1에서 보았듯 평균을 \(c_i\)로 쓰고 자료가 강하게 치우쳐 있으면 (2)가 깨져 근사가 무너진다. \(\square\)
연습문제 5. 집단 \(\sigma\) 모수가 \((1.0, 1.0, 1.5)\)인 대수정규 자료(분산이 실제로 다르다)에서 중앙값 중심 Levene 검정의 검정력을 추정하는 모의실험을 설계하라. 같은 표준편차의 정규 자료에서의 검정력과 비교하라.
풀이
import numpy as np
from scipy.stats import levene
rng = np.random.default_rng(0)
n_sims, n, alpha = 5000, 30, 0.05
for dist in ["normal", "lognormal"]:
rej = 0
for _ in range(n_sims):
if dist == "normal":
g1 = rng.normal(0, 1.0, n)
g2 = rng.normal(0, 1.0, n)
g3 = rng.normal(0, 1.5, n)
else:
g1 = rng.lognormal(0, 1.0, n)
g2 = rng.lognormal(0, 1.0, n)
g3 = rng.lognormal(0, 1.5, n)
_, p = levene(g1, g2, g3, center='median')
if p < alpha:
rej += 1
print(f"{dist:10s}: power = {rej/n_sims:.4f}")
출력:
normal : power = 0.5122
lognormal : power = 0.2086
두 검정력을 직접 비교할 수 없다
정규 \(0.512\)와 대수정규 \(0.209\)의 차이가 "대수정규에서 검정력이 낮다"를 뜻하는 것처럼 보이지만, 두 설정의 참 분산비가 완전히 다르다.
- 정규: \(\sigma = (1, 1, 1.5)\)이므로 분산비가 \(1 : 1 : 2.25\)이다.
- 대수정규: \(\sigma\)는 로그 척도의 모수이다. 실제 분산은 \((e^{\sigma^2}-1)e^{\sigma^2}\)이므로
분산비가 \(1 : 1 : 17.2\)로 정규 설정의 일곱 배 이상이다.
곧 대수정규 설정은 훨씬 큰 분산 차이를 훨씬 낮은 검정력으로 탐지하고 있다. 검정력 손실이 실제로는 표에 보이는 것보다 훨씬 크다.
왜 그렇게 어려운가. 대수정규에서 \(\sigma\)가 커지면 분산만 커지는 것이 아니라 분포 모양 자체가 바뀐다. \(\sigma = 1.5\)이면 왜도가 \(33.5\), 초과첨도가 약 \(10{,}075\)로 극단적이다. 중앙값 중심 편차의 분포가 심하게 치우쳐 있어 \(\bar{Z}_i\)의 정규근사가 나쁘고, F 검정의 검정력이 크게 떨어진다.
중요한 점은 검정력이 "정직하다"는 것이다. 본문에서 확인했듯 제1종 오류율이 통제되어 있으므로, 기각이 일어났다면 그것은 진짜 분산 불균등의 탐지이다. Bartlett의 높은 기각률은 그런 보장이 없다.
실무 지침. 강하게 치우친 자료에서 분산을 비교해야 한다면, 로그 변환 후 검정하는 편이 검정력에서 훨씬 유리하다. \(\ln X \sim \mathcal{N}(0, \sigma^2)\)이므로 로그 척도에서는 정규 자료가 되고 분산비가 \(1 : 1 : 2.25\)인 문제로 환원된다. \(\square\)
정리하며¶
중앙값 중심 레빈의 제1종 오류율을 직접 확인했다.
- 정규 자료에서 명목 \(5\%\) 를 지킨다. 기본적인 타당성 확인이다.
- 로그정규 자료에서도 지킨다. 이것이 핵심 결과이며, 같은 조건에서 바틀렛이 무너지는 것과 대조된다.
- 표본크기를 바꿔 가며 확인하는 것이 중요하다. 소표본에서는 어떤 검정이든 근사가 불안할 수 있다.
- 집단 수와 불균형도 변수다. \(k\) 가 크거나 표본크기가 크게 다르면 오류율이 조금 흔들릴 수 있다.
- "로버스트하다"를 수치로 보여 주는 절이다. 주장과 증거를 나란히 두는 것이 이 책의 방식이다.
다음 절 Brown-Forsythe (코드) 로 넘어간다.