본문 바로가기
데이터 관련/통계

[거친코딩] 통계검정에서 정규성검정 꼭 필요할까?

by 준쓰_ 2023. 1. 29.

선요약

  • A/B 테스트를 진행해야 할 때 3가지 조건을 만족해야 한다.
    • [독립성 검정] 실험을 진행할 두 그룹을 나눌 때 '서로 영향을 안주는 독립적 그룹'이어야 한다.
    • [등분산성] 두 그룹은 '서로 동일한 분산 형태를 갖는 등분산성'이어야 한다.
    • [정규성] 두 그룹은 '정규성을 만족'하여야 한다.
      • 왜도(skewness)가 2보다 작아야 한다.
      • 첨도(kurtosis)가 7보다 작아야 한다

 

참고자료

https://www.youtube.com/watch?v=JXD9dKIU67M 

 

내용

A/B테스트를 위해 t-Test를 진행할 때 만족해야 하는 조건들이 존재한다. 다만 정규성 검정의 경우, 통계검정 방식을 사용하면 실제 데이터는 생각보다 정규성 검정을 만족하지 못하는 경우가 많다. 때문에 이를 보완하기 위해서 '왜도와 첨도를 활용한 정규성 평가' 라는 논문을 활용해 특정 기준치를 만족하면 정규성을 만족하는 것으로 판단한다.

 

[1. A그룹과 B그룹 간의 상호 독립성 만족]

두 그룹이 서로 차이없이 독립적으로 나눠졌는지 확인해야함. 대체로 AA테스트라고 불리는 방식을 통해 나눠진 두 그룹이 완벽하게 동일하게 나눠졌는지와 편향이 없는지를 확인함

 

[2. A그룹과 B그룹 분포의 분산이 동일해야 함]

등분산성을 확인하는 파이썬 라이브러리로 대표적 3가지가 존재함

  1. 바틀렛 검정 : scipy.stats.bartlett
  2. 플리그너 검정 : scipy.stats.fligner
  3. 레빈 검정 : scipy.stats.levene

등분산성의 가설검정으로 다음과 같이 진행

  • H0(귀무가설) : 두 그룹의 분포의 분산은 같다.
  • H1(대립가설) : 두 그룹의 분포의 분산은 같지 않다.

만약 여기서 대립가설이 채택된다면 이분산 t검정(Welch's Test)로 대체 가능

 

[3. 정규성 검정]

scipy 라이브러리

  1. 콜모고로프-스미르노프 검정(Kolmogorov-Smirnow test) : scipy.stats.ks_2samp
  2. 샤피로-윌크 검정(Shapiro Wilk test) : scipy.stats.shapiro
  3. 앤더스-달링 검정(Anderson Darling test) : scipy.stats.anderson
  4. 다고스티노 K-제곱검정(D'Agostino's K-squared test) : scipy.stats.mstats.normaltest

StatsModels 라이브러리

  1. 콜모고로프-스미르노프 검정(Kolmogorov-Smirnow test) : statsmodels.stats.diagnostic.kstest_normal
  2. 옴니버스 검정(Omnibus Normality test) : statsmodels.stats.stattools.omni_nortest
  3. 자크-베라 검정(Jarque Bera test) : statsmodels.stats.stats.stattools.jarque_bera
  4. 릴리포스 검정(Lilliefors test) : statsmodels.stats.diagnostic.lillifors

Skewness and Kurtosis를 활용한 정규성 평가 - West.연구논문

  • 왜도(skewness)가 2보다 작아야 한다.
  • 첨도(kurtosis)가 7보다 작아야 한다