解释 R 中小样本 t 检验的非均匀 p 值

机器算法验证 r t检验 p 值
2022-04-10 06:25:04

对于 n < 10 的小样本量,此 R 脚本产生的 p 值不足 < 0.1。谁能解释为什么会这样?如果这是一个 R 错误,它可能会产生一些影响。注意:对于小样本量,单样本 z 检验确实具有统一的 p 值。

m <- 10000
n <- 3
p.value <- rep(m, 0)

for (i in 1:m) {
  x <- rnorm(n, mean= 0, sd= 1)    
  y <- rnorm(n, mean= 0, sd= 1)    

  p.value[i] <- t.test(x, y, alt= "two.sided")$p.value 
} # for

par(mfrow= c(1,1))
hist(p.value, breaks= 20, xaxs="i", yaxs="i", col="skyblue", prob= F, las=T)   # appears uniform

abline(h= m/20, col= "red",  lty=2)
abline(v= 0.05, col= "cornflowerblue")
1个回答

这不是 R 中的错​​误。

Welch-Satterthwaite 类型 t 检验(R 中默认的两个样本 t 检验)实际上没有 t 分布。

您得到的 t-with-fractional-df 是零分布的近似值。

Welch-Satterthwaite 检验在各种情况下都能很好地工作,但即使所有假设都保持 p 值的零分布也会有些不均匀(这会影响显着性水平;你不会有你的显着性水平的目标)。

实际上有 3 个参数可以控制零分布——总体方差的比率和两个样本量。该测试使用近似值使其只是单个参数的函数(Welch-Satterthwaite df)。

对于方差比和样本大小比的某些选择,p 值的分布往往会偏向较低的值,而对于其他选择,它往往会偏向较高的值。

这在小样本量下往往会更明显,但通常会发生。

如果有必要,可以在您的特定 n 和方差比而不是 t 近似值下使用模拟来更好地控制显着性水平和更准确的 p 值。但是,如果您的样本量相等(就像它们在您的模拟中一样),即使方差不相等,等方差 t 检验对显着性水平的控制也几乎没有问题,因此这实际上可能是一个合理的默认值样本量相等时的选择。