[통계적 추론] 3. 통계 분석 기법 선택

2026. 7. 2. 19:00·BI&Programming-Tools/통계

모수 검정과 비모수 검정의 차이

모수 검정 (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
'BI&Programming-Tools/통계' 카테고리의 다른 글
  • [통계적 추론] 5. 모수 검정 (t-검정)
  • [통계적 추론] 4. 비모수 검정
  • [통계적 추론] 2. 결과 해석의 기초
  • [통계적 추론] 1. 통계의 기본 개념
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28)
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4)
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    wgs
    생물정보학
    리눅스기초
    bioinformatics
    GATK
    파일포맷
    유전체분석
    FASTQ
    R기초
    데이터분석
    분자생물학
    ngs
    코딩테스트
    파이썬연습
    파이썬
    R
    파이썬기초
    리눅스
    통계
    fasta
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
[통계적 추론] 3. 통계 분석 기법 선택
상단으로

티스토리툴바