测试具有许多站点的数据集中的正态性[关闭]
Posted
技术标签:
【中文标题】测试具有许多站点的数据集中的正态性[关闭]【英文标题】:Testing for Normality in data set with many sites [closed] 【发布时间】:2013-07-09 11:33:22 【问题描述】:我是 R 的新手,我正在尝试用它来评估来自大约 1900 个单独站点的水质数据的正常性(或其他情况)。每个站点都有一个唯一的Sitecode
,其中包含 3 年内样本的结果Meas_res
。数据保存在按Sitecode
/ Sample Date
顺序排序的.csv 文件中。我想运行 Andersen Darling 测试(以及来自 nortest
包的其他类似评估)以获得以下一般形式的输出:
Sitecode
,广告测试输出写回 .csv 文件格式
谁能给我一组代码来运行测试或指导如何准备?
【问题讨论】:
请提供reproducible example。 代码将是read.csv
、ad.test
和write.csv
的组合。如果您提供可重现的示例,将获得更多帮助。
这应该被移到 StackExchange。
Seeing if data is normally distributed in R的可能重复
【参考方案1】:
如果没有说明您为什么要运行测试的理由,或者没有解释您认为它会区分某些网站的原因,那么大约 100 个会偶然出现非正常情况。如果您想检查水质数据是否正常,那么最好一次检查所有数据。方法因站点而异,因此您可以检查以因子 Sitecode
作为预测变量的线性模型的残差。
library(nortest)
dat <- read.csv( 'myDataFileName.csv' )
m <- lm( Mean_res ~ Sitecode, data = dat)
res <- resid(m)
ad.test(res)
现在,您可以在 res
上进行 Anderson Darling 测试。
但只是为了好玩,请尝试从已知正态分布中对许多样本生成一些 AD 测试,并查看 qqnorm
图以了解它们的样子。
y <- rnorm( nrow(dat) )
ad.test(y)
qqnorm(y); qqline(y)
你会发现有这么多分数的是,你仍然会偶尔通过 AD 测试,但数据看起来仍然非常正常。所以答案可能不是 AD 测试。最好只查看残差图并评估那里的正态性。
回到我的第一条评论,正态性检验只告诉您是否可以检测到与正态性的偏差。它也与 t 检验一样,在非常高的 N 时非常敏感,并以 alpha 率给出错误警报。它不会告诉您数据是否正常。因此,“通过”测试不会让您证明数据正常。鉴于它们是针对正常性的测试,它们将向您展示哪些站点不正常(有许多误报)。如果没有理由相信某些网站不正常,您计划的测试可能不是您想要做的。
【讨论】:
以上是关于测试具有许多站点的数据集中的正态性[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Kolmogorov-Smirnov 测试 MATLAB 中的正态性 - 数据归一化?