R语言-FDR校正的原理

Python09

R语言-FDR校正的原理,第1张

假设检验的原理 step1:把P值从大到小排序 step2:公式:p * (总数/p的位次) 【但是,得注意下一条的第一点,建议还是R直接一步到位】 1.如果某一个p值所对应的FDR值大于前一位p值(排序的前一位)所对应的FDR值,则放弃公式计算出来的FDR值,选用与它前一位相同的值。 2.P值都小于1。

命令如下:p<-c(0.001315146,0.001236789,0.001229388,0.000889006,0.000876515,0.000578648,0.000565415,0.000536447,0.000517434,0.000487215,0.000364518,0.000364518,0.000247193,7.93E-05)p.adjust(p,method=”fdr”,n=length(p))这样得到的修正后的fdr值为:0.0013151460,0.0013151460,0.0013151460,0.0011314622,0.0011314622,0.0009001191,0.0009001191, 0.0009001191,0.0009001191,0.0009001191,0.0009001191,0.0009001191,0.0009001191,0.0009001191可以看到,修正前后面几个P值并不相等,但是修正后的fdr后面几个都变一样的值了。 而且根据fdr的定义,用命令length(p)*p/rank(p)计算出来的结果也和用命令p.adjust(“fdr”)计算出来的结果不一样。

data <- read.table("./FPKM.txt",sep = '\t',header = T)

p1 <-as.matrix(p_value) 

p2 <-as.vector(p1)#格式转换

 p2

p_adjust <- p.adjust(p2,method = "BH")