我读过当样本的分布偏离正态性时,t检验“相当稳健”。当然,重要的是差异的抽样分布。我有两组数据。其中一组在因变量上高度倾斜。两组的样本量都非常小(其中一组 n = 33,另一组 n = 45)。我是否应该假设,在这些条件下,我的t检验对于违反正态性假设是稳健的?
当样本分布非正态时,独立样本 t 检验的稳健性如何?
关于稳健性的问题很难很好地回答——因为这些假设可能会以多种方式被违反,而且每种方式的违反程度都不同。模拟工作只能对可能的违规行为进行采样。
考虑到计算的状态,我认为通常值得花时间同时运行参数和非参数测试,如果两者都可用的话。然后,您可以比较结果。
如果你真的有野心,你甚至可以做一个排列测试。
如果艾伦图灵在罗纳德费舍尔之前完成了他的工作怎么办?:-)。
@PeterFlom 的第一句话就一针见血。
我将尝试对我所看到的研究进行粗略的总结(如果您需要链接,可能需要一段时间):
总体而言,两个样本 t 检验对对称非正态性具有相当的功效鲁棒性(真实的 I 型错误率在一定程度上受峰度影响,功效主要受峰度影响)。
当两个样本向同一方向轻微倾斜时,单尾 t 检验不再是无偏的。t 统计量与分布相反,如果测试在一个方向上比在另一个方向上具有更大的功效。如果它们向相反方向倾斜,则 I 型错误率可能会受到严重影响。
严重的偏度可能会产生更大的影响,但一般来说,如果您不介意您的测试本质上将更多的力量分配给另一个方向,那么带有双尾测试的中等偏度并不算太糟糕。
简而言之 - 如果您可以容忍对显着性水平的一些影响和一些轻微的偏差,那么双尾双样本 t 检验对这些事情是相当稳健的。
但是,有很多很多方法可以使分布变得非正态,这些评论并未涵盖这些方法。
@PeterFlom 已经提到模拟研究永远无法涵盖所有场景和可能性,因此无法得出明确的答案。但是,我仍然发现通过进行一些模拟来实际探索这样的问题是有用的(这也恰好是我在向学生介绍蒙特卡罗模拟研究的想法时喜欢使用的练习类型)。所以,让我们实际尝试一下。我将为此使用 R。
编码
n1 <- 33
n2 <- 45
mu1 <- 0
mu2 <- 0
sd1 <- 1
sd2 <- 1
iters <- 100000
p1 <- p2 <- p3 <- p4 <- p5 <- rep(NA, iters)
for (i in 1:iters) {
### normal distributions
x1 <- rnorm(n1, mu1, sd1)
x2 <- rnorm(n2, mu2, sd2)
p1[i] <- t.test(x1, x2)$p.value
### both variables skewed to the right
x1 <- (rchisq(n1, df=1) - 1)/sqrt(2) * sd1 + mu1
x2 <- (rchisq(n2, df=1) - 1)/sqrt(2) * sd2 + mu2
p2[i] <- t.test(x1, x2)$p.value
### both variables skewed to the left
x1 <- -1 * (rchisq(n1, df=1) - 1)/sqrt(2) * sd1 + mu1
x2 <- -1 * (rchisq(n2, df=1) - 1)/sqrt(2) * sd2 + mu2
p3[i] <- t.test(x1, x2)$p.value
### first skewed to the left, second skewed to the right
x1 <- -1 * (rchisq(n1, df=1) - 1)/sqrt(2) * sd1 + mu1
x2 <- (rchisq(n2, df=1) - 1)/sqrt(2) * sd2 + mu2
p4[i] <- t.test(x1, x2)$p.value
### first skewed to the right, second skewed to the left
x1 <- (rchisq(n1, df=1) - 1)/sqrt(2) * sd1 + mu1
x2 <- -1 * (rchisq(n2, df=1) - 1)/sqrt(2) * sd2 + mu2
p5[i] <- t.test(x1, x2)$p.value
}
print(round((apply(cbind(p1, p2, p3, p4, p5), 2, function(p) mean(p <= .05))), 3))
解释
首先,我们设置组大小 (
n1
andn2
)、真实组均值 (mu1
andmu2
) 和真实标准差 (sd1
andsd2
)。然后我们定义要运行的迭代次数并设置向量来存储 p 值。
然后我模拟了5种场景下的数据:
- 两种分布都是正常的。
- 两种分布都向右倾斜。
- 两种分布都向左倾斜。
- 第一个分布偏左,第二个偏右。
- 第一个分布向右倾斜,第二个向左倾斜。
请注意,我使用卡方分布来生成偏态分布。对于一个自由度,这些是严重偏斜的分布。由于具有一个自由度的卡方分布的真实均值和方差分别等于 1 和 2(参见 wikipedia),因此我将这些分布重新缩放为首先具有均值 0 和标准差 1,然后重新缩放它们以具有期望的真实平均值和标准偏差(这可以一步完成,但这样做可能更清楚)。
在每种情况下,我都应用 t 检验(Welch 的版本——当然也可以考虑假设两组方差相等的 Student 版本)并将 p 值保存到之前设置的向量中。
最后,一旦所有迭代完成,我计算每个向量的 p 值等于或低于 0.05 的频率(即,测试是“显着的”)。这是经验拒绝率。
一些结果
完全按照上述方式进行模拟会产生:
p1 p2 p3 p4 p5 0.049 0.048 0.047 0.070 0.070
因此,当两组的偏度方向相同时,I 类错误率似乎非常接近得到很好的控制(即非常接近标称)。当偏度方向相反时,I 类错误率会有一些轻微的膨胀。
如果我们将代码更改为
mu1 <- .5
,那么我们得到:p1 p2 p3 p4 p5 0.574 0.610 0.606 0.592 0.602
因此,与两种分布都为正态的情况(如测试所假设的那样)相比,当偏度在同一方向时,功效实际上似乎略高!如果您对此感到惊讶,您可能需要重新运行几次(当然,每次得到的结果都略有不同),但模式将保持不变。
请注意,在偏度方向相反的两种情况下,我们必须小心解释经验功率值,因为 I 类错误率不是很正常(作为极端情况,假设无论数据如何,我总是拒绝显示;那么我将始终进行具有最大功效的测试,但当然该测试也具有相当夸大的 I 类错误率)。
mu1
人们可以开始探索(和——但真正重要的是两者之间的差异)的一系列值mu2
,更重要的是,开始改变两组(即sd1
和sd2
)的真实标准差,尤其是使它们不相等。我也坚持 OP 提到的样本大小,但当然也可以调整。偏度当然可以采取许多其他形式,而不是我们在具有一个自由度的卡方分布中看到的形式。我仍然认为以这种方式处理事情是有用的,尽管它不能产生明确的答案。
在您的情况下,t 检验在类型 I 错误率方面可能是稳健的,但不是类型 II 错误率。您可能会通过 a) Kruskal-Wallis 检验或 b) 在 t 检验之前进行归一化转换来获得更多功效。
我的这个结论是基于两项蒙特卡洛研究。首先(Khan & Rayner, 2003),通过 g 和 k 分布族的参数间接操纵偏斜和峰度,并检查产生的功率。重要的是,Kruskal-Wallis 检验的功效受到非正态性的损害较小,特别是对于 n>=15。
关于这项研究的一些注意事项/限定条件: 高峰态通常会损害功率,但受偏斜的影响较小。乍一看,这种模式似乎与您的情况不太相关,因为您注意到了偏斜问题,而不是峰度问题。但是,我敢打赌,在您的情况下,过度峰态也是极端的。请记住,过度峰度至少与 skew^2 - 2 一样高。(让过度峰度等于第 4 个标准化矩减去 3,因此对于正态分布,过度峰度 = 0。)另请注意,Khan 和 Rayner ( 2003)检查了 3 组的 ANOVA,但他们的结果可能会推广到两个样本的 t 检验。
第二项相关研究 ( Beasley, Erikson, & Allison, 2009) 检查了具有各种非正态分布的 I 类和 II 类错误,例如卡方 (1) 和 Weibull (1,.5)。对于至少 25 个样本大小,t 检验将 I 类错误率充分控制在或低于标称 alpha 水平。然而,使用 Kruskal-Wallis 检验或在 t 检验之前应用基于秩的逆正态变换(Blom 分数)时,功效最高。Beasley 及其同事普遍反对归一化方法,但需要注意的是,归一化方法控制了 n>=25 的 I 类错误率,其功效有时略高于 Kruskal-Wallis 检验。也就是说,规范化方法似乎对您的情况很有希望。有关详细信息,请参阅他们文章中的表 1 和表 4。
参考:
Khan, A. 和 Rayner, GD (2003)。多样本位置问题的常见测试对非正态性的鲁棒性。应用数学与决策科学杂志,7,187-206。
Beasley, TM, Erickson, S., & Allison, DB (2009)。基于秩的逆正态变换越来越多地使用,但它们值得吗?行为遗传学,39,580-595。