【问题标题】:how to apply fisher exact test on matrices如何在矩阵上应用 Fisher 精确检验
【发布时间】:2021-08-06 10:33:29
【问题描述】:

我想在这两个矩阵之间进行 Fisher 精确检验,我想将一个矩阵的列与另一个矩阵的列进行比较

      [,1]       [,2]      [,3]      [,4]      [,5]       [,6]      [,7]      [,8]       [,9]     [,10]
A 0.1200480 0.07189073 0.0000000 0.1016260 0.1128205 0.10200927 0.2961319 0.3020383 0.02524866 0.0000000
C 0.0300120 0.19769950 0.2012802 0.2815041 0.2358974 0.48686244 0.4724160 0.3749228 0.65340474 0.3294118
G 0.6302521 0.52120776 0.6273115 0.4085366 0.4179487 0.35548686 0.1122384 0.1247684 0.29609793 0.6705882
T 0.2196879 0.20920201 0.1714083 0.2083333 0.2333333 0.05564142 0.1192137 0.1982705 0.02524866 0.0000000

这是另一个矩阵

       [,1]       [,2]       [,3]       [,4]         [,5]         [,6]         [,7]       [,8]     [,9]      [,10]
A 0.3143147 0.79432422 0.03440895 0.07098851 0.0004179104 0.0002388202 0.9988065402 0.69191708 0.181764 0.00000000
C 0.1690764 0.02235194 0.89570290 0.92901149 0.0000000000 0.0004179354 0.0007757489 0.01218711 0.000000 0.48599247
G 0.3406620 0.14882308 0.06988816 0.00000000 0.9992835821 0.9993432444 0.0004177109 0.00000000 0.818236 0.02478944
T 0.1759469 0.03450076 0.00000000 0.00000000 0.0002985075 0.0000000000 0.0000000000 0.29589581 0.000000 0.48921809

我该怎么做。

我试过了

Ref <- read.table("Ref_PPM.txt", sep=" ", header=T, stringsAsFactors=F)
Pred <- read.table("Pre_PPM.txt", sep=" ", header=T, stringsAsFactors=F)

output_df_forward <- data.frame()
for(i in 1:ncol(Ref)) {

Ref_vec <- as.numeric(unlist(as.data.frame(Ref[,1:i])))
Pred_vec <- as.numeric(unlist(as.data.frame(Pred[,(ncol(Pred)-i+1):ncol(Pred)])))
res <- Fisher.test(Pred_vec, Ref_vec)
output <- as.data.frame(cbind(as.numeric(res$p.value), as.numeric(res$estimate)))
ifelse(i == 1, output_df_forward <- output, output_df_forward <- rbind(output_df_forward, output))
}

但是这个循环不起作用我想通过上面提到的循环应用这个 Fisher 测试。

我也试试这个

FP<-table(Pre_PPM)
FR<-table(Ref_PPM)
fisher.test(FP, FR)
Error in fisher.test(FP, FR) : 'x' and 'y' must have the same length

请指导我如何做到这一点。提前感谢您的时间。

【问题讨论】:

  • 您好,我不确定您要达到的目标是什么(从统计的角度来看)。您能否添加更多上下文(统计问题等)。此外,我找不到Fisher.test() 函数。 R 默认有一个 stats::fisher.test() 函数,它似乎不适合你的情况。

标签: r


【解决方案1】:

考虑到您的第二个示例,我相信您的矩阵在行和列方面的大小不同。以下是 Fisher 检验的示例:

a <- data.frame(foo=c(1,2), bar=c(3, 4), spam=c(5, 6))
b <- data.frame(eggs=c(7,10), ham=c(15, 30), spar=c(35, 40))

效果很好:

fisher.test(a, b)

输出是:

考虑检查矩阵大小。

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多