R でアンダーソン・ダーリング検定を実行する方法


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

このテストは 2 つの値を返します。

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 テストを実行することもできます。たとえば、埋め込まれたirisデータセットについて考えてみましょう。

 #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 が正規分布に従っていないと結論付けるのに十分な証拠があります。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です