我只是进行了简单的模拟。用不同的手段和相同的方差制造了两个“人口”。由于我准备了它们,我知道它们:正常,位置不同,并且都具有相同的规模。然后我在 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