当没有成对 t 检验时,ANOVA 是否显着?

机器算法验证 统计学意义 方差分析 t检验 事后
2022-01-19 01:03:14

成对 t 检验都没有时,单向(组或“水平”)ANOVA 是否有可能报告显着差异N>2N(N1)/2

这个答案中@whuber 写道:

众所周知,全局 ANOVA F 检验可以检测到平均值的差异,即使在任何一对平均值的单个 [未调整的成对] t 检验都不会产生显着结果的情况下。

所以显然这是可能的,但我不明白如何。它什么时候发生,这种情况背后的直觉是什么?也许有人可以提供这种情况的简单玩具示例?

一些进一步的说明:

  1. 相反的情况显然是可能的:整体 ANOVA 可能不显着,而一些成对 t 检验错误地报告显着差异(即那些将是假阳性)。

  2. 我的问题是关于标准的,未针对多重比较 t 检验进行调整的。如果使用调整后的测试(例如 Tukey 的 HSD 程序),那么即使整体 ANOVA 是显着的,它们也可能没有显着性。这在几个问题中有所涉及,例如,如何获得显着的整体方差分析,但与 Tukey 的程序没有显着的成对差异?显着的方差分析交互作用,但非显着的成对比较

  3. 更新。我的问题最初是指通常的两样本成对 t 检验。但是,正如@whuber 在评论中指出的那样,在 ANOVA 上下文中,t 检验通常被理解为使用组内方差的 ANOVA 估计的事后对比,汇集到所有组中(这不是在两个组中发生的情况) -样本 t 检验)。所以我的问题实际上有两个不同的版本,而且对它们的答案都是肯定的。见下文。

3个回答

注意:我原来的例子有问题。我愚蠢地被 R 的无声参数回收抓住了。我的新示例与我的旧示例非常相似。希望现在一切正常。

这是我制作的一个示例,其方差分析在 5% 的水平上显着,但 6 个成对比较中没有一个是显着的,即使在 5% 的水平上也是如此

这是数据:

g1:  10.71871  10.42931   9.46897   9.87644
g2:  10.64672   9.71863  10.04724  10.32505  10.22259  10.18082  10.76919  10.65447 
g3:  10.90556  10.94722  10.78947  10.96914  10.37724  10.81035  10.79333   9.94447 
g4:  10.81105  10.58746  10.96241  10.59571

在此处输入图像描述

这是方差分析:

             Df Sum Sq Mean Sq F value Pr(>F)  
as.factor(g)  3  1.341  0.4469   3.191 0.0458 *
Residuals    20  2.800  0.1400        

这是两个样本 t 检验 p 值(等方差假设):

        g2     g3     g4
 g1   0.4680 0.0543 0.0809 
 g2          0.0550 0.0543 
 g3                 0.8108

通过对组均值或单个点进行更多的摆弄,可以使显着性差异更加显着(因为我可以使第一个 p 值更小,并使 t 检验的六个 p 值中的最低值更高)。

--

编辑:这是一个额外的例子,它最初是用关于趋势的噪音产生的,它显示了如果你稍微移动点可以做得更好:

g1:  7.27374 10.31746 10.54047  9.76779
g2: 10.33672 11.33857 10.53057 11.13335 10.42108  9.97780 10.45676 10.16201
g3: 10.13160 10.79660  9.64026 10.74844 10.51241 11.08612 10.58339 10.86740
g4: 10.88055 13.47504 11.87896 10.11403

F 的 p 值低于 3%,并且没有一个 t 的 p 值低于 8%。(对于 3 组示例 - 但 F 上的 p 值稍大 - 省略第二组)

这是一个非常简单的例子,如果更人为的话,有 3 个组:

g1: 1.0  2.1
g2: 2.15 2.3 3.0 3.7 3.85
g3: 3.9  5.0

(在这种情况下,最大的方差在中间组 - 但由于那里的样本量较大,组均值的标准误差仍然较小)


多重比较 t 检验

whuber 建议我考虑多重比较的情况。事实证明这很有趣。

多重比较的情况(全部在原始显着性水平上进行 - 即不调整多重比较的 alpha)有点难以实现,因为在不同组中使用更大和更小的方差或更多和更少的 df 无济于事与普通的两样本 t 检验一样。

但是,我们仍然有操纵组数和显着性水平的工具;如果我们选择更多的组和更小的显着性水平,那么识别案例就变得相对简单了。这是一个:

取八组将前四组中的值定义为 (2,2.5),将后四组中的值定义为 (3.5,4),并取 (例如)。然后我们有一个显着的 F:ni=2α=0.0025

> summary(aov(values~ind,gs2))
            Df Sum Sq Mean Sq F value  Pr(>F)   
ind          7      9   1.286   10.29 0.00191 
Residuals    8      1   0.125                   

然而,成对比较中的最小 p 值在该水平上并不显着:

> with(gs2,pairwise.t.test(values,ind,p.adjust.method="none"))

        Pairwise comparisons using t tests with pooled SD 

data:  values and ind 

   g1     g2     g3     g4     g5     g6     g7    
g2 1.0000 -      -      -      -      -      -     
g3 1.0000 1.0000 -      -      -      -      -     
g4 1.0000 1.0000 1.0000 -      -      -      -     
g5 0.0028 0.0028 0.0028 0.0028 -      -      -     
g6 0.0028 0.0028 0.0028 0.0028 1.0000 -      -     
g7 0.0028 0.0028 0.0028 0.0028 1.0000 1.0000 -     
g8 0.0028 0.0028 0.0028 0.0028 1.0000 1.0000 1.0000

P value adjustment method: none 

摘要:我相信这是可能的,但非常非常不可能。差异会很小,如果发生这种情况,那是因为违反了假设(例如方差的同方差性)。

这是一些寻找这种可能性的代码。请注意,它每次运行时都会将种子增加 1,以便存储种子(并且对种子的搜索是系统的)。

stopNow <- FALSE
counter <- 0
while(stopNow == FALSE) {
  counter <- counter + 1
  print(counter)
  set.seed(counter)
  x <- rep(c(0:5), 100)
  y <- rnorm(600) + x * 0.01
  df  <-as.data.frame( cbind(x, y))
  df$x <- as.factor(df$x)
  fit <- (lm(y ~ x, data=df))
  anovaP <- anova(fit)$"Pr(>F)"[[1]]
       minTtestP <- 1
      for(loop1 in c(0:5)){
        for(loop2 in c(0:5)) {
          newTtestP <- t.test(df[x==loop1,]$y, df[x==loop2,]$y)$p.value
      minTtestP <- min(minTtestP, newTtestP )    
      }
   }

  if(minTtestP > 0.05 & anovaP < 0.05) stopNow <- TRUE 
  cat("\nminTtestP = ", minTtestP )
  cat("\nanovaP = ", anovaP )
  cat("\nCounter = ", counter, "\n\n" )
}

寻找一个显着的 R2 并且没有不显着的 t 检验,我没有找到 18,000 个种子。从 R2 中搜索比从 t 检验中更低的 p 值,我在种子 = 323 处得到结果,但差异非常非常小。调整参数(增加组数?)可能会有所帮助。R2 p 值可以更小的原因是回归中的参数计算标准误差时,所有组都合并在一起,因此差异的标准误差可能小于 t 检验中的标准误差。

我想知道违反异方差性是否会有所帮助(实际上)。确实如此。如果我使用

y <- (rnorm(600) + x * 0.01) * x * 5

为了生成 y,我在种子 = 1889 处找到了一个合适的结果,其中 t 检验的最小 p 值为 0.061,与 R 平方相关的 p 值为 0.046。

如果我改变组大小(这会增加违反异方差的影响),则将 x 采样替换为:

x <- sample(c(0:5), 100, replace=TRUE)

我在种子 = 531 时得到了显着结果,最小 t 检验 p 值为 0.063,R2 的 p 值为 0.046。

如果我停止校正 t 检验中的异方差性,请使用:

newTtestP <- t.test(df[x==loop1,]$y, df[x==loop2,]$y, var.equal = TRUE)$p.value

我的结论是,这不太可能发生,并且差异可能非常小,除非您违反了回归中的同方差性假设。尝试使用稳健/夹心/任何你想称之为校正的东西来运行你的分析。

完全有可能:

  • 一个或多个成对 t 检验显着,但整体 F 检验不显着
  • 整体 F 检验显着,但成对 t 检验均不显着

总体 F 检验同时检验所有对比。因此,它必须对个体对比(例如:成对检验)不那么敏感(统计功​​效较低)。这两个测试彼此密切相关,但它们报告的内容并不完全相同。

如您所见,除非整体 F 检验显着,否则不进行计划比较的教科书建议并不总是正确的。事实上,该建议可能会阻止我们发现显着差异,因为整体 F 检验的功效低于用于测试特定差异的计划比较。