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检验的结果对照
我从来不觉得对“自由度”这个概念作出解释有什么用,或者说,把自由度与自由挂钩是一件没什么意义的事情。常常见人问,“为什么自由度是n – p -1(或者其它数值)”这样的问题,我认为,数学上证明了统计量有什么样的性质就足够了,干嘛要费尽心思去解释DF这个数字呢。自由度说到底在统计学里面最终是用到了某个统计分布的参数中(比如χ2、t或F分布等),是否解释数值的由来对于解决问题毫无帮助。样本标准差用n作分母对总体标准差的估计来说是有偏估计,用n – 1就是无偏估计了,非要琢磨一下这个-1是为什么吗?有的整数自由度琢磨半天也许七拼八凑能找出一种解释方式,那要是遇上分数的自由度呢,怎么凑?(样本量不相等、总体方差也不相等的两独立样本t检验往往就是这样,t分布的自由度不是整数)
Wikipedia上对于“Degree of Freedom”的解释也比较空洞,寥寥数语讲了一件盒子里摆球的故事,很简单,但也不知道用意何在(这是Wikipedia上至今为止第一个我看了之后觉得没讲清楚的页面)。
不过在搜索”Degree of Freedom”的时候倒是发现了这个网页,里面关于正态分布和t分布的解释仍然像一些教科书一样给人一个完全糊涂的概念,认为用Z还是用t取决于样本量,大于30就正态了,否则就只能用t。扯啊。当然,它关于自由度的解释也仍然是:糊涂。
近期评论