在我的脑海里有一个非常令人困惑的问题。我有数据,想比较男性和女性的分数。
这两组之间存在很大差异:男性人数为 34 人,女性人数为 310 人,并且差异不相等。
据我所知,当方差不相等时,我可以使用 Welch-Satterthwaite 方程(假设方差不等的独立 t 检验)。我的问题是:尽管我的两个样本之间的样本量存在很大差异,但我仍然可以使用这个等式吗?还是两个样本之间的样本量差异有一定的限制?
在我的脑海里有一个非常令人困惑的问题。我有数据,想比较男性和女性的分数。
这两组之间存在很大差异:男性人数为 34 人,女性人数为 310 人,并且差异不相等。
据我所知,当方差不相等时,我可以使用 Welch-Satterthwaite 方程(假设方差不等的独立 t 检验)。我的问题是:尽管我的两个样本之间的样本量存在很大差异,但我仍然可以使用这个等式吗?还是两个样本之间的样本量差异有一定的限制?
据我所知,当方差不相等时,我可以使用 Welch-Satterthwaite 方程,我的问题是我是否仍然可以使用这个方程,尽管两个样本之间确实存在很大差异?还是两个样本之间的差异有一定的限制?
使用来自 Welch-Satterthwaite 方程的具有自由度的缩放卡方分布来估计样本均值差异的方差只是一种近似值 - 在某些情况下,该近似值比其他情况更好。
事实上,我认为解决这个问题的任何方法都将是近似的。这就是著名的Behrens-Fisher问题。正如链接右上角所说,只有近似解是已知的。
所以简短的回答是它本质上永远不会完全正确——你可以随时使用它——如果你能容忍你的显着性水平和 p 值因此不精确的事实;至于你能走多远并且仍然乐于使用它取决于你。有些人比其他人更能容忍近似显着性水平和 p 值*
*(在我倾向于使用假设检验的情况下,只要我知道效果的方向和某种界限感,我倾向于非常容忍与名义不同的显着性水平;但如果我是试图在期刊上发表科学结果,我可能会更详细地记录近似值的可能影响——通过模拟。)
那么近似值的表现如何呢?
所有分布都是正常的:
当样本量接近相等时,韦尔奇检验给出了非常接近正确的显着性水平(另一方面,当样本量相等时,等方差 t 检验也做得相当好,通常只有适度膨胀较小样本量的显着性水平)。
随着组大小变得更加不平等,I 类错误率变得小于标称(“保守”)。这会影响韦尔奇和普通的两个样本测试在同一方向上。功率也可能很低。
分布偏斜:
如果分布偏斜,则对显着性水平和功效的影响可能更大,您必须更加谨慎(对于偏斜和不等方差,我经常倾向于使用 GLM,只要方差似乎可能与以适当的方式获取平均值 - 例如,如果散布随平均值增加,则 Gamma GLM 可能会很好地工作)
本文档讨论了 Welch 检验、普通 t 检验和等方差和不等方差下的置换检验以及正态分布和偏态分布的小型模拟研究。它建议:
当数据正常、样本量较小且方差不均匀时,使用 Welch 校正的检验很有用。
这似乎与我在其他时间读到的内容大体一致。
然而,在后面的部分中,更深入地阅读了模拟结果的细节,他们继续说:
在样本量不平等的最极端情况下避免 Welch 校正 t 检验(低功效)
尽管该建议是基于较小样本中的非常小的样本量。它不是按照您拥有的样本量进行的。
[当对某些特定情况下某些程序的可能行为有疑问时,我喜欢运行自己的模拟。在 R 中它非常简单,通常只需几分钟——包括编码、模拟运行和结果分析——就可以很好地了解属性)。]
我认为,对于一个非常大的样本和一个中等样本量,正如你所拥有的,应用 Welch 测试应该仍然存在相对较小的问题。我现在会用模拟仔细检查一下。
我的模拟结果:
我使用了你的样本量。这些模拟是正常的。
为真时,测试的影响有多严重?
一种。大样本组的总体标准差是小样本组的 3 倍。
Welch 测试非常接近标称的类型 1 错误率。等方差 t 检验确实没有。它的显着性水平非常低,几乎为零。
湾。小样本组的总体标准差是大样本的 3 倍。
Welch 测试非常接近标称的类型 1 错误率。等方差 t 检验没有;它的显着性水平被夸大了。
事实上,等方差测试受到了严重影响,我根本不会使用它;如果不调整显着性水平的差异,比较功效几乎没有意义。
如此大的样本量(意味着其平均值的不确定性相对非常小),出现了另一种可能性:对大样本的平均值进行单样本测试,就好像它是固定的一样。事实证明,当较小的总体标准差在较大的样本中时,显着性水平非常接近名义值。在这种情况下,它的效果相对较好。
当较大样本中的总体标准差较大时,类型 1 错误率有些膨胀(这看起来与对 Welch 检验的影响相反)。
置换检验的讨论
AdamO 和我讨论了我在这种情况下的置换测试问题(位置差异测试中的不同人口差异)。他要我做一个模拟,所以我就在这里做。我上面给出的论文的链接也对置换测试进行了模拟,这似乎与我的发现大体一致。
基本问题是在方差不等的位置的两个样本测试中,在零值下,观测值是不可交换的。我们不能在不显着影响结果的情况下互换标签。
例如,假设我们有 334 个观察值,其中 90% 的机会有一个标签,并且来自正态分布,,有 10% 的机会有一个标签,来自一个正态分布,。进一步想象。观察结果是不可交换的——尽管大多数观察结果来自样本,但最大和最小的少数观察结果更有可能来自样本 B 而不是样本 A 并且中间的观察结果更有可能来自样本 A (远远超过他们在观察中应该有的 90% 的机会是可交换的)。这个问题影响 null 下 p 值的分布。(但是,如果样本量相等,则影响很小。)
让我们按照要求通过模拟来看看。
我的代码不是特别花哨,但它完成了工作。在三种情况下,我为问题中提到的样本量模拟了相等的平均值:
1) 等方差
2)较大的样本来自具有较大标准偏差的总体(是另一个的3倍)
3)较小的样本来自具有较大方差(3倍大)的总体
我们对假设检验感兴趣的一件事是“如果我继续对这些人群进行抽样并多次进行此检验,那么我的 I 类错误率是多少”?
我们可以在这里计算。该过程包括绘制符合上述条件的正态样本,具有相同的平均值,然后计算样本在排列分布中的分位数。因为我们这样做了很多次,这涉及到模拟许多样本,然后在每个样本中,重新采样数据的许多重新标记,以获得以该样本为条件的排列分布。对于每个模拟样本,我得到一个 p 值(通过将原始样本的均值差异与该特定样本的排列分布进行比较)。对于许多这样的样本,我得到了 p 值的分布。这告诉我们概率,给定两个具有相同平均值的总体,我们将抽取一个样本来拒绝零值(这是 I 类错误率)。
这是一个这样的模拟的代码(上面的案例 2):
nperms <- 3000; nsamps <- 3000
n1 <- 310; n2 <- 34; ni12 <- 1/n1+1/n2
s1 <- 3; s2 <- 1
simpv <- function(n1,n2,s1,s2,nperms) {
x <- rnorm(n1,s = s1);y <- rnorm(n2,s = s2)
sdiff <- mean(x)-mean(y)
xy <- c(x,y)
sn1 <- sum(xy)/n1
diffs <- replicate(nperms,sn1-sum(sample(xy,n2))*ni12)
sum(sdiff<diffs)/nperms
}
pvs1big <- replicate(nsamps,simpv(n1,n2,s1,s2,nperms))
对于其他两种情况,代码是相同的,除了我更改了s1=
and s2=
(并且还更改了我存储 p 值的内容)。对于案例 1,s1=1; s2=1
对于案例 3s1=1; s2=3
现在在 null 下,p 值的分布应该基本上是均匀的,否则我们没有广告中的 I 类错误率。(正如执行的那样,p 值对于 1 尾测试有效,但是您可以通过查看 p 值分布的两端来了解双尾测试会发生什么。它们恰好是对称的,所以它不会事情。)
这是结果。
案例 1 在左上角。在这种情况下,这些值是可交换的,我们看到 p 值的分布非常均匀。
案例 2 在右上角。在这种情况下,较大的样本具有较大的方差,我们看到 p 值集中在中心。我们拒绝在典型显着性水平上的空案例的可能性比我们认为的要小得多。即第一类错误率远低于标称错误率。
案例 3 位于右下角。在这种情况下,较小的样本具有较大的方差,并且我们看到 p 值集中在两端 - 在零值下,我们拒绝的可能性比我们认为的要大得多。显着性水平远高于名义比率。
在Good中讨论Behrens Fisher问题
AdamO 提到的 Good Book 在第 54-57 页确实讨论了这个问题。
他提到了 Romano 的一个结果,该结果表明置换检验是渐近精确的,前提是它们具有相同的样本量。在这里,当然,他们没有 - 而不是 50-50,他们大约是 90-10。
当我模拟相同样本量的情况(我尝试了 n1=n2=34)时,p 值分布与均匀性相差不远**——它偏离了少量但不足以担心。这是众所周知的,许多已发表的模拟研究证实了这一点。
**(我没有包含代码,但是修改上面的代码很简单——只需将 n1 更改为 34)
古德说,相同样本量情况下的行为适用于非常小的样本量。我相信他!
引导测试怎么样?
那么如果我们要尝试引导测试而不是置换测试呢?
通过引导测试*,我的反对意见不再成立。
*例如,一种方法可能是为均值差异构建一个 CI,如果均值的 95% 区间不包括 0,则在 5% 的水平上拒绝
通过引导测试,我们不再需要能够跨样本重新标记——我们可以在我们拥有的样本中重新采样,并且仍然可以获得适合均值差异的 CI。通过一些通常的程序来改进引导程序的属性,这样的测试在这些样本量下可能会很好地工作。
@Glen_b 的响应提示的一个选项是置换测试,其中随机置换暴露(组标签)以获得零假设下的测试统计量的抽样分布,而不考虑数据本身的参数分布。
## example of permutation test
set.seed(1)
men <- rexp(30, 1.3)
women <- rexp(300, 0.8)
stacked <- c(men, women)
labels <- c(rep('m', 30), rep('w', 300))
o.diff <- diff(tapply(stacked, labels, mean))
d.null <- replicate(5000, {
diff(tapply(stacked, sample(labels), mean))
})
b <- hist(d.null, plot=FALSE)
col <- ifelse(b$breaks > o.diff, 'green', 'white')
plot(b, col=col)
text(o.diff, par()$yaxp[2], paste0('P - value = ', mean(d.null > o.diff)))
abline(v=o.diff)