모수 검정과 비모수 검정의 차이
모수 검정 (Parametric test)
모집단이 특정 분포(주로 정규분포)를 따른다고 가정하고 분석하는 방법입니다.
이 가정이 충족될 때 통계적 검정력이 높습니다. t-검정, ANOVA, 선형 회귀 등이 여기에 해당합니다.
모수 검정을 사용하려면 일반적으로 다음 조건이 필요합니다.
- 데이터가 정규분포를 따르거나, 표본 크기가 충분히 커서 중심극한정리가 적용됨
- 비교하는 집단 간 분산이 동일함 (등분산성)
- 관측값이 서로 독립적임
비모수 검정 (Non-parametric test)
특정 분포를 가정하지 않는 방법입니다. 데이터의 실제 값 대신 순위(rank)를 기반으로 분석하는 경우가 많습니다. Wilcoxon test, Kruskal-Wallis test 등이 여기에 해당합니다.
모수 검정의 가정이 충족되지 않을 때 사용합니다. 표본 크기가 작거나, 데이터가 정규분포를 따르지 않거나, 이상값이 많거나, 순서형 데이터를 다룰 때 선택합니다.
비모수 검정은 분포 가정이 없는 대신 모수 검정보다 검정력이 낮습니다. 같은 데이터에서 모수 검정의 가정이 충족된다면 비모수 검정보다 모수 검정이 더 강력합니다.
정규성 검정
모수 검정을 적용하기 전에 데이터가 정규분포를 따르는지 확인합니다.
Shapiro-Wilk test
표본 크기가 작을 때(일반적으로 n < 50) 적합한 정규성 검정입니다.
정규분포에서 벗어나는 정도를 민감하게 탐지합니다.
- H₀: 데이터가 정규분포를 따른다
- p > 0.05: 정규분포를 따른다고 볼 수 있음 (H₀ 기각 실패)
- p < 0.05: 정규분포를 따르지 않음 (H₀ 기각)
Kolmogorov-Smirnov test (K-S test)
표본의 누적분포함수와 이론적 정규분포의 누적분포함수 간의 최대 차이를 검정 통계량으로 사용합니다.
표본 크기가 클 때 더 적합합니다.
R에서는 ks.test()를 사용하며, 정규분포 검정 시 평균과 표준편차를 함께 지정해야 합니다.
단, 표본에서 추정한 모수를 사용하는 경우 Lilliefors 보정이 필요합니다.
정규성 검정의 한계
표본 크기가 매우 크면 실질적으로 정규분포에 가까운 데이터도 미세한 차이로 인해 p < 0.05가 나올 수 있습니다.
반대로 표본이 작으면 정규분포를 많이 벗어나도 p > 0.05가 나올 수 있습니다.
따라서 정규성 검정 결과만으로 판단하기보다 Q-Q plot(Quantile-Quantile plot)이나 히스토그램으로 분포를 시각적으로 함께 확인하는 것이 좋습니다.
Q-Q plot에서 데이터 포인트가 대각선에 가까울수록 정규분포에 가깝습니다.
등분산 검정
두 집단 이상을 비교하는 모수 검정(독립 표본 t-검정, ANOVA)은 각 집단의 분산이 동일하다는 등분산성 가정이 필요합니다.
Levene test
각 집단에서 관측값과 집단 중앙값(또는 평균) 간의 절대 편차를 비교합니다.
정규분포 가정이 없어서 데이터가 정규분포를 따르지 않아도 사용할 수 있습니다.
이상값에 비교적 강건합니다.
- H₀: 모든 집단의 분산이 동일하다
- p > 0.05: 등분산 가정 성립
- p < 0.05: 등분산 가정 위반
Bartlett test
정규분포를 따르는 데이터에서 더 강력한 검정입니다.
그러나 정규성 가정에 민감해서 데이터가 정규분포를 따르지 않으면 결과가 왜곡될 수 있습니다.
실무에서는 Levene test를 더 많이 사용합니다.
정규성이 확보된 경우에만 Bartlett test를 선택하는 것이 일반적입니다.
등분산 가정이 위반된 경우 t-검정에서는 Welch's t-test를, ANOVA에서는 Welch's ANOVA를 대안으로 사용합니다.
데이터 특성에 따른 분석 기법 선택 흐름
적합한 통계 기법을 선택하는 핵심 기준은 집단 수, 데이터 유형, 정규성/등분산성 가정 충족 여부에 따라서입니다.
두 집단 비교
두 집단 비교
├── 독립적인 두 집단
│ ├── 정규성 O, 등분산 O → 독립 표본 t-검정
│ ├── 정규성 O, 등분산 X → Welch's t-검정
│ └── 정규성 X 또는 소표본 → Wilcoxon rank sum test (Mann-Whitney U)
└── 대응하는 두 집단 (같은 대상, 전후 비교)
├── 정규성 O → 대응 표본 t-검정
└── 정규성 X → Wilcoxon signed-rank test
세 집단 이상 비교
세 집단 이상 비교
├── 정규성 O, 등분산 O → One-way ANOVA
├── 정규성 O, 등분산 X → Welch's ANOVA
└── 정규성 X → Kruskal-Wallis test
└── 사후 검정 필요 시 → Dunn test (비모수)
두 변수 간의 관계
두 변수 간의 관계
├── 두 연속형 변수
│ ├── 정규성 O → Pearson 상관계수
│ └── 정규성 X 또는 순서형 변수 → Spearman 상관계수
└── 연속형 변수 → 범주형 변수 예측 → 로지스틱 회귀
연속형 변수 → 연속형 변수 예측 → 선형 회귀
범주형 데이터
범주형 데이터 간의 관계
├── 기대 빈도 ≥ 5 → 카이제곱 검정 (χ² test)
└── 기대 빈도 < 5 또는 소표본 → Fisher's exact test
R 통계 분석 함수 정리
정규성 및 등분산 검정
# 정규성 검정
shapiro.test(x) # Shapiro-Wilk test
ks.test(x, "pnorm", mean(x), sd(x)) # K-S test
# Q-Q plot 시각화
qqnorm(x)
qqline(x)
# 등분산 검정
car::leveneTest(y ~ group, data = df) # Levene test (car 패키지)
bartlett.test(y ~ group, data = df) # Bartlett test
두 집단 비교
t.test(x, y) # Welch's t-검정 (기본값)
t.test(x, y, var.equal = TRUE) # 등분산 가정 t-검정
t.test(x, y, paired = TRUE) # 대응 표본 t-검정
wilcox.test(x, y) # Wilcoxon rank sum test
wilcox.test(x, y, paired = TRUE) # Wilcoxon signed-rank test
세 집단 이상 비교
aov(y ~ group, data = df) # One-way ANOVA
oneway.test(y ~ group, data = df) # Welch's ANOVA
kruskal.test(y ~ group, data = df) # Kruskal-Wallis test
# 사후 검정
TukeyHSD(aov_result) # Tukey HSD
pairwise.t.test(y, group, p.adj = "bonferroni") # Bonferroni 보정
dunn.test::dunn.test(y, group) # Dunn test (비모수 사후 검정)
상관 분석
cor.test(x, y, method = "pearson") # Pearson 상관
cor.test(x, y, method = "spearman") # Spearman 상관
다중 검정 보정
p.adjust(p_values, method = "bonferroni") # Bonferroni 보정
p.adjust(p_values, method = "BH") # Benjamini-Hochberg FDR
p.adjust(p_values, method = "fdr") # BH와 동일
'BI&Programming-Tools > 통계' 카테고리의 다른 글
| [통계적 추론] 6. 상관 분석 (0) | 2026.07.04 |
|---|---|
| [통계적 추론] 5. 모수 검정 (t-검정) (0) | 2026.07.04 |
| [통계적 추론] 4. 비모수 검정 (0) | 2026.07.02 |
| [통계적 추론] 2. 결과 해석의 기초 (0) | 2026.07.01 |
| [통계적 추론] 1. 통계의 기본 개념 (0) | 2026.07.01 |
