用很小的样本量(例如n = 6)测试正态性是否有意义?


26

我的样本大小为6。在这种情况下,使用Kolmogorov-Smirnov检验来检验正态性是否有意义?我使用了SPSS。我的样本量很小,因为获取每个样本都需要时间。如果没有意义,那么最低数量的样本中有多少个是有意义的测试?

注意: 我做了一些与源代码有关的实验。该样本是在一个版本的软件(版本A)中编码所花费的时间。 实际上,我的样本量为6,这是在另一个版本的软件(版本B)中所编码的时间。

我想使用一样本t检验进行假设检验,以测试在代码版本A中花费的时间与在代码版本B中花费的时间是否不同(这是我的H1)。一次样本t检验的前提是要测试的数据必须正态分布。这就是为什么我需要测试正常性。


6
我举一个例子,很难想象n = 6和正态性是值得检验的假设的情况。我担心这是一个缺乏经验的用户进行多重假设测试(先进行回归然后测试残差的正态性)的情况,而且我们正在解决症状但忽略了壁橱中的骨架。
user603 2011年

3
@user推测发问者是不公平的。让我们解决这个问题,好吗?因此,假设您计划为将用于做出昂贵决策的值计算预测上限。PL的值将对正态性假设敏感。您可以肯定数据生成过程是不正常的,但是生成数据既昂贵又耗时。先前的实验表明,将足以抵消正态性。(我刚刚描述了美国地下水监测计划的标准框架。)n=6
麻烦

3
User603(您的第一个评论):我想指出,@ Joris没有提供答案,他的评论也没有附带任何正当理由。如果强调“否”是对这个问题的有效一般回答,那么让我们看一下它是用支持的论据写下来的,这样社区就可以对其进行上下评估。
ub

2
@whuber:我为强调“ no”添加了一个参数。
Joris Meys 2011年

1
@Joris谢谢!这很有帮助并且很有启发性。
ub

Answers:


38

是。

所有的假设检验有两个显着的特性:其大小(或“显着性水平”),其中一些直接关系到信心和预期的假阳性率,他们的力量,表达假阴性的机会。当样本量很小并且您继续坚持小样本量(高置信度)时,功效会变差。这意味着小样本测试通常无法检测到较小或中等的差异。 但是它们仍然有意义

KS测试评估样本是否似乎来自正态分布。六个值的样本实际上必须看起来非常不正常,才能通过此测试。但是,如果这样做的话,您可以像对较大样本量的解释那样完全解释对null的拒绝。另一方面,如果测试未能拒绝原假设,那么由于假阴性率很高,这告诉您的信息很少。尤其是,如果基础分布为正态分布,则相对会有风险。

在此还要注意的另一件事:某些软件使用近似值来根据测试统计信息计算p值。通常,这些近似值适用于大样本量,但对于很小的样本量效果不佳。在这种情况下,您不能相信已经正确计算了p值,这意味着您无法确定已达到所需的测试大小。有关详细信息,请查阅软件说明文件。

一些建议: KS测试对于正常性测试的功能远不如为此目的而专门构建的其他测试。其中最好的可能是Shapiro-Wilk测试,但其他常用且功能强大的Shapiro-FranciaAnderson-Darling也是如此

此图显示了六个正态分布变量的10,000个样本中的Kolmogorov-Smirnov检验统计量的分布:

KS统计直方图

基于100,000个额外的样本,较高的第95个百分位数(估计该统计值对于的检验的临界值)为0.520。通过此测试的样本示例是数据集α=5%

0.000, 0.001, 0.002, 1.000, 1.001, 1000000

测试统计信息为0.5(小于临界值)。使用其他正态性检验将拒绝此类样本。


10
我认为任何提供信号的分布。N = 6的结果将是非常不正常的,以至于它会飞过IOTT,这是眼内创伤测试。它击中了你的眼睛。
彼得·弗洛姆

2
@Peter如果您要改写此评论,那将是正确的。毕竟,许多来自正态分布的样本看起来都是完全正态的,因此显然“ any”太强了。您的意思是说,以合理的方式绘制(例如概率图)时,的随机样本很有可能显然是非正常的,但不会被该测试拒绝。N = 6N=6N=6
ub

只是为了好玩,我尝试了set.seed(3833782)x <-runif(6)ks.test(x,pnorm)在p = .04时有意义。如此可能会发生
彼得·弗洛姆-恢复莫妮卡

4
@彼得好!正常性的KS测试拒绝了统一的样本。那就是人们所希望的。

3
set.seed(140);x=rnorm(6);ks.test(x,pnorm)产生p-value = 0.0003255。当然,在找到这个种子之前,我不得不尝试使用140颗种子...
Spacedman 2011年

20

正如@whuber在评论中所问,这是对我的绝对NO。的验证。编辑:使用shapiro测试,因为实际上错误地使用了单样本ks测试。Whuber是正确的:为了正确使用Kolmogorov-Smirnov检验,您必须指定分布参数,而不是从数据中提取它们。但是,这是在统计软件包(如SPSS)中进行的,用于单样本KS测试。

您尝试说一些有关分布的信息,然后想检查是否可以应用t检验。因此,进行此测试是为了确认数据与正常值的偏离不足够大,以致使分析的基础假设无效。因此,您对I型错误不感兴趣,但对II型错误感兴趣。

现在必须定义“明显不同”,以便能够计算出可接受功率的最小值n(例如0.8)。对于分布,定义起来并不容易。因此,我没有回答这个问题,因为除了我使用的经验法则之外,我无法给出一个明智的答案:n> 15并且n <50。基于什么?内脏基本上没有感觉,所以除了经验,我无法捍卫这种选择。

但我确实知道,只有6个值,您的II型错误注定几乎为1,使您的功效接近0。通过6个观察,Shapiro检验无法区分正态分布,泊松分布,均匀分布甚至指数分布。II型错误几乎为1时,测试结果毫无意义。

为了说明使用shapiro-test进行正态性测试:

shapiro.test(rnorm(6)) # test a the normal distribution
shapiro.test(rpois(6,4)) # test a poisson distribution
shapiro.test(runif(6,1,10)) # test a uniform distribution
shapiro.test(rexp(6,2)) # test a exponential distribution
shapiro.test(rlnorm(6)) # test a log-normal distribution

最后一个值大约只有一半小于0.05。这也是最极端的情况。


如果您想找出使用​​shapiro测试获得所需功率的最小n是多少,可以进行如下模拟:

results <- sapply(5:50,function(i){
  p.value <- replicate(100,{
    y <- rexp(i,2)
    shapiro.test(y)$p.value
  })
  pow <- sum(p.value < 0.05)/100
  c(i,pow)
})

这样可以为您进行功率分析:

在此处输入图片说明

从中得出的结论是,在80%的情况下,您至少需要20个值才能区分指数分布和正态分布。

代码图:

plot(lowess(results[2,]~results[1,],f=1/6),type="l",col="red",
    main="Power simulation for exponential distribution",
    xlab="n",
    ylab="power"
)

2
@whuber:关于假设检验的逻辑:在哪种情况下,您对替代假设感兴趣?在我看到的这些测试的所有应用中,人们都对null的确认感兴趣:我的数据与正态分布没有显着差异。这就是为什么我强调第二类错误。
Joris Meys 2011年

4
请参阅我对OP的有关地下水监测的评论。通常,人们有兴趣拒绝两种默认假设中的一种或两种:正态性和对数正态性。因为这是在严格的监管监督下完成的,所以注视概率图(对于像@Peter Flom这样的经验丰富的IOTT从业人员来说,这是一个强大的工具)还不够:需要正式测试。在人类健康风险评估中也有类似的应用。美国EPA指导文件专门考虑了低至测试。参见epa.gov/oswer/riskassessment/pdf/ucl.pdf例如5n5
ub

4
回到标题:用小样本量测试正态性有意义吗?在某些情况下,尤其是在针对严重偏斜的替代方案进行测试时。(例如,SW 对LN(1,2)替代品在具有80%的功率)例如,当较小时,对许多替代品的低功耗是正态性检验与任何假设检验在某种程度上共享的东西。这并不排除其使用。因此,温和地说,不合格的“否”对测试是不公平的。更普遍地说,这表明我们永远不要对“小”样本使用假设检验。听起来太厉害了。nn=8n
ub

3
@whuber:我们必须同意有所不同。我并不完全喜欢EPA(当然也不是FDA)指南。我见过这种滥用过于频繁,以至于仍然不相信它的用处。机会是一件奇怪的事情,只有6个案例是高度不可预测的。我不相信您只能基于6个观察结果就说出诸如PDF之类的复杂功能。YMMV
Joris Meys 2011年

5
@ImAlso如果t检验相当对称,则t检验可以忍受很多非正态性,但不能忍受太多不对称。(正因为如此,对正态性的偏度检验实际上可能比KS检验在OP中是更好的选择。)这指出了拟合优度检验与其他假设检验之间的最大差异之一:存在巨大差异可能的替代方法和GoF测试的空间往往对某些特定方法有利,而对其他某些方法则不利。您不能使它们在所有替代方案中都能很好地发挥作用。
ub

-2

这里提出的问题有一个误解,即为什么样本量为6的样本需要进行Normality检查。这里的主要目标是“测试在代码版本A中花费的时间是否与在代码版本B中花费的时间不同(这是我的H1)”。当使用“ differ”一词时,它是一次尾巴测试吗?但是,正常性测试是第二步。第一步是在给定的样本量非常差的情况下,检查给定样本大小的测试的预定(1-β)功效是否足够,那么正常条件测试的用途是什么?正常状态检查将帮助我们确定是否要进行参数测试或非参数测试?如果您的样本量没有足够的功效,为什么应该考虑进行正态性检验?


(-1)这还不清楚。请阅读有关如何回答问题的本页
恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.