如何在 r 中执行 anderson-darling 测试


Anderson-Darling 检验是一种拟合优度检验,用于衡量数据与指定分布的拟合程度。此检验最常用于确定数据是否服从正态分布

这种类型的检验对于检验正态性非常有用,正态性是许多统计检验中常用的假设,包括回归、方差分析、t 检验等。

示例:R 中的 Anderson-Darling 测试

要在 R 中执行 Anderson-Darling 测试,我们可以使用nortest库中的ad.test()函数。

下面的代码说明了如何执行AD测试来测试100个值的向量是否服从正态分布:

 #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-value :检验统计量对应的 p-值。

AD 检验的原假设是数据服从正态分布。因此,如果我们的检验 p 值小于我们的显着性水平(常见选择为 0.10、0.05 和 0.01),那么我们可以拒绝零假设并得出结论:我们有足够的证据来断言我们的数据不符合正常轨迹。分配。

在本例中,我们的 p 值为 0.9471。由于该数字不低于我们的显着性水平(例如 0.05),因此我们没有足够的证据来拒绝原假设。可以肯定地说,我们的数据遵循正态分布,这是有道理的,因为我们使用 R 中的rnorm()函数生成了 100 个遵循均值为 0、标准差为 1 的正态分布的值。

相关: R 中 dnorm、pnorm、qnorm 和 rnorm 指南

相反,假设我们生成一个由 100 个值组成的向量,该向量遵循 0 到 1 之间的均匀分布。我们可以再次运行 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不服从正态分布的结论。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注