为什么我的 p 值与两个样本测试中的平均值之间的差异相关?

机器算法验证 假设检验 统计学意义 p 值 规模效应
2022-03-30 01:00:36

一位同事最近声称,大 p 值并不比低 p 值更能支持原假设。当然,这也是我学到的(原假设下的均匀分布,我们只能拒绝原假设……)。但是当我在 R 中模拟两个随机正态分布(每组 100 个样本)时,我的 p 值与两个平均值(例如 T 检验或 Mann & Whitney 检验)之间的差异(平均超过 30 次重复)相关)。

为什么我的 p 值高于 0.05 的阈值,与我的两组平均值之间的差异相关?

在此处输入图像描述

每个 x(均值之差/2)值重复 1000 次。 在此处输入图像描述

我的 R 代码以防这只是一个愚蠢的错误。

pvaluetot<-NULL
xtot<-NULL
seqx<-seq(0,5,0.01)
for (x in seqx){
  ptemp<-NULL
  pmean<-NULL
  a<-0

  repeat{
    a<-a+1
    pop1<-rnorm(100,0+x,2)
    pop2<-rnorm(100,0-x,2)
    pvalue<-t.test(pop1,pop2)$p.value

    ptemp<-c(ptemp,pvalue)
    #print(ptemp)
    if (a==30)
      break
    }

  pmean<-mean(ptemp)
  pvaluetot<-c(pvaluetot,pmean)
  xtot<-c(xtot,x)
  print(x)
}

pvaluetot
xtot
plot(pvaluetot,xtot)
3个回答

为什么你会期待别的?你不需要模拟就知道这会发生。查看 t 统计量的公式: t=x1¯x2¯s12n1+s22n2

显然,如果你增加你期望的真实差异x1¯x2¯会更大。您保持方差和样本量不变,因此 t 统计量必须更大,因此 p 值更小。

我认为您将有关假设检验的哲学规则与数学事实混淆了。如果原假设为真,您会期望更高的 p 值。为了使假设检验有意义,这必须是真的。

正如您所说,p 值在原假设下是均匀分布的。也就是说,如果原假设真的为真,那么在重复实验后,我们期望在 [0, 1] 之间找到完全随机、平坦的 p 值分布。因此,常客 p 值没有说明原假设为真的可能性有多大,因为任何 p 值在原假设下都是同样可能的。

您正在查看的是替代假设下的 p 值分布。根据该假设的表述,生成的 p 值可以在 [0, 1] 之间具有任何非均匀的正偏态分布。但这并没有告诉你关于空值概率的任何信息。原因是 p 值表示零假设下证据的概率,即,而您想知道这两个由贝叶斯规则相关: 这意味着为了计算您感兴趣的概率,您需要知道并考虑 null 为真的先验概率(p(D|H0)p(H0|D)

p(H0|D)=p(D|H0)p(H0)p(D|H0)p(H0)+p(D|¬H0)p(¬H0)
p(H0))、null 为假的先验概率 ( ) 和给定 null 为假的数据的概率 ( )。这是贝叶斯的范围,而不是频率统计。p(¬H0)p(D|¬H0)

至于您观察到的相关性:正如我上面所说,在替代假设下,p 值将呈正偏态。偏斜的程度取决于替代假设是什么。在双样本 t 检验的情况下,您增加总体均值之间的差异越多,p 值将变得越偏斜。这反映了这样一个事实,即您正在使您的样本与空值下的合理样本越来越不同,因此根据定义,生成的 p 值(反映空值下数据的概率)必须降低。

您确实不应该将 p 值解释为原假设为真的概率。

然而,较高的 p 值确实与对原假设的支持度较高有关。


将 p 值视为随机变量

您可以将 p 值视为统计数据的转换。例如,请参见下图中的次要 x 轴,其中绘制了 t 分布ν=99.

次要 x 轴

在这里,您会看到较大的 p 值对应于较小的 t 统计量(而且,对于双边检验,有两个 t 统计量与一个 p 值相关联)。

p 值的分布P(p-value|μ1μ2)

当我们绘制 p 值的分布密度时,参数化为μ1μ2,你会看到更高的 p 值不太可能μ1μ20.

p 值的分布

# compute CDF for a given observed p-value and parameter ncp=mu_1-mu_2
qp <- function(p,ncp) {
  from_p_to_t <- qt(1-p/2,99)   # transform from p-value to t-statistic
  1-pt(from_p_to_t,99,ncp=ncp) + pt(-from_p_to_t,99,ncp=ncp)  # compute CDF for t-statistic (two-sided)
}
qp <- Vectorize(qp)

# plotting density function
p <- seq(0,1,0.001)
plot(-1,-1, 
     xlim=c(0,1), ylim=c(0,9),
     xlab = "p-value", ylab = "probability density")

# use difference between CDF to plot PDF
lines(p[-1]-0.001/2,(qp(p,0)[-1]-qp(p,0)[-1001])/0.001,type="l")
lines(p[-1]-0.001/2,(qp(p,1)[-1]-qp(p,1)[-1001])/0.001,type="l", lty=2)
lines(p[-1]-0.001/2,(qp(p,2)[-1]-qp(p,2)[-1001])/0.001,type="l", lty=3)

贝叶斯因子,对于较大的 p 值,不同假设的似然比较大。您可以将更高的 p 值视为更强的支持根据备择假设,这种强有力的支持是在不同的 p 值下达到的。备择假设越极端,或者测试的样本越大,p 值越小才能成为强有力的支持。

贝叶斯因子


插图

请参阅下面的示例,其中包含两种不同情况的模拟。你样品XN(μ1,2)XN(μ2,2) 让在一种情况下

  • μiN(i,1)这样μ2μ1N(1,2)

另一种情况

  • μiN(0,1)这样μ2μ1N(0,2).

模拟

在第一种情况下,您可以看到μ1μ2最有可能在 1 左右,对于更高的 p 值也是如此。这是因为边际概率μ1μ2N(1,2)开始时已经接近 1。因此,高 p 值将支持该假设μ1μ2但是还不够强大。

在第二种情况下,您可以看到μ1μ2当 p 值很大时,确实最有可能在零附近。因此,您可以将其视为对零假设的某种支持。

因此,在任何情况下,高 p 值都支持原假设。但是,不应将其视为假设为真的概率。这个概率需要逐案考虑。当您知道均值和 p 值的联合分布时(也就是说,您知道均值分布的先验概率),您可以对其进行评估。

旁注:当您以这种方式使用 p 值来表示支持原假设时,您实际上并没有按照预期的方式使用该值。那么您最好只报告 t 统计量并呈现类似似然函数(或贝叶斯因子)的图。