R에서 shapiro-wilk 테스트를 수행하는 방법(예제 포함)


Shapiro-Wilk 테스트는 정규성 테스트입니다. 표본이 정규 분포 에서 나오는지 여부를 확인하는 데 사용됩니다.

이 유형의 테스트는 주어진 데이터 세트가 회귀 , ANOVA , t-테스트 등을 포함한 많은 통계 테스트에서 일반적으로 사용되는 가정인 정규 분포에서 나오는지 여부를 결정하는 데 유용합니다. ‘다른 사람들.

R에 내장된 다음 함수를 사용하여 주어진 데이터 세트에 대해 Shapiro-Wilk 테스트를 쉽게 수행할 수 있습니다.

샤피로.test(x)

금:

  • x: 데이터 값의 숫자형 벡터입니다.

이 함수는 해당 p-값과 함께 W 검정 통계량을 생성합니다. p-값이 α = 0.05보다 작으면 표본이 정규 분포를 따르는 모집단에서 추출되지 않았다는 증거가 충분합니다.

참고: shapiro.test() 함수를 사용하려면 샘플 크기가 3에서 5,000 사이여야 합니다.

이 튜토리얼에서는 이 기능의 실제 사용에 대한 몇 가지 예를 보여줍니다.

예 1: 정규 데이터에 대한 Shapiro-Wilk 테스트

다음 코드는 샘플 크기 n=100인 데이터 세트에서 Shapiro-Wilk 테스트를 수행하는 방법을 보여줍니다.

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a normal distribution
data <- rnorm(100)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.98957, p-value = 0.6303

테스트의 p-값은 0.6303 으로 나타났습니다. 이 값은 0.05 이상이므로 표본 데이터가 정규 분포 모집단에서 나온 것이라고 가정할 수 있습니다.

평균 = 0, 표준 편차 = 1인 정규 분포에서 무작위 값을 생성하는 rnorm() 함수를 사용하여 샘플 데이터를 생성했기 때문에 이 결과는 놀라운 일이 아닙니다.

관련 항목: R의 dnorm, pnorm, qnorm 및 rnorm에 대한 가이드

샘플 데이터가 정규 분포를 따르는지 시각적으로 확인하기 위해 히스토그램을 생성할 수도 있습니다.

 hist(data, col=' steelblue ') 

R의 정규성에 대한 Shapiro-Wilk 테스트

분포는 정규 분포 데이터의 전형적인 분포 중앙에 정점이 있는 종 모양임을 알 수 있습니다.

예 2: 비정규 데이터에 대한 Shapiro-Wilk 검정

다음 코드는 포아송 분포 에서 값이 무작위로 생성되는 샘플 크기 n=100의 데이터 세트에 대해 Shapiro-Wilk 테스트를 수행하는 방법을 보여줍니다.

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a Poisson distribution
data <- rpois(n=100, lambda=3)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.94397, p-value = 0.0003393

테스트의 p-값은 0.0003393 으로 나타났습니다. 이 값은 0.05보다 작기 때문에 표본 데이터가 정규 분포 모집단에서 나온 것이 아니라는 증거가 충분합니다.

푸아송 분포에서 임의의 값을 생성하는 rpois() 함수를 사용하여 샘플 데이터를 생성했기 때문에 이 결과는 놀라운 일이 아닙니다.

관련 항목: R의 dpois, ppois, qpois 및 rpois에 대한 가이드

샘플 데이터가 정규 분포를 따르지 않는지 시각적으로 확인하기 위해 히스토그램을 생성할 수도 있습니다.

 hist(data, col=' coral2 ') 

R의 Shapiro-Wilk 테스트 히스토그램

분포가 오른쪽으로 치우쳐 있고 정규 분포와 관련된 일반적인 “종 모양”이 없음을 알 수 있습니다. 따라서 히스토그램은 Shapiro-Wilk 테스트 결과와 일치하며 샘플 데이터가 정규 분포에서 나오지 않음을 확인합니다.

비정규 데이터로 무엇을 해야 할까요?

주어진 데이터 세트가 정규 분포를 따르지 않는 경우 다음 변환 중 하나를 수행하여 보다 정규 분포를 만들 수 있습니다.

1. 로그 변환: 응답 변수를 y에서 log(y) 로 변환합니다.

2. 제곱근 변환: 응답 변수를 y에서 √y 로 변환합니다.

3. 세제곱근 변환: 응답 변수를 y에서 y 1/3 으로 변환합니다.

이러한 변환을 수행하면 반응 변수는 일반적으로 정규 분포에 가까워집니다.

실제로 이러한 변환을 수행하는 방법을 보려면 이 튜토리얼을 확인하세요.

추가 리소스

R에서 Anderson-Darling 테스트를 수행하는 방법
R에서 Kolmogorov-Smirnov 테스트를 수행하는 방법
Python에서 Shapiro-Wilk 테스트를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다