如何获得全局费舍尔分数?

How to obtain global Fisher score?

我想按元素获取以下类似列表数据的费舍尔分数。很抱歉向这个社区提出这个统计问题。但是,我的数据包含 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 替换 numeric(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 基础包中的函数可以进行 fisher 精确测试。但它需要矩阵作为输入,而我不能将我的数据作为矩阵。我将我的数据放在我想要的元素操作格式中。

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

这是使用 Fisher 方法获取全局 Fisher 分数的解决方案:

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

干杯

朱拉特