【发布时间】:2015-03-28 19:57:48
【问题描述】:
我有一个向量,在 R 中,有 1521298 个点,必须对其进行正态性测试。我选择了 Shapiro-Wilk 测试,但是 R 函数 shapiro.test() 说:
shapiro.test(z_scores) 中的错误:样本大小必须在 3 到 5000 之间
您是否知道任何其他功能可以对其进行测试或如何规避此问题?
【问题讨论】:
-
(1) R 中有很多其他的正态性测试函数(例如,参见
nortest包)。 (2) 你能评论一下你为什么要做这个测试吗?如果你有这么大的数据集,我几乎可以保证你会拒绝 p 值非常低的正态性假设。 -
我认为你误解了中心极限定理......像这样的问题更适合CrossValidated(CLT 说 一个大数之和的分布独立值的分布趋于正态,而不是大量值的分布趋于正态......)
-
夏皮罗-威尔克测试是一个不错的选择。该检验具有检验数据集的正态性的最佳功效。实际上,数据集越大,Shapiro-Wilk 的测试结果就越好。该测试限制为最多 5000 个样本,因为您必须已经学习(原始测试限制为 50 个!样本)。您唯一能做的就是从您的数据集中随机选择少于 5000 个点来进行测试。你的数据集是排序的还是随机排列的?
-
@JFS,我不同意你所说的:对几个来自正态分布的大随机样本应用 shapiro-wilk 检验,你会发现它们中的大多数都会有一个低p 值。对大样本的情况有很好的解释here。
-
@GathG,针对特定分布测试一组数据的问题始终存在不确定性。 Shapiro-Wilk 测试是少数具有最高功效的客观测试之一。这并不意味着该测试不会失败。但其他测试更糟糕。样本数量越大,对结果的偏差就越敏感,这实际上可能导致“错误”结果,例如对于已知的正态分布样本集来说 p 值很小。但是,样本集越小,出现非正态分布样本集的风险就越大,这些样本集不会被拒绝......
标签: r normal-distribution