Fisher的精确检验给出了非均匀的p值


12

我正在尝试在模拟的遗传问题中应用费舍尔的精确检验,但是p值似乎偏向右侧。作为一名生物学家,我想我只是在漏掉每个统计学家显而易见的东西,因此,我将非常感谢您的帮助。

我的设置是这样的:(设置1,边际不固定)
在R中随机生成两个0和1的样本。每个样本n = 500,采样0和1的概率相等。然后,我将每个样本中0/1的比例与Fisher的精确测试进行比较(只是fisher.test;还尝试了具有类似结果的其他软件)。重复采样和测试3万次。产生的p值的分布如下: p值分布

所有p值的平均值约为0.55,在0.0577处为第5个百分点。即使分布在右侧看起来也不连续。

我一直在阅读所有内容,但我没有发现任何迹象表明这种行为是正常的-另一方面,这只是模拟数据,因此我看不到任何偏见的来源。我错过了任何调整吗?样本量太小?或者也许它不应该是均匀分布的,并且p值的解释不同?
还是我应该重复一百万次,找到0.05分位数,并在将其应用于实际数据时将其用作显着性临界值?

谢谢!


更新:

Michael M建议固定边际值0和1。现在,p值给出了更好的分布-不幸的是,它不是统一的,也不是我认识的任何其他形状:

固定边际的p值

添加实际的R代码:(设置2,固定的边距)

samples=c(rep(1,500),rep(2,500))
alleles=c(rep(0,500),rep(1,500))
p=NULL
for(i in 1:30000){
  alleles=sample(alleles)
  p[i]=fisher.test(samples,alleles)$p.value
}
hist(p,breaks=50,col="grey",xlab="p-values",main="")

最终编辑:
正如胡布在评论中指出的那样,由于分箱,这些区域看上去只是扭曲了。我将附加设置1(免费边距)和设置2(固定边距)的QQ图。在下面的Glen模拟中可以看到类似的图,并且所有这些结果实际上似乎相当统一。谢谢您的帮助!

pval-qqplot


2
尝试重复模拟,同时不仅要保持组大小(每组500个),而且要保持“ 1”(在合并样本中)的总和不变。Fisher精确检验的p值是在此“固定边际分布”设置下得出的。画面看起来好些了吗?顺便说一句。您不能期望p值分布由于采样分布的离散性质(即超几何)而完全一致。
Michael M

1
查看您的R代码可能会很有用。
2015年

1
从代码中,@ Glen在我看来,在每次迭代中,两个样本都具有相同的0和1(即,假设应为空),还是我错了吗?
bdeonovic

5
这些直方图对我来说看起来非常统一。您必须记住,直方图通过area来显示概率(或频率)。右边的间隙增加(由于任何离散数据的非随机测试的p值分布不可避免地存在离散性),导致钢筋高度增加,但其面积似乎几乎是恒定的。 不必使用直方图来评估均匀性,而可以绘制经验CDF。
ub

2
除了特定的分布之外,这个问题似乎在这里已
Glen_b-恢复莫妮卡(Monica)2015年

Answers:


10

问题在于数据是离散的,因此直方图可能会欺骗。我用显示近似均匀分布的qqplots编写了模拟代码。

library(lattice)
set.seed(5545)
TotalNo=300
TotalYes=450

pvalueChi=rep(NA,10000)
pvalueFish=rep(NA,10000)

for(i in 1:10000){
  MaleAndNo=rbinom(1,TotalNo,.3)
  FemaleAndNo=TotalNo-MaleAndNo
  MaleAndYes=rbinom(1,TotalYes,.3)
  FemaleAndYes=TotalYes-MaleAndYes
  x=matrix(c(MaleAndNo,FemaleAndNo,MaleAndYes,FemaleAndYes),nrow=2,ncol=2)
  pvalueChi[i]=chisq.test(x)$p.value
  pvalueFish[i]=fisher.test(x)$p.value
}

dat=data.frame(pvalue=c(pvalueChi,pvalueFish),type=rep(c('Chi-Squared','Fishers'),each=10000))
histogram(~pvalue|type,data=dat,breaks=10)
qqmath(~pvalue|type,data=dat,distribution=qunif,
       panel = function(x, ...) {
         panel.qqmathline(x, ...)
         panel.qqmath(x, ...)
       })

在此处输入图片说明

在此处输入图片说明


5
离散数据的直方图或条形图中的这种峰值和下降通常是合并过程的伪像。不要相信它们:使用更清晰的分布图,例如QQ图或ECDF的图。即使它们是真实的,只要p值的分布大致均匀且密度适当,这对于决策至关重要:在接近零(且肯定小于0.5)的区间内,就不会有人在意。
ub

优点@whuber,我将用qqplots更新。
格伦

2
@whuber,格伦,非常感谢!实际上,装箱是欺骗性的,因为简单地将Glen的直方图拆分成更多的中断就可以得到与我相似的模式。我还通过仿真得到了线性经验CDF / QQ,因此该问题似乎已解决。
2015年

@juod:如果您可以添加qqplot来进行说明,甚至两个模拟都可以,将不胜感激。
Michael M

QQ情节确实有帮助-谢谢。但是,您是否不想更改答案的第一段?您是否仍然认为模拟存在问题,并且p值分布中存在“尖峰”?
ub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.