[R데이터분석] 등분산성/정규성 검정

근이의 개발일기·2024년 12월 9일
post-thumbnail

등분산성 검정, 정규성 검정이 필요한 분석 방법과 해결 방법


1. 등분산성 검정이 필요한 분석 방법

등분산성은 집단 간의 분산(variance)이 동일한지를 확인하는 과정으로, 아래의 분석 방법에서 필수적입니다.

필요한 분석 방법

분석 방법필요 여부등분산 검정 방법R 함수대체 방법 (등분산 불만족시)
독립표본 t-test필수F-test (var.test)var.test(y ~ group, data=df)var.equal = FALSE 인자 추가
One-way ANOVA필수Bartlett testbartlett.test(y ~ group, data=df)Kruskal-Wallis test (비모수 분석)
Two-way ANOVA필수Levene's testcar::leveneTest(y ~ group, data=df)Kruskal-Wallis test (비모수 분석)
회귀분석 (lm, glm)선택적잔차의 등분산 확인plot(lm_model, which = 3)가중 회귀 분석 (WLS)
One-way test필수Bartlett testbartlett.test(y ~ group, data=df)Kruskal-Wallis test (비모수 분석)

등분산성 검정 방법

  • F-test (var.test()): 두 개의 집단의 분산을 비교.
  • Bartlett test (bartlett.test()): 세 개 이상의 집단의 분산을 비교.
  • Levene's test (car::leveneTest()): 세 개 이상의 집단의 분산을 비교하며, Bartlett보다 정규성 가정을 덜 요구함.

등분산성 불만족 시 해결 방법

  1. 독립표본 t-test:

    • t.test(y ~ group, data = df, var.equal = FALSE)var.equal = FALSE 옵션을 사용해 Welch's t-test를 실행.
    t.test(y ~ group, data = df, var.equal = FALSE)
  2. One-way ANOVA, Two-way ANOVA:

    • 등분산성 불만족 시, Kruskal-Wallis test(비모수 검정)로 대체.
    kruskal.test(y ~ group, data = df)
  3. 회귀분석 (lm, glm):

    • 가중 회귀 분석 (Weighted Least Squares, WLS)를 사용해 등분산성을 보정.
    lm_model <- lm(y ~ x1 + x2, weights = 1/var(y), data = df)

2. 정규성 검정이 필요한 분석 방법

정규성 검정은 데이터가 정규분포를 따르는지 확인하는 과정으로, 아래의 분석 방법에서 필수적입니다.

필요한 분석 방법

분석 방법필요 여부정규성 검정 방법R 함수대체 방법 (정규성 불만족시)
독립표본 t-test필수Shapiro-Wilk testshapiro.test(y)Wilcoxon rank-sum test
대응표본 t-test필수Shapiro-Wilk testshapiro.test(y)Wilcoxon signed-rank test
단일표본 t-test필수Shapiro-Wilk testshapiro.test(y)Wilcoxon signed-rank test
One-way ANOVA필수Shapiro-Wilk testshapiro.test(y)Kruskal-Wallis test
Two-way ANOVA필수Shapiro-Wilk testshapiro.test(y)Kruskal-Wallis test
회귀분석 (lm, glm)선택적Q-Q plot, Shapiro-Wilkplot(lm_model, which = 2)잔차의 정규화 (Box-Cox 변환)
상관분석 (Pearson)필수Shapiro-Wilk testshapiro.test(y)Spearman 상관분석

정규성 검정 방법

  • Shapiro-Wilk test (shapiro.test()): 50개 미만의 샘플에 적합.
  • Kolmogorov-Smirnov test (ks.test()): 샘플 수가 50개 이상일 때 사용.
  • Q-Q plot: 시각적으로 정규성을 확인.
    qqnorm(y)
    qqline(y, col = "red")

정규성 불만족 시 해결 방법

  1. t-test (독립표본, 대응표본, 단일표본):

    • 정규성이 불만족하면, Wilcoxon rank-sum test 또는 Wilcoxon signed-rank test로 대체.
    # Wilcoxon rank-sum test
    wilcox.test(y ~ group, data = df)
    
    # Wilcoxon signed-rank test
    wilcox.test(y1, y2, paired = TRUE)
  2. ANOVA (One-way, Two-way):

    • 정규성이 불만족하면, Kruskal-Wallis test로 대체.
    kruskal.test(y ~ group, data = df)
  3. 회귀분석 (lm, glm):

    • 잔차가 정규성을 따르지 않으면 Box-Cox 변환을 사용.
    library(MASS)
    bc_transform <- boxcox(lm(y ~ x1 + x2, data = df))
  4. 상관분석:

    • 정규성을 따르지 않으면, Spearman 상관분석으로 대체.
    cor.test(x, y, method = "spearman")

정리표: 등분산성 및 정규성 필요 여부

분석 방법등분산성 필요정규성 필요대체 방법 (등분산 불만족)대체 방법 (정규성 불만족)
독립표본 t-test✅ 필요✅ 필요Welch's t-test (var.equal=F)Wilcoxon rank-sum test
대응표본 t-test❌ 불필요✅ 필요-Wilcoxon signed-rank test
단일표본 t-test❌ 불필요✅ 필요-Wilcoxon signed-rank test
One-way ANOVA✅ 필요✅ 필요Kruskal-Wallis testKruskal-Wallis test
Two-way ANOVA✅ 필요✅ 필요Kruskal-Wallis testKruskal-Wallis test
회귀분석 (lm, glm)선택적선택적가중 회귀 분석 (WLS)잔차의 정규화 (Box-Cox 변환)
Pearson 상관분석❌ 불필요✅ 필요-Spearman 상관분석
One-way test✅ 필요✅ 필요Kruskal-Wallis testKruskal-Wallis test

결론

  • 등분산성 필요: t-test, ANOVA, 회귀분석.
  • 정규성 필요: t-test, ANOVA, 회귀분석, Pearson 상관분석.
  • 등분산성 불만족 → Welch's t-test, Kruskal-Wallis test, WLS.
  • 정규성 불만족 → Wilcoxon test, Kruskal-Wallis test, Spearman 상관분석.

필요한 부분이 더 있거나 추가적인 설명이 필요하면 알려주세요.

0개의 댓글