fdr矫正背后有模型的,最简单的理解就是p值应该是[0,1]间的均匀分布,这样100次检验中至少会有5次为假阳性,你如果就发现了5个,那么应该都是假的,但这是在100次检验本来就没差异的前提下的模型。
实际多重检验时p值是均匀分布加上真正有差异的那部分,所谓fdr控制的q值法,就是想办法估计出均匀分布的部分,然后根据你错误发现率的阈值设计来估计所有显示有差异的检验中错误发现的那部分。BH调整是另一个直接调整p值的方法,先排序然后所有p值乘排序,这里的原理是p值乘总数m得到的是在该p值下理论发现数,而除以其排序实际是该p值下实际发现数,理论发现数基于在这里的分布是均匀分布,也就是空假设的分布,这两个的比值自然就是错误发现率。
q值跟BH调整结果差不多,BH结果更稳定些,对于你的问题,p值为1的那部分是参与模型中均匀分布的估计或排序的,不能删除。但你应该先检测你p值的分布情况再决定用什么方法控制fdr,可以看看这个帖子:http://varianceexplained.org/statistics/interpreting-pvalue-histogram/