R语言怎么批量进行fisher检验?

接上文,朋友告诉我,并不是只求一个 p 值,而是要计算许多 p 值,即批量进行 fisher 检验。

我们先看看数据:

library(knitr)

df = read.table('fisher_test.tsv', header = TRUE)
kable(df)
GenemMutmWtnonMutnonWt
TP5314241320
IFITM3731429
MTRNR2L2533429
USP17L10533429
CDH1830627
CLCNKA632627
USP17L18335330
GOLGA6L18335528
NBPF14731825

这是一个基因突变的统计表,记录了肿瘤转移组与非转移组的基因突变情况,表头解释如下:

  • Gene, 基因名称

  • mMut,转移组突变的样本数

  • mWt,转移组未突变的样本数

  • nonMut,非转移组突变的样本数

  • nonWt,非转移组未突变的样本数

现在想知道,表中的基因在转移组与非转移组之间的突变频率是否有显著差异,通过循环进行fisher检验即可,代码如下:

out <- data.frame()
for (i in 1:nrow(df)){
  t <- fisher.test(matrix(as.vector(t(df[i, 2:5])), ncol=2))
 
  d <- df[i, ]
  d$p.value <- t$p.value
  d$OR <- t$estimate[[1]]
  d$OR.lower95 <- t$conf.int[1]
  d$OR.upper95 <- t$conf.int[2]
  out <- rbind(out, d)
}

kable(out)
GenemMutmWtnonMutnonWtp.valueOROR.lower95OR.upper95
TP53142413201.00000000.89880780.30886112.617323
IFITM37314290.52699811.62594880.36714408.395215
MTRNR2L25334291.00000001.09701640.21333076.080139
USP17L105334291.00000001.09701640.21333076.080139
CDH18306271.00000001.19693310.31677994.766989
CLCNKA6326271.00000000.84578130.20007163.571860
USP17L183353301.00000000.85901400.10687876.901324
GOLGA6L183355280.45868620.48498840.06927612.741811
NBPF147318250.57423210.70915400.18979612.587077

可以看到,结果也是一个表格,其中包含原表格数据以及我们最关心的 4 个值:p.value、OR、OR.lower95以及OR.upper95。

粉丝福利

学生信,计算机基础一定要好。毫不夸张地说,计算机基础决定了你能否入门,而生物学修养决定你能走多远。没有出发,如何走得远?

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值