一 052010
传统统计教科书大多会提及t检验中方差齐性这个问题,因为检验的假设条件是需要总体方差相等的。然而这个问题实际上可能并没有人们想象的那么重要,这里给两个简单的数值计算结果,看看方差不等对检验结果有什么影响。
par(mar = c(4, 4, 0.5, 0.5), mfrow = c(1, 2))
set.seed(123)
plot(pval <- t(replicate(1000, {
x1 = rnorm(100, mean = 0, sd = runif(1, 0.5, 1))
x2 = rnorm(100, mean = 1, sd = runif(1, 2, 5))
c(t.test(x1, x2, var.equal = TRUE)$p.value, t.test(x1, x2,
var.equal = FALSE)$p.value)
})), xlab = "P-value: equal variance", ylab = "P-value: unequal variance",
pch = 20, asp = 1)
abline(0, 1)
plot(pval[, 1], pval[, 2] - pval[, 1], xlab = "P-value: equal variance",
ylab = "Diff of p-values (unequal var - equal var)", pch = 20)
过程是:从两个正态总体中生成样本,第一个总体均值为0,标准差随机取自U(0.5, 1),第二个总体均值为1,标准差取自U(2, 5),显然两个总体标准差不相等,那么在t检验时设定和不设定方差相等的选项对结果有多大影响?把两种情况的P值都画出来:左图是原始P值,可见基本在对角线上,说明大致相等,若眼神儿不好,可看右图,即P值的差异,可见方差不等时P值偏大(原因很简单,因为Welch校正的自由度小于等于不校正的自由度,样本量相等的时候统计量的分母即标准误一样,因此统计量完全一样,自由度越小,P值越大嘛),但大多少呢?其实也没大多少。

方差齐与不齐时t检验的结果对照
Welch/Satterthwaite当然不是吃饱了没事干,要校正自由度当然也是有用武之地的,尤其是当样本量严重不相等时,这两者的结果就差远了。把第一个样本量改成10,然后如法炮制:
par(mar = c(4, 4, 0.5, 0.5), mfrow = c(1, 2))
set.seed(123)
plot(pval <- t(replicate(1000, {
x1 = rnorm(10, mean = 0, sd = runif(1, 0.5, 1))
x2 = rnorm(100, mean = 1, sd = runif(1, 2, 5))
c(t.test(x1, x2, var.equal = TRUE)$p.value, t.test(x1, x2,
var.equal = FALSE)$p.value)
})), xlab = "P-value: equal variance", ylab = "P-value: unequal variance",
pch = 20, asp = 1)
abline(0, 1)
abline(h = 0.05, v = 0.05, col = "gray")
plot(pval[, 1], pval[, 2] - pval[, 1], xlab = "P-value: equal variance",
ylab = "Diff of p-values (unequal var - equal var)", pch = 20)

方差齐与不齐时t检验的结果对照(样本量不同)
这文章,上COS主站寒酸了点,有人能扩展一下就好了。不过这个过程倒是可以提醒广大人民群众避免“路见不平一声吼,吼完继续往前走”,尤其是懒得翻公式的人(像我这样),遇见问题,可以偷懒用计算的方法找答案。
附“大家来找茬”一则:第二次的代码和第一次有啥不一样(除了样本量变了之外)?为啥有这么个变化?这小子想干啥?
爷还想看:
6 Responses to “t检验方差不齐有多重要”
Comments (6)
谢老大的精神值得学习,赞。
《卫生统计学》的教科书在两独立样本均数的t检验中涉及了“方差不等”时的Satterthwaite检验,即t’检验。 每一中统计检验方法或者参数估计方法都有其适用的前提条件,那是因为在数学上,只有满足了这些前提条件后才能推导出相应的检验公式或者参数估计公式,然而数学背景先天不好的统计学的追随者在接触这些统计方法的时候对这些前提条件难免会有一些理解不透的感觉,想为什么会有这样的前提条件啊?我就有过这样的想法。 比如t分布的明确定义为:两个相互独立的随机变量X与Y,当X~N(0,1),Y~Chi-square(n)时,则X/square(Y/square(n))~t(n),而只有当两个样本来自的总体服从正态分布并且方差齐时才有可比性,因为相比较的两个总体均数是描述集中趋势的统计指标,方差是描述离散趋势的统计指标,如果两个总体的集中趋势和离散趋势都不同的话,即使比较结果有差异又有多少实际意义呢?
所以说,对t检验的前提条件,独立、正态和等方差在应用前的诊断就显的举足轻重。同样,对于其他的经典统计方法或者Bayes统计方法在应用前对其适用条件的诊断也是同样的重要。可能是现在的统计软件相对比较完善,对于一些经典统计方法前提条件的诊断都有相应的选项,就可以知道是否满足,比如SAS,呵呵,我比较落伍了,R就知道一丁点儿内容,不过刚才把老大写的这段代码跑了一下,果然是这四幅图。不过,我就有点儿不懂了,请教谢老大一个问题:样本量不等时的P值(也就是最后一幅图)怎么可以是负值呢? 难道概率可以是负值?
呵呵,不是概率哦,是两个P值的差。
晓得了,呵呵
拜访谢大人,谢大人的创意想法还真多哟。
Scheffe一本非常非常旧的书里(195几年似乎)说过这个问题 如果sample size相等异方差还好 但是如果sample size不等 方差不等 问题就严重了
PS 看了半天没发现有啥差别。。。。老大指点。。。
不好意思,俺又无聊了……其实你可以用
diff程序来查看差异,比如把两段代码放在两个文件中,然后:diff应该是个*nix命令,Win下可能没有吧……