做了一个统计模拟:总体为正态总体,总体容量为1000,总体均值的真值U=170。
原假设H0为:u=165。假设检验所用的统计量为t统计量。
总体标准差分别为100、500、1000。

请问:在样本容量不变的情况下,如n=50。总体标准差更大时,基于随机抽样样本数据得到的p值更小,还是总体标准差更小时,得到的p值更小呢?

按楼主的题设,50个样本,u=170, sd = 100, 500, 1000 , 分别模拟一百次,每次模拟生成50个随机数字并以mu=165做t检验计算P值,三个条件下P值结果汇总在图里

结论是P区别没有 😉

library(ggplot2)

test1= sapply(1:100,function(i){
  x=rnorm(n = 50,mean = 170,sd=100)

  p=t.test(x,mu = 165)$p.value
  return(p)
})


test2= sapply(1:100,function(i){
  x=rnorm(n = 50,mean = 170,sd=500)

  p=t.test(x,mu = 165)$p.value
  return(p)
})

test3= sapply(1:100,function(i){
  x=rnorm(n = 50,mean = 170,sd=1000)

  p=t.test(x,mu = 165)$p.value
  return(p)
})



df=data.frame(
  group=c(rep("sd100",100),rep("sd500",100),rep("sd1000",100)),
  p=c(test1,test2,test3)
)

df %>% ggplot(aes(x=group,y=p))+
  geom_boxplot()

image.png

在这种情况下,我们用来进行t检验的统计量是不是:T=(xbar-mu) / [sqrt(var(x)/n]。
那么,当总体方差比较大的话,分母的var(x)就倾向于比较大。那么,当总体方差比较大时,这时为什么不是T值倾向于越小,从而导致p值倾向于越大呢

    jhfucumt 我觉得你的理论分析没有问题,只是你假设的例子看不出来差别。因为均值为170,标准差又非常大,50个样本统计力远远不够。借用前面回复的代码,如果把样本量增加到50000,差别非常明显。同样的,如果把标准差变小,差别也非常明显。

    另一方面,H0=165,H1=170,在标准差等于或者远大于均值的时候,基本可以认为H0为真了,在H0为真的情况下,p值的分布基本是均匀分布。

      huyang 我刚准备说同样的话,你快了一步。标准差如此之大的情况下,只取 50 个样本来模拟,基本是盲人摸象。

      p_sd = function(n = 50, S = c(100, 500, 1000)) {
        p = lapply(S, function(s) {
          replicate(100, t.test(rnorm(n, 5, s))$p.value)
        })
        d = data.frame(p = unlist(p), s = rep(sprintf('sd = %s', S), each = 100))
        boxplot(p ~ s, data = d)
      }
      p_sd()
      p_sd(500)
      p_sd(5000)
      p_sd(50000)  # 终于信了你的邪哟
      
      p_sd(S = c(10, 20, 30))  # 或按楼上说的减小标准差

      首先,p value的一个定义是在原假设成立的前提下,观察到比当前结果更极端的情况的概率有多少。从这个角度来说,当你一次检验,得到了当前的观察结果后,p value就确定了,不会因为你的潜在的真实分布的标准差变化而变化了。

      总体标准差更大时,基于随机抽样样本数据得到的p值更小,还是总体标准差更小时,得到的p值更小呢?

      如前所述,pvlaue是在给定试验结果后计算出来的。真实标准差的变化,不会直接等价于一次试验pvalue会如何变化,所以这个问题的答案是没有人能保证哪个的pvalue会更小。

      你实际想问的一个问题,可能是随着真实分布标准差的变化,检验的p value的分布是如何变化的。这里为了简化讨论,我们就用一个单边的均值检验,并且认为总体标准差已知(这样拿掉了计算中绝对值,正态和T联合分布这两个稍微复杂的点),也不考虑总体样本1000这样的有限总体。那么 “p value”实际就是
      p_val=P(x1>x2),p\_val=P(x_1>x_2),
      其中x1x_1 服从H0下的样本均值分布N(165,σ12/50)N(165,\sigma_1^2/50)x2x_2 服从真实总体的样本均值分布N(170,σ22/50)N(170,\sigma_2^2/50),且x1x_1, x2x_2独立。
      如果你给定x2x_2,即给出一次试验的结果,那么pvalue就可以计算出来,它只依赖于H0分布,这就是我们常规说的pvalue。而当前x2x_2还未给定,那么上式和常规的pvalue的含义是有所区别的(可以视作常规的pvalue在某一给定真实分布下的均值?),但是应该可以满足当前的论述需求。可以发现pvalue就是x1x2>0x_1-x_2>0的概率,不等号左侧,x1x2x_1-x_2这个随机变量的分布也是正态:
      N(165170,σ12/50+σ22/50)N(165-170,\sigma_1^2/50+\sigma_2^2/50)
      因此可以发现,随着真实分布标准差的增大,“平均而言”的pvalue会增大。但是就像前面模拟已经验证过的,这个标准差太大了,样本量太少,基本无法看出来这个pvalue均值的变化。

      另一个你可能在想的事,是说是否随着真实标准差增大,试验更不容易得到显著的结果,这个也是肯定的。还是以上面用的简单例子而言,一次检验结果是否显著,就看(这里我们姑且认为,你在H0下的标准差是和你的真实分布一样的)

      P(xˉ165σ2/50>1.64)P(\frac{\bar{x}-165}{\sqrt{\sigma^2/50}}>1.64)

      这个概率能不能小于0.05,小于0.05了,那就显著。这里我用的单侧95%,所以界值在1.64。那么现在真实分布已经有了,我们可以计算检验power,也就是拒绝H0的概率,化减出来就是

      P(Z>1.64170165σ2/50)P(Z>1.64-\frac{170-165}{\sqrt{\sigma^2/50}})

      其中Z是个标准正态。也可以看到,随着真实标准差增大,这个概率值是在变小的,也就是随着真实分布标准差变大,检验效能减小,更不容易拒绝原假设。但是就现在这个标准差和均值差异的设置,实际上看不出太大区别。

      谢谢几位大神从不同角度的解释,非常感谢!