如何获得全球Fisher评分?

时间:2016-07-10 10:28:52

标签: r list vector bioinformatics chi-squared

我想通过元素明智得到以下列表式数据的费舍尔得分。我向这个社区提出这个统计问题的道歉。但是,我的数据包含3个GRanges对象的重叠重要性分数列表,我希望按元素获得其全局Fisher分数。我怎样才能在R中找到它?

这是我希望按元素获得全局分数的数据:

[[1]]
NumericList of length 7
[[1]] 1e-22
[[2]] 1e-19
[[3]] 1e-18
[[4]] 1e-16
[[5]] 1e-24
[[6]] 1e-20
[[7]] 1e-15

[[2]]
NumericList of length 7
[[1]] 1e-24
[[2]] 1e-24
[[3]] 1e-20
[[4]] 1e-25
[[5]] 0.1
[[6]] 1e-19
[[7]] 1e-18

[[3]]
NumericList of length 7
[[1]] 1e-11
[[2]] 1e-11
[[3]] 1e-10
[[4]] numeric(0)
[[5]] numeric(0)
[[6]] 1e-15
[[7]] numeric(0)

可重现的例子是:

用0替换数字(0),试试这个:

v3 <- lapply(v3, function(x) {
  res <- ifelse(length(x)>0, x, 0)
})

 data <- DataFrame(
              v1=c(1e-22,1e-19,1e-18,1e-16,1e-24,1e-20, 1e-15),
              v2=c(1e-24,1e-24,1e-20,1e-25,0.1,1e-19,1e-18), 
              v3=c(1e-11,1e-11,1e-10,numeric(0),numeric(0),1e-15,numeric(0)))

我想要的输出类似(只是元素明示的例子):

global fisher score of  `(1e-22, 1e-24, 1e-11)` = ?
global fisher score of  `(1e-19, 1e-24, 1e-11)` = ?
...
global fisher score of  `(1e-24, 1e-01, numeric(0))` = ?

我知道基础包中的fisher.test功能可以进行渔民精确测试。但它需要矩阵作为输入,而我不能将我的数据作为矩阵。我把我的数据作为元素操作的理想格式。

我想通过元素明智获得全球渔民分数。我怎样才能在R中得到这个?或者,如果我使用chisq.test,我怎样才能通过元素方式获得上面数据表的卡方统计量?如果有人能给我任何想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是通过使用Fisher方法获得全球渔民分数的解决方案:

library(metap)
comb.pval <- suppressWarnings(
  res <- apply(data[,1:3],1, function(ro) sumlog(ro)$p)
)

欢呼声

Jurat