非配对 t 检验需要哪些正态性假设?他们什么时候见面?

机器算法验证 t检验 正态假设 假设
2022-03-01 01:18:06

如果我们希望进行配对 t 检验,则要求是(如果​​我理解正确的话)匹配的测量单位之间的平均差异将呈正态分布。

在配对 t 检验中,这是明确的(AFAIK),要求匹配的测量单位之间的差异将呈正态分布(即使两个比较组中的每一个的分布都不正态)。

但是,在非配对 t 检验中,我们不能谈论匹配单元之间的差异,因此我们要求两组的观察值是正态的,这样它们的均值差就会是正态的。这引出了我的问题:

两个非正态分布是否有可能使得它们的平均值的差异是正态分布的?(因此,据我所知,再次满足我们对它们执行非配对 t 检验的要求)。

更新:(谢谢大家的回答)我看到我们正在寻找的一般规则确实是平均值的差异是正常的,由于 CLT,这似乎是一个很好的假设(在足够大的 n 下)。这对我来说很神奇(并不奇怪,只是很神奇),至于它如何适用于非配对 t 检验,但不适用于单样本 t 检验。这里有一些 R 代码来说明:

n1 <- 10
n2 <- 10
mean1 <- 50
mean2 <- 50
R <- 10000

# diffs <- replicate(R, mean(rexp(n1, 1/mean1)) - mean(runif(n2, 0, 2*mean2)))
# hist(diffs)

P <- numeric(R)
MEAN <- numeric(R)
for(i in seq_len(R))
{
    y1 <- rexp(n1, 1/mean1)
    y2 <- runif(n2, 0, 2*mean2)
    MEAN[i] <- mean(y1) - mean(y2)
    P[i] <- t.test(y1,y2)$p.value
}
# diffs <- replicate(R, mean(rexp(n1, 1/mean1)) - mean(runif(n2, 0, 2*mean2)))
par(mfrow = c(1,2))
hist(P)
qqplot(P, runif(R)); abline(0,1)
sum(P<.05) / R # for n1=n2=10 -> 0.0715 # wrong type I error, but only for small n1 and n2 (for larger ones, this effect disappears)



n1 <- 100
mean1 <- 50
R <- 10000
P_y1 <- numeric(R)

for(i in seq_len(R))
{
    y1 <- rexp(n1, 1/mean1)
    P_y1[i] <- t.test(y1 , mu = mean1)$p.value
}

par(mfrow = c(1,2))
hist(P_y1)
qqplot(P_y1, runif(R)); abline(0,1)
sum(P_y1<.05) / R # for n1=n2=10 -> 0.057  # "wrong" type I error

谢谢。

2个回答

在实践中,中心极限定理向我们保证,在广泛的假设下,当样本量变大时,被测试的两个样本均值的分布本身将接近正态分布,无论(这是假设的来源)基础数据的分布。结果,随着样本量变大,均值的差异变为正态分布,并且满足非配对 t 检验的 t 统计量具有标称 t 分布的必要条件。因此,一个更实际适用的问题可能是,在我可以安全地忽略统计量的实际分布和 t 分布之间的差异之前,样本量必须有多大?

在许多情况下,答案是“不是很大”,尤其是当底层分布非常接近对称时。例如,我模拟了 100,000 次测试,比较了两个 Uniform(0,1) 分布的均值,每个分布的样本大小为 10,并且在 95% 的置信水平下进行测试时,实际上拒绝了 5.19% 的空值 - 几乎没有什么不同与我们希望的标称 5% 拒绝率相比(尽管它比 5% 高出大约 2.7 个标准差。)

这就是为什么人们在基本假设未得到满足的各种情况下使用 t 检验的原因,但当然,您的里程可能会有所不同,具体取决于您的问题的具体情况。但是,还有其他不需要正态性的检验,例如 Wilcoxon 检验,即使数据是正态分布的,它也渐近地是 t 检验的 95% 左右(即,需要样本大小N/0.95 与样本大小为 N 的 t 检验具有相同的功效,因为 N 趋于无穷大)。当数据不是正态分布时,它可能(不一定会)比 t 检验好很多。

当然。如果不是这种情况,那么独立样本 t 检验将没有多大用处。不过,我们确实需要更大的样本量,因为要测试两个非正常人群之间的均值差异,我们需要求助于 CLT。

举个简单的例子,假设我们的人口 1 来自指数,平均为 25,人口 2 均匀分布,平均数为 30。我们甚至会给他们不同的样本大小。我们可以使用 R 相对容易地使用复制函数检查样本均值差异的分布情况。

n1 <- 30
n2 <- 25
mean1 <- 25
mean2 <- 30

diffs <- replicate(10000, mean(rexp(n1, 1/mean1)) - mean(runif(n2, 0, 2*mean2)))
hist(diffs)

玩弄样本量将表明,在低样本量下,我们并没有真正的正态性,但是增加样本量会给我们一个看起来更正常的均值差异的样本分布。当然,您可以更改此示例中使用的分布以进一步探索。历史(差异)