我有一个程序生成据称是正态分布,我想测试它。我有很多问题;也许这里的专家会帮助我从无关紧要中理清要点并回答其中的大部分问题。
- 我正在寻找一个简单的测试,理想情况下 - 一个我可以毫不费力地实施的测试。
- 相邻值之间可能存在相关性。如果数据“否则”呈正态分布,则某些测试可能对这种失败不敏感。
- 理想情况下,我想允许(少量!)数量的非正态性。我见过的大多数测试只允许稍微不正常的数据通过,因为测试了少量的值(其中“小”可能仍然意味着数百万,具体取决于偏差的大小)。这让人想起这个关于正态性检验价值的问题。
我有一个程序生成据称是正态分布,我想测试它。我有很多问题;也许这里的专家会帮助我从无关紧要中理清要点并回答其中的大部分问题。
问题出现在“少量”非正态性和“一些”自相关的想法上。在清楚如何操作这些之前,您将陷入正常测试(不是接近正常)。正如您所暗示的那样,对正态性的不敏感测试和对接近正态性的敏感测试之间存在相当大的概念差异。您可以将第一个用作第二个,但它可能不太正确,并且在各种限制下表现不同。在我看来,您可以通过两种方式进行:
一般正态性检验不允许您控制非正态性的哪些方面比其他方面更严重。那么你能定义正常性的哪个方面实际上是重要的吗?如果您更关心,例如肥尾巴或倾斜然后你可以单独测试这些。同样,如果您估计一阶自相关,您可以使用该参数的置信区间来确定多少是“太多”。但是您仍然必须决定正确的顺序是什么(@Jason O. Jensen 假设它是一个,但这将取决于生成过程)以及您是否信任测试。如果我没记错的话,不同正态性检验(例如 KS 和 Shapiro-Wilks)的大小随水平自相关而变化,有时甚至取决于其符号。除了他们在各种替代方案方面的力量变化之外......
其次,您说您自己生成数据。我在想象,要么您正在测试某种随机数生成器,要么您想知道某物是否已达到渐近正态分布。对于前一种情况,您可能对可能出现的问题有所了解,因此可以按照上面的建议进行测试。在后一种情况下,我的直觉较少。MCMC 收敛文献很可能对这个案例有一些有用的说法。
如果第二点是您的主要关注点,您可以将数据“滞后”一次观察,然后将“原始”数据回归到“滞后”数据上。对每一种方式都执行此操作,并根据 p 值决定数据是否足够随机。
另一个建议是计算生成的数据与正态分布之间的Kullback-Leiber 散度或Hellinger 距离。这使您可以衡量数据的非正态程度(希望您可以确定与正态性的微小偏差是多少)。
我能想到的接近正态性的最佳测试是视觉测试:
Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne, D.F and Wickham, H. (2009) Statistical Inference for exploratory data analysis and model diagnostics Phil. Trans. R. Soc. A 2009 367, 4361-4383 doi: 10.1098/rsta.2009.0120
R 包中的vis.test函数实现了此测试的变体。TeachingDemos这确实假设您相信 R 的随机正态生成器足以进行比较,或者您有另一个足够的正态源进行比较。这个测试不能自动化,但相当直接并且符合上述想法(如果需要,您也可以找到一种查看自相关的方法)。