Python에서 shapiro-wilk 테스트를 수행하는 방법
Shapiro-Wilk 테스트는 정규성 테스트입니다. 표본이 정규 분포 에서 나오는지 여부를 확인하는 데 사용됩니다.
Python에서 Shapiro-Wilk 테스트를 수행하려면 다음 구문을 사용하는 scipy.stats.shapiro() 함수를 사용할 수 있습니다.
scipy.stats.shapiro(x)
금:
- x: 샘플 데이터 테이블입니다.
이 함수는 검정 통계량과 해당 p-값을 반환합니다.
p-값이 특정 유의 수준보다 낮으면 표본 데이터가 정규 분포에서 나오지 않는다고 말할 수 있는 충분한 증거가 있는 것입니다.
이 튜토리얼에서는 실제로 이 기능을 사용하는 방법에 대한 몇 가지 예를 보여줍니다.
예 1: 정규 분포 데이터에 대한 Shapiro-Wilk 테스트
다음과 같은 샘플 데이터가 있다고 가정합니다.
from numpy.random import seed from numpy.random import randn #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 random values that follow a standard normal distribution data = randn(100)
다음 코드는 이 100개의 데이터 값 샘플에 대해 Shapiro-Wilk 테스트를 수행하여 해당 값이 정규 분포에서 나온 것인지 확인하는 방법을 보여줍니다.
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)
결과에서 검정 통계량은 0.9927 이고 해당 p-값은 0.8689 임을 알 수 있습니다.
p-값이 0.05 이상이므로 귀무가설을 기각할 수 없습니다. 표본 데이터가 정규 분포에서 나오지 않는다고 말할 수 있는 충분한 증거가 없습니다.
표준 정규 분포를 따르는 임의의 값을 생성하는 randn() 함수를 사용하여 샘플 데이터를 생성했기 때문에 이 결과는 놀라운 일이 아닙니다.
예 2: 비정규 분포 데이터에 대한 Shapiro-Wilk 테스트
이제 다음과 같은 샘플 데이터가 있다고 가정합니다.
from numpy.random import seed from numpy.random import fish #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 values that follows a Poisson distribution with mean=5 data = fish(5, 100)
다음 코드는 이 100개의 데이터 값 샘플에 대해 Shapiro-Wilk 테스트를 수행하여 해당 값이 정규 분포에서 나온 것인지 확인하는 방법을 보여줍니다.
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)
결과에서 검정 통계량은 0.9582 이고 해당 p-값은 0.00299 임을 알 수 있습니다.
p-값이 0.05보다 작으므로 귀무가설을 기각합니다. 표본 데이터가 정규 분포에서 나오지 않는다고 말할 수 있는 충분한 증거가 있습니다.
Poisson 분포를 따르는 임의의 값을 생성하는 Poisson() 함수를 사용하여 샘플 데이터를 생성했기 때문에 이 결과는 놀라운 일이 아닙니다.
추가 리소스
다음 자습서에서는 다양한 통계 소프트웨어에서 기타 정규성 테스트를 수행하는 방법을 설명합니다.
R에서 Shapiro-Wilk 테스트를 수행하는 방법
Python에서 Anderson-Darling 테스트를 수행하는 방법
Python에서 Kolmogorov-Smirnov 테스트를 수행하는 방법