我在某处读到t检验是为小样本设计的,为什么会这样?如果我使用总体中的大样本进行 t 检验怎么办?这会是一个问题还是有潜在的影响?
为什么 t 检验是针对小样本设计的?
您的问题和您迄今为止收到的一些答案存在根本性的误解。
的选择-测试或-test 是关于检验统计量的性质,特别是样本均值的抽样分布的方差是否已知(-test)或未知,必须从样本(-测试)。
这些测试中的任何一个在统计推断方面的表现如何取决于一个基本假设,即数据是来自正态分布的实现。然而,由于中心极限定理,样本量越大,这两个检验对于偏离正态性的稳健性就越强,因为随着样本量的增加,CLT 表明样本均值(在一定的规律性条件下)将渐近趋于正态分布。
这两件事(已知方差与未知方差,以及样本量与渐近正态性之间的关系)在统计实践中通常混为一谈。它们不是同一件事。为了显示:
- 如果数据确实是正态分布的观察值,但分布的均值未知且方差已知,则样本量无关紧要——即使样本量为足以说明检验统计量是完全正态分布的。仍然可以使用非常小的样本量进行推断-统计。
- 如果数据确实是来自上述正态分布的观察值,但方差未知,则检验统计量正是_ -分布式,因为是完全正态分布的并且正好是卡方分布。
- 如果数据不是从正态分布生成的,但方差是已知的,那么是否-test 可能使用取决于样本大小。具体来说,如果样本量足够大(其中“大”取决于偏离正态性的程度,但在实践中通常是未知的),那么-test 可能是一个可接受的近似值。否则,应使用位置的非参数(即假设无分布)测试,以避免控制 I 类错误的潜在失败。但是-test不应该在这里使用。
- 如果数据不是从正态分布生成的,并且方差未知,那么选择是检验或非参数检验,具体取决于偏离正态性的程度和样本量。如果偏离正态性很小,那么-test 相当稳健,即使样本量很小也可能是合理的。但在与正态性偏差较大的小样本情况下,应使用非参数检验。如果样本量很大,到 CLT 发挥作用的地步,通常情况下两者之间几乎没有差别。-测试和-测试,因为自由度通常足够高,以至于临界值几乎相同。
我希望这可以澄清情况,因为很多使用单变量假设检验的人都没有做到这一点。
我认为这是对报价来源的轻微误读。毫无疑问,当他发明化名 Gosset 的测试时,他试图解决小样本问题,因为这是他在工作中遇到的问题。所以他为小样本设计了它们。这一历史事实并不意味着它们不适用于大样本。
在他的原始论文中,他概述了这个问题
在日常工作中,有两种方法可以解决这个困难:(1)一个实验可能会重复很多次,直到获得如此长的系列,以至于标准偏差可以以足够的准确性一劳永逸地确定。然后,该值可用于后续较短系列的类似实验。
并指出
然而,还有一些其他的实验不容易经常重复。在这种情况下,有时有必要从一个非常小的样本中判断结果的确定性,而这本身就是可变性的唯一指示。一些化学的、许多生物的以及大多数农业和大规模的实验都属于这一类,迄今为止几乎已经超出了统计调查的范围。
Gosset 本人正在与酿酒商 Guinness 合作,并面临他在那段中提到的无法进行大规模重复的问题,即使他可以将情节重复多次,也几乎可以肯定会随着时间的推移而漂移。
这些引述来自他 1908 年在 Biometrika 中的文章“平均值的可能错误”,该文章已被广泛转载。
问题-测试与-测试?@user2974951 建议的似乎相关,但也许那里的答案仍然有点抽象。我喜欢以这种方式看待它,但可能不是 100% 正确。
在样本量较小的情况下,两个样本中的一个相对可能会收到一个稍微极端的数据点,该数据点会扭曲其均值,并让您认为这两个样本之间存在真正的差异,而实际上什么都没有发生。为了纠正这种小尺寸效应,在声称“差异显着性”之前,您允许样本之间差异的更多极端值相对可能。即t 分布,根据它映射 t 统计量的值以获得 p 值,具有比正态分布更胖的尾巴。随着样本量的增加,这种校正变得可以忽略不计,您无需担心使用正态分布或 T 分布(或 T 检验与 Z 检验)。
这是一个使用模拟的示例。我们将治疗与对照进行比较,实际上两者之间没有区别。我们模拟来自正态分布的数据,因此不会出现数据正态性、不等方差等问题。由于零假设成立,通过多次重复抽样和测试,我们预计约 5% 的测试具有 p < 0.05 . 如果我们使用 t.test 这实际上是这种情况,但如果我们使用 Z 测试(即我们不考虑小样本量),我们会得到更多的误报。在这里,样本量只有 N=3:
set.seed(1234)
N <- 10000
t.pvalue <- rep(NA, N)
z.pvalue <- rep(NA, N)
z.test <- function(x, y) {
diff <- mean(x) - mean(y)
sd_diff <- sqrt(var(x)/length(x) + var(y)/length(y))
z <- diff/sd_diff
p <- (1 - pnorm(abs(z))) * 2
return(p)
}
my.t.test <- function(x, y) {
# Custom t-test instead of R's to make things
# more transparent
stopifnot(length(x) == length(y))
diff <- mean(x) - mean(y)
sd_diff <- sqrt(var(x)/length(x) + var(y)/length(y))
z <- diff/sd_diff
df <- (2 * length(x)) - 2
p <- (1 - pt(abs(z), df= df)) * 2
return(p)
}
for(i in 1:N) {
treat <- rnorm(n= 3, mean= 10)
ctrl <- rnorm(n= 3, mean= 10)
t.pvalue[i] <- my.t.test(treat, ctrl)
z.pvalue[i] <- z.test(treat, ctrl)
}
sum(t.pvalue < 0.05) # 499 "false positives" as expected
sum(z.pvalue < 0.05) # 1234 "false positives"
T 检验的行为与预期一致,给出了 499 个 p < 0.05 的情况,Z 检验给出了更多,1234。如果你用更大的 N 重新运行模拟,比如说,rnorm(n= 30, ...)
失真消失了。
您还可以检查 pvalues 的分布,注意在原假设下,分布应该在 0 和 1 之间均匀(平坦)。这是 T 检验的情况,但不是 Z 检验的情况:
par(mfrow= c(1, 2))
hist(t.pvalue)
hist(z.pvalue)
简短的回答:当人们说 t 检验(即基于分布的检验)是为小样本“设计”时,他们的意思是,如果你有一个小样本,那么 at test 将比 a 更准确“z 检验”(基于正态分布)。如果在 test 和 az test 曾经给你不同的答案(这只会在小样本量下发生),你应该更喜欢 t test 答案。但是随着样本量的增加,这两个测试彼此接近,所以你使用哪个并不重要。
更长的答案:这两个测试的基本逻辑是我们知道与使用随机样本(而不是整个人口)相关的错误总是会有一个特定的钟形分布。无论所讨论的变量的分布如何,这都是正确的。如果我们知道该分布的形状,我们可以使用它来计算两个看起来不同的估计值在基础人群中真正不同的可能性有多大(这是 t 检验试图弄清楚的)。
现在,当样本量“大”时,这些抽样误差由著名的正态曲线描述。但是随着样本量变小,正态曲线最终变得太“瘦”,无法描述错误在现实中的实际工作方式。所以我们使用另一种分布 - t 分布 - 它类似于正态曲线,但增加了一些取决于样本大小的“肥胖”。这意味着不只有一个 t 分布 - 存在无限数量,每个可能的样本量都有一个。但是样本量越大,t 分布和正态分布看起来越接近,所以你使用什么并不重要,因为它们会给你相同的答案。但是,如果存在 t 分布和正态分布确实给您不同答案的情况,那么您应该使用 t 分布,