假设测试会影响 I 类错误吗?

机器算法验证 假设检验 多重比较 假设 邦费罗尼 类型 i 和 ii 错误
2022-03-20 09:27:40

我只是进行了简单的模拟。用不同的手段和相同的方差制造了两个“人口”。由于我准备了它们,我知道它们:正常,位置不同,并且都具有相同的规模。然后我在 R 中编写了简单的脚本,该脚本 1000 次从两个总体中抽取样本,测试它们的正态性(Shapiro-Wilk)、等方差(F)和差异(t)。如果满足 t 检验的假设,我会运行 t 检验。

好吧,实际上我一个一个地运行它们,但是将结果与逻辑 AND 运算符结合起来。所以,如果IsNormal (A) AND IsNormal (B) AND VarsAreEqual (A, B) AND MeansAreDifferent (A, B),那么我计算结果。最后,我将 TRUE 值的数量除以迭代次数。因此,每个假设检验都可能失败。Shapiro-Wilk 可能错误地(它们正常的)拒绝 H0 和 F 检验(它们具有相等的方差)。而且我没有得到接近 0.05 的值!

所以,我的问题是:这是“多重测试”现象(如多重比较)的一个例子吗?如果是这样,那么测试假设呢?这样的测试是至关重要的,因为如果假设没有得到满足,给定测试的抽样分布的分位数可能与预期完全不同,因此给定的结果可能完全没有用。但是对假设的测试显然会改变 alpha。我对么?

也许我们应该对 alpha 使用更正,比如 Bonferroni?

data<- data.frame(populA=rnorm(1000, mean=1), populB=rnorm(1000, mean=3))

iternum <- 1000
alpha   <- 0.05
nsample <- 50
results <- array(FALSE, iternum);

for(i in 1:iternum) {
    sampA <- sample(data$populA, 30);
    sampB <- sample(data$populB, 30);

    result_t <- t.test(sampA, sampB)$p.value;
    result_F <- var.test(sampA, sampB)$p.value;
    result_normA <- shapiro.test(sampA)$p.value;
    result_normB <- shapiro.test(sampB)$p.value;

    results[i] <- (result_normA >= alpha) & (result_normB >= alpha) & 
                  (result_F >= alpha) & (result_t < alpha)
}
> 1-(mean(results))

[1] 0.158
2个回答

一般来说,答案是肯定的,I 类和 II 类错误率都会受到基于假设检验选择检验的影响。

这在方差相等的测试(有几篇论文指出)和正态性测试中得到了很好的证实。应该预料到一般情况会如此。

建议通常是这样的:“如果你不能在没有测试的情况下做出假设,最好简单地表现得好像假设不成立”。

因此,例如,如果您试图在等方差和 Welch 型 t 检验之间做出决定,默认情况下使用 Welch 检验(尽管在相同的样本量下,它对违反该假设具有鲁棒性)。

类似地,在中等较小的样本中,默认情况下使用置换检验比检验正态性然后使用 t 检验(在大样本中,t 检验通常是level-robust 足够强大以至于在大多数情况下它不太可能成为一个大问题,如果样本也足够大以至于您不担心对功率的影响)。或者,与正常情况下的 t 检验相比,Wilcoxon-Mann-Whitney 具有非常好的功效,并且通常是非常可行的替代方案。

[如果由于某种原因您需要进行测试,最好了解测试的显着性水平和功效可能在多大程度上受到任何结果选择的影响,假设测试会引导您。这将取决于具体情况;例如,模拟可用于帮助调查类似情况下的行为。] *(但不是很小,因为检验统计量的离散性会过多地限制可用的显着性水平;特别是,在非常小的样本量下,可能的显着性最小水平可能不切实际地大)

在等方差-t 与 Welch-t 位置测试之间进行选择时,有关测试异方差性的参考(带有更多链接)在这里

在 t 检验和 Wilcoxon-Mann-Whitney 检验之间进行选择之前,我还有一个用于检验正态性的案例(参考 [3]此处)。

只是对这个话题的一个想法。

确实,当用许多不同的测试来测试假设时,你最终会得到一个高于类型 I 错误率(其中是每个单独测试的显着性水平测试),只是根据标准的多个测试问题.αα

但是在测试假设时,通常第一类错误不如第二类错误那么糟糕!例如,如果您的数据不正常并且您错误地拒绝,那么您可以继续使用更稳健的测试,如果数据正常,该测试(可能)仍然有效另一方面,如果你没有拒绝但数据不正常,那么你错误地假设正常,导致已知的无效假设问题。

在进行多重比较程序(即 Bonferroni 等)时,我们试图保持第一类错误率,但代价是更高的第二类错误率。关于测试假设,这似乎是一个愚蠢的想法,因为 II 类错误的成本更高。

当然,您可以更进一步,问我们为什么要使用显着性水平来检验假设,而这才是我们真正应该关注的力量。如果你这样做了,我会同意你的看法,但我现在还没有准备好打开那整罐蠕虫。