评估正态性检验的功效(用R表示)


9

我想评估R中不同样本量的正态性检验的准确性(我意识到正态性检验可能会产生误导)。例如,要查看Shapiro-Wilk检验,我正在进行以下模拟(以及绘制结果),并希望随着样本数量的增加,拒绝null的可能性降低:

n <- 1000
pvalue_mat <- matrix(NA, ncol = 1, nrow = n)

for(i in 10:n){
    x1 <- rnorm(i, mean = 0, sd = 1)
    pvalue_mat[i,] <- shapiro.test(x1)$p.value
}   

plot(pvalue_mat)

我的想法是,随着样本数量的增加,拒绝率应该会降低,但是看起来相当一致。我想我对此有误解-任何想法都欢迎。


Answers:


7

您在零假设(正态分布)下进行模拟,因此拒绝率将趋向于达到预期的显着性水平。要评估功率,您需要在任何非正态分布下进行仿真。根据您的研究范围,可以选择无限的可能性/方案(例如,偏度增大的伽马分布,df减小的t分布等)。


感谢您的回复。当我在非正态分布上进行仿真时,会观察到相对于原点的凸起图案-即,随着任何非正态分布的样本量变大,拒绝正态零值的可能性就会增加。但是,我不明白为什么从正态分布中得出时不是倒数:为什么不随着样本量的增加而拒绝零值下降的可能性?谢谢
user94759

3
因为根据定义,犯下此类1类错误的概率等于重要性级别,该级别是恒定的。或者换句话说,p值在空值下均匀分布。顺便说一句,建议对每个设置进行许多模拟,包括选择n,而不仅仅是代码中的模拟。
Michael M

7

通过执行一些并仔细查看结果,可以增强对统计假设检验的功效分析的理解。


根据设计,尺寸的测试是打算用至少的一个机会,拒绝零假设当空为真(其预期的假阳性率)。αα 当我们有能力(或奢侈地)在具有此属性的替代程序中进行选择时,我们会更喜欢那些(a)实际上接近名义假阳性率,并且(b)在存在原假设时拒绝原假设的机会相对较高不对。

第二个标准要求我们规定以什么方式以及无效的数量是多少。在教科书的情况下,这很容易,因为替代方法的范围有限且明确指定。对于诸如Shapiro-Wilk之类的分布测试,替代方案更加模糊:它们是“非正常的”。然后,在分配测试中进行选择时,分析师可能必须进行自己的一次性能力研究,以评估测试与当前问题相关的更具体的替代假设的效果如何。

迈克尔·迈耶(Michael Mayer)的答案激发了一个例子,即替代分布的性质可能类似于Student t分布家族的性质。由数字(以及位置和比例)参数化的该族在大的极限内包括正态分布。ν1ν

在这两种情况下,无论是评估实际的测试量或其功效,我们都必须从指定的分布中生成独立的样本,对每个样本进行测试,然后找出其拒绝零假设的比率。 但是,任何测试结果中都有更多信息可用:其P值。通过保留在模拟过程中产生的一组P值,我们可以稍后评估测试可能拒绝任何可能关注的值的空值的速率。因此,功率分析的核心是一个子程序,该子程序会生成此P值分布(通过刚刚描述的仿真,或(有时)使用理论公式)。这是用编写的示例。其论点包括αR

  • rdist,从某个分布中产生随机样本的函数名称

  • n,要求的样品量 rdist

  • n.iter,要获取的样本数量

  • ...,任何要传递给的可选参数rdist(例如自由度)。ν

其余参数控制结果的显示。它们主要是为了方便在此答案中生成数字而包括在内。

sim <- function(rdist, n, n.iter, prefix="",
                breaks=seq(0, 1, length.out=20), alpha=0.05,
                plot=TRUE, ...) {

  # The simulated P-values.
  # NB: The optional arguments "..." are passed to `rdist` to specify
  #     its parameters (if any).
  x <- apply(matrix(rdist(n*n.iter, ...), ncol=n.iter), 2, 
             function(y) shapiro.test(y)$p.value)

  # The histogram of P-values, if requested.
  if (plot) {
    power <- mean(x <= alpha)
    round.n <- 1+ceiling(log(1 + n.iter * power * (1-power), base=10) / 2)
    hist(x[x <= max(breaks)], xlab=paste("P value (n=", n, ")", sep=""), 
         breaks=breaks, 
         main=paste(prefix, "(power=", format(power, digits=round.n), ")", sep=""))
    # Specially color the "significant" part of the histogram
    hist(x[x <= alpha], breaks=breaks, col="#e0404080", add=TRUE)
  }

  # Return the array of P-values for any further processing.
  return(x)
}

您可以看到计算实际上只需要一行;其余代码将绘制直方图。为了说明这一点,让我们用它来计算预期的误报率。“比率”是复数形式,因为测试的属性通常随样本大小而变化。众所周知,当样本量较大时,分布测试对定性较小的替代方法具有较高的功效,因此,本研究着重于在实践中经常应用的小样本范围内的此类测试:通常约到 为了节省计算量那时,我就值仅报告从至5100.n520.

n.iter <- 10^5                 # Number of samples to generate
n.spec <- c(5, 10, 20)         # Sample sizes to study
par(mfrow=c(1,length(n.spec))) # Organize subsequent plots into a tableau
system.time(
  invisible(sapply(n.spec, function(n) sim(rnorm, n, n.iter, prefix="DF = Inf ")))
)

指定参数后,此代码也只是一行。它产生以下输出:

空值的直方图

这是预期的外观:直方图显示从到的整个范围内P值几乎均匀分布。将标称尺寸设置为模拟报告实际上在P值的和之间小于该阈值:这些结果以红色突出显示。这些频率与标称值的接近程度证明了Shapiro-Wilk测试确实如广告所示执行。01α=0.05,.04810.0499

(似乎确实存在P值异常接近高频率的趋势。这几乎不用担心,因为在几乎所有应用程序中,仅查看的P值就等于或小于。)10.2

现在让我们评估一下功率。通过评估从到的几个实例,可以充分研究Student t分布 的值的整个范围。我怎么知道 我使用很少的迭代次数(从到)进行了一些初步运行,这根本不需要时间。现在的代码需要一个双循环(在更复杂的情况下,我们通常需要三个或四个循环来容纳我们需要改变的所有方面):一个研究功率随样本大小的变化,另一个研究功率随样本量的变化自由度。再一次,一切都只用一行代码(第三和最后一行)完成:νν=100ν=11001000

df.spec <- c(64, 16, 4, 2, 1)
par(mfrow=c(length(n.spec), length(df.spec)))
for (n in n.spec) 
  for (df in df.spec)
    tmp <- sim(rt, n, n.iter, prefix=paste("DF =", df, ""), df=df)

直方图

对该表进行一些研究可以很好地了解力量。 我想提请注意其最突出和最有用的方面:

  • 随着自由度从左侧的减少到右侧的,越来越多的P值变小,表明将这些分布与正态分布区分开的能力增加。(功效在每个图标题中均被量化:它等于红色的直方图面积的比例。)ν=64ν=1

  • 随着样本大小从最上面一行的增加到最下面一行的,功效也会增加。n=5n=20

  • 请注意,随着替代分布与零分布之间的差异越来越大,并且样本量增加,P值开始向左收集,但仍有“尾巴”将它们一直扩展到。这是力量研究的特征。它表明测试是一场赌博:即使公然违反了原假设,并且即使我们的样本量相当大,我们的正式测试也可能无法产生重要的结果。1

  • 即使在在右下角,其中的样品的极端情况下由学生t分布中抽取与自由度(柯西分布),功率不是:有一个机会认为 iid Cauchy变量样本与正常值的差异不会达到(即置信度为)与正常值有显着差异。201110086.57=13%205%95%

  • 我们可以通过为这些直方图上的条形上或多或少着色来选择任何值来评估功效。例如,要评估,请在每个直方图的左两个栏中显示颜色,并将其面积估计为总面积的一部分。αα=0.10

    (对于此图来说,对于小于值,此方法效果不太好。实际上,只能将直方图限制在P值范围内(可能从到,并且向他们显示足够详细的信息,以便对功率降至甚至进行视觉评估(这是该选项的目的。)对模拟结果进行后处理可以提供更多细节。α0.05020%α=0.01α=0.005breakssim


有趣的是,实际上可以从三行代码中收集到很多东西:一行用于模拟指定分布中的iid样本,一行将其应用于空分布数组,第三行将其应用于一组替代分布。这是进行任何功率分析的三个步骤:剩下的只是对结果的总结和解释。


1

(不仅仅是评论,也许不是完整的答案)

[I]期望随着样本数量的增加,拒绝零值减少的可能性

抛开偏见测试的考虑(在拟合优度上并不罕见,因此值得一提),可能需要考虑三种与拒绝率有关的情况:

1)从零开始模拟时的拒绝率(就像您在问题中所做的那样)

在这里,拒绝率应该等于或接近显着性水平,因此,不,如果您保持显着性水平不变,则拒绝率不会随着n的增加而降低,而是保持在/附近。α

2)从某些替代品进行模拟时的拒绝率

在这里,拒绝率应该随着n的增加而增加。

3)收集某些真实数据的拒绝率

实际上,null永远不会真正地为真,真实数据将具有一定数量的非正态混合(通过测试统计量测得)。如果非正态程度与样本大小无关,则拒绝率应随着n的增加而增加。

因此,实际上,在这些情况下,我们都不应该看到拒绝率随样本大小而降低。

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.