R에서 anderson-darling 테스트를 수행하는 방법


Anderson-Darling 검정은 데이터가 지정된 분포에 얼마나 잘 맞는지 측정하는 적합도 검정입니다. 이 테스트는 데이터가 정규 분포를 따르는지 여부를 확인하는 데 가장 자주 사용됩니다.

이 유형의 테스트는 회귀 분석, ANOVA, t-테스트 등을 포함한 많은 통계 테스트에서 일반적으로 사용되는 가정인 정규성을 테스트하는 데 유용합니다.

예: R의 Anderson-Darling 테스트

R에서 Anderson-Darling 테스트를 수행하려면 nortest 라이브러리의 ad.test() 함수를 사용할 수 있습니다.

다음 코드는 100개 값의 벡터가 정규 분포를 따르는지 여부를 테스트하기 위해 AD 테스트를 수행하는 방법을 보여줍니다.

 #install (if not already installed) and load nortest library
install.packages('nortest')
library(nortest)

#make this example reproducible
set.seed(1)

#defined vector of 100 values that are normally distributed
x <- rnorm(100, 0, 1)

#conduct Anderson-Darling Test to test for normality
ad.test(x)

# Anderson-Darling normality test
#
#data:x
#A = 0.16021, p-value = 0.9471

이 테스트는 다음 두 가지 값을 반환합니다.

A : 테스트 통계입니다.

p-값 : 검정 통계량의 해당 p-값입니다.

AD 검정의 귀무 가설은 데이터가 정규 분포를 따른다 는 것입니다. 따라서 검정에 대한 p-값이 유의 수준(일반적으로 0.10, 0.05, 0.01)보다 작으면 귀무 가설을 기각하고 데이터가 다음을 따르지 않는다고 주장할 수 있는 충분한 증거가 있다고 결론을 내릴 수 있습니다. 정상적인 궤적. 분포.

이 경우 p-값은 0.9471입니다. 이 숫자는 유의 수준(예: 0.05)보다 낮지 않으므로 귀무 가설을 기각할 충분한 증거가 없습니다. 우리 데이터가 정규 분포를 따른다고 말하는 것이 안전합니다. 이는 R의 rnorm() 함수를 사용하여 평균이 0이고 표준 편차가 1인 정규 분포를 따르는 100개의 값을 생성했다는 점을 고려하면 의미가 있습니다.

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

대신, 0과 1 사이의 균일 분포를 따르는 100개 값의 벡터를 생성한다고 가정해 보겠습니다. AD 테스트를 다시 실행하여 이 데이터가 정규 분포를 따르는지 확인할 수 있습니다.

 #make this example reproducible
set.seed(1)

#defined vector of 100 values that are uniformly distributed
x <- runif(100, 0, 1)

#conduct Anderson-Darling Test to test for normality
ad.test(x)

# Anderson-Darling normality test
#
#data:x
#A = 1.1472, p-value = 0.005086

A 검정 통계량은 1.1472이고 해당 p-값은 0.005086입니다. p-값이 0.05보다 작기 때문에 귀무 가설을 기각하고 이 데이터가 정규 분포를 따르지 않는다고 말할 수 있는 충분한 증거가 있다는 결론을 내릴 수 있습니다. 이는 데이터가 실제로 균일한 분포를 따른다는 것을 알고 있기 때문에 예상한 결과입니다.

R의 데이터 프레임 열에 대해 Anderson-Darling 테스트 수행

R에서 데이터 프레임의 지정된 열에 대해 AD 테스트를 수행할 수도 있습니다. 예를 들어 내장된 붓꽃 데이터 세트를 고려해 보세요.

 #view first six lines of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

Petal.Width 변수가 정규 분포를 따르는지 알고 싶다고 가정해 보겠습니다. 먼저 값 분포를 시각화하기 위해 히스토그램을 만들 수 있습니다.

 hist(iris$Petal.Width, col = 'steelblue', main = 'Distribution of Petal Widths',
     xlab = 'Petal Width')

데이터가 정규 분포를 따르지 않는 것 같습니다. 이를 확인하기 위해 AD 테스트를 수행하여 데이터가 정규 분포인지 여부를 공식적으로 테스트할 수 있습니다.

 #conduct Anderson-Darling Test to test for normality
ad.test(iris$Petal.Width)

# Anderson-Darling normality test
#
#data: iris$Petal.Width
#A = 5.1057, p-value = 1.125e-12

검정의 p-값은 0.05보다 작으므로 귀무 가설을 기각하고 Petal.Width가 정규 분포를 따르지 않는다는 결론을 내릴 수 있는 충분한 증거가 있습니다.

의견을 추가하다

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