如何在 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不服从正态分布的结论。