前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言怎么批量进行fisher检验?

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

作者头像
简说基因
发布2022-11-11 16:20:55
6170
发布2022-11-11 16:20:55
举报
文章被收录于专栏:简说基因简说基因

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

我们先看看数据:

代码语言:javascript
复制
library(knitr)

df = read.table('fisher_test.tsv', header = TRUE)
kable(df)

Gene

mMut

mWt

nonMut

nonWt

TP53

14

24

13

20

IFITM3

7

31

4

29

MTRNR2L2

5

33

4

29

USP17L10

5

33

4

29

CDH1

8

30

6

27

CLCNKA

6

32

6

27

USP17L18

3

35

3

30

GOLGA6L18

3

35

5

28

NBPF14

7

31

8

25

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

  • Gene, 基因名称
  • mMut,转移组突变的样本数
  • mWt,转移组未突变的样本数
  • nonMut,非转移组突变的样本数
  • nonWt,非转移组未突变的样本数

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

代码语言:javascript
复制
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)

Gene

mMut

mWt

nonMut

nonWt

p.value

OR

OR.lower95

OR.upper95

TP53

14

24

13

20

1.0000000

0.8988078

0.3088611

2.617323

IFITM3

7

31

4

29

0.5269981

1.6259488

0.3671440

8.395215

MTRNR2L2

5

33

4

29

1.0000000

1.0970164

0.2133307

6.080139

USP17L10

5

33

4

29

1.0000000

1.0970164

0.2133307

6.080139

CDH1

8

30

6

27

1.0000000

1.1969331

0.3167799

4.766989

CLCNKA

6

32

6

27

1.0000000

0.8457813

0.2000716

3.571860

USP17L18

3

35

3

30

1.0000000

0.8590140

0.1068787

6.901324

GOLGA6L18

3

35

5

28

0.4586862

0.4849884

0.0692761

2.741811

NBPF14

7

31

8

25

0.5742321

0.7091540

0.1897961

2.587077

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说基因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档