多测试几个数据集生存效应应该是可以找到统计学显著的!

前言
年前我提出了一个问题:为什么不用TCGA数据库来看感兴趣基因的生存情况
就是一篇文章并没有使用TCGA数据库的指定癌症的生存信息去看自己感兴趣的基因的生存效应,反而舍近求远去下载BMC Cancer. 2011 文章数据,所以我怀疑TCGA应该是该基因在该癌症里面的生存效果不显著!
所以就安排学徒来完成,下面是他的表演:

1.从UCSC Xena下载TCGA BRCA的表达矩阵HiSeqV2.gz,临床信息BRCA_clinicalMatrix,生存信息BRCA_survival.txt.gz,读入R。。

rm(list=ls())
options(stringsAsFactors = F)
options(warn = -1)

library(data.table)
##读入TCGA_BRCA表达信息
exprSet <- fread("HiSeqV2.gz",header = T,sep = '\t')
exprSet <- as.data.frame(exprSet)
rownames(exprSet) <- exprSet[,1]
exprSet <- exprSet[,-1]
## 从exprSet中提取PTP4A3的表达情况
dat <- exprSet["PTP4A3",]

##读入TCGA_BRCA生存信息
surdata <- read.table("BRCA_survival.txt.gz",header = T,sep = '\t')
rownames(surdata) <- surdata$sample
surdata <- surdata[,-1]

##读入TCGA_BRCA临床信息
pheno <- read.table("BRCA_clinicalMatrix",header = T,sep = '\t')
rownames(pheno) <- pheno$sampleID
pheno <- pheno[,-1]

如果你不知道如何下载TCGA数据库,可以看我以前的教程,我挑选了部分,写了6个数据下载系列教程

2.数据清洗

1)病人数据去重

table(duplicated(surdata$X_PATIENT))
#FALSE  TRUE 
# 1097   139 
choose_samples <- rownames(surdata[!duplicated(surdata$X_PATIENT),])
choose_samples[1:3]
length(choose_samples)
surdata <- surdata[choose_samples,]
pheno <- pheno[choose_samples,]
dat <- dat[,(colnames(dat) %in% choose_samples)]

choose_samples <- colnames(dat)
surdata <- surdata[choose_samples,]
pheno <- pheno[choose_samples,]
dat <- dat[,(colnames(dat) %in% choose_samples)]

2)选择Primary Tumor样本

pheno[1:3,1:3]
table(pheno$sample_type)
#         Metastatic       Primary Tumor Solid Tissue Normal 
#                 7                1086                   2
choose_samples <- rownames(pheno[pheno$sample_type=='Primary Tumor',])
surdata <- surdata[choose_samples,]
pheno <- pheno[choose_samples,]
dat <- dat[,(colnames(dat) %in% choose_samples)]

3.生存分析

参考:【生信技能树】TCGA的28篇教程- 对TCGA数据库的任意癌症中任意基因做生存分析

dat_bak <- dat
dat <- t(dat)
dat <- as.data.frame(dat)
dat$sampleID <- rownames(dat)
surdata$sampleID <- rownames(surdata)
surdata <- merge(surdata,dat,by='sampleID')
surdata$PTP4A3 <- as.numeric(surdata$PTP4A3)
surdata$g <- ifelse(surdata$PTP4A3 > median(surdata$PTP4A3),'high','low')
table(surdata$g)
#high  low 
# 543  543

library(survival)
table(surdata$OS)
#  0   1 
#939 147
table(surdata$OS.time>0)
#FALSE  TRUE 
#  13  1072 
my.surv <- Surv(surdata$OS.time,surdata$OS==1)
kmfit2 <- survfit(my.surv~surdata$g,data = surdata) 
library("survminer")
ggsurvplot(kmfit2,conf.int =F, pval = T,risk.table =F, ncensor.plot = F)

p=0.91,结果不显著。按照文献里写的用三阴性乳腺癌样本分析。

参考:TCGA数据库中三阴性乳腺癌在亚洲人群中的差异表达

colnames_num_tnbc <- grep('receptor_status',colnames(pheno))
colnames(pheno)[colnames_num_tnbc]
eph <- pheno[,colnames_num_tnbc[1:3]]
eph$tnbc_row_num <- apply(eph, 1, function(x) sum(x =='Negative')) ## 均为阴性的为三阴性乳腺癌
tnbc_samples <- rownames(pheno)[eph$tnbc_row_num == 3]
length(tnbc_samples)
#[1] 115 ##TCGA中tnbc病人只有115个

tnbc_surdata <- surdata[surdata$sampleID %in% tnbc_samples,]
tnbc.surv <- Surv(tnbc_surdata$OS.time,tnbc_surdata$OS==1)
tnbc.kmfit <- survfit(tnbc.surv~tnbc_surdata$g,data=tnbc_surdata)
ggsurvplot(tnbc.kmfit,conf.int = F,pval = T)

p=0.47。还是不显著,参考公众号【生信技能树】文章《生存分析就是一个任人打扮的小姑凉》继续折腾。
主要就是使用survminer包surv_cutpoint函数找基因表达量的分组阈值,根据这个阈值把基因分为highlow两组,而不是按照前面的median(surdata$PTP4A3)分组。

surv.cut <- surv_cutpoint(
  surdata,
  time = "OS.time",
  event = "OS",
  variables = "PTP4A3"
)
summary(surv.cut)
plot(surv.cut, "PTP4A3", palette = "npg")

surv.cat <- surv_categorize(surv.cut)

surv.fit <- survfit(Surv(OS.time, OS) ~ PTP4A3,
               data = surv.cat)
ggsurvplot(
  surv.fit,                     # survfit object with calculated statistics.
  risk.table = TRUE,       # show risk table.
  pval = TRUE,             # show p-value of log-rank test.
  conf.int = TRUE,         # show confidence intervals for 
  # point estimaes of survival curves.
  #xlim = c(0,3000),        # present narrower X axis, but not affect
  # survival estimates.
  break.time.by = 1000,    # break X axis in time intervals by 500. 
  risk.table.y.text.col = T, # colour risk table text annotations.
  risk.table.y.text = FALSE # show bars instead of names in text annotations
  # in legend of risk table
)

p=0.01!!!
再来分析一遍三阴性乳腺癌样本。

tnbc.surv.cut <- surv_cutpoint(
  tnbc_surdata,
  time = "OS.time",
  event = "OS",
  variables = "PTP4A3"
)
summary(tnbc.surv.cut)
plot(tnbc.surv.cut, "PTP4A3", palette = "npg")

tnbc.surv.cat <- surv_categorize(tnbc.surv.cut)

tnbc.surv.fit <- survfit(Surv(OS.time, OS) ~ PTP4A3,
                    data = tnbc.surv.cat)
ggsurvplot(
  tnbc.surv.fit,                     # survfit object with calculated statistics.
  risk.table = TRUE,       # show risk table.
  pval = TRUE,             # show p-value of log-rank test.
  conf.int = TRUE,         # show confidence intervals for 
  # point estimaes of survival curves.
  # xlim = c(0,3000),        # present narrower X axis, but not affect
  # survival estimates.
  break.time.by = 1000,    # break X axis in time intervals by 500. 
  risk.table.y.text.col = T, # colour risk table text annotations.
  risk.table.y.text = FALSE # show bars instead of names in text annotations
  # in legend of risk table
)

p=0.078。也离0.05比较接近了,大概数据量太少了吧(尬笑)

4.网页工具分析TCGA BRCA中PTP4A3基因的生存分析

写在后面

TCGA数据库肯定不仅仅是生存分析那么简单啦,同样的

我写了部分常见的TCGA数据库用法

(0)

相关推荐

  • PAM50的概念及分子分型算法原理

    众所周知,癌症具有异质性,在乳腺癌领域,不同亚型的癌症比不同器官来源癌症的差异要大很多.最简单癌症分类,当然是一个基因,比如ER阳性或者ER阴性的乳腺癌患者,并不是说人类有2万多个蛋白编码基因就可以有 ...

  • TCGA数据差异分析后生存分析(批量单因素cox回归/Lasso筛选,多因素cox建模,时间依赖ROC曲线及KM plot可视化)

    测序上游分析系列: mRNA-seq转录组二代测序从raw reads到表达矩阵:上中游分析pipeline miRNA-seq小RNA高通量测序pipeline:从raw reads,鉴定已知miR ...

  • R语言生存分析

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. R语言生存分析  生存分析是医学数据挖掘中的重要内容 R语言中用于生存分析 ...

  • 学徒作业-两个基因突变联合看生存效应

    我喜欢把TCGA数据库的应用划分为8个领域: 1.探索各类肿瘤不同临床特征(性别.年龄.种族.临床分期)的预后(生存曲线) 2.探索各类肿瘤与对照的单个分子(mRNA,lncRNA,miRNA,甲基化 ...

  • 人到中年,懂得这三个职场生存法则,帮你找到正确的职业方向

    职场案例: 不久前看到有位网友分享了他们公司同事的经历,公司同事是一位女销售,在订外卖之后发现因为暴雨天气,所以商家出餐很慢,外卖员也是在路途出现了特殊状况,导致超时10分钟,可是这个女销售却故意给差 ...

  • 财富忠告:第一,生存下来;第二,找到原因;第三,吸取教训

    马凯(施乐公司Xerox的掌门人) 第一,把落到井里的水牛救出来:第二,找出水牛落井的原因:第三,想尽一切办法以保证今后水牛不会再落到井里. 牢记"水牛落井"的寓言. 马凯:我4年 ...

  • 心理学效应|适者生存还是强者生存?示弱定律

     戳音频,有请"小声段"↓↓ 1 向人示威是人人都会的.向人示弱却是少数人会的.因为这更需要智慧和勇气. 蜥蜴是恐龙的同类,我们知道恐龙灭亡了,蜥蜴却存活下来.其中一个重要的原因是 ...

  • 2020测试生存手册

    想必每一个测试人员都对自身的职业发展前景都有过迷茫无措的时候,今天就来跟大家从测试职业发展的角度一起来探讨一下各个阶段的测试人员,应该如何在之后的职场生涯中生存和发展. 一个入职满两年的功能测试人员 ...

  • 刚做测试!JASP0.14暂不支持分类自变量的中介效应分析

    上周我在JASP课程中发布了JASP实现简单中介效应的视频课时,优势很明显,统计结果还有可视化均有不错表现,不比process插件差. 刚测试分类自变量的中介效应分析,软件立即提示不支持多分类的自变量 ...

  • 多个gsea数据集整合为什么一定要纠结批次效应

    最近有粉丝咨询我多个gsea数据集整合时候的批次效应的处理,我看了看,有affymetrix,agilent,illumina的芯片数据,还有测序的转录组,我勒个去,感觉是在集邮一样,然后邮件附上了一 ...

  • 【数据集】自动驾驶都有什么测试基准?

    Nora 正踏入计算机视觉领域,大四保研生一枚~ 言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | Nora/言有三 编辑 | Nora/言有三 自动驾驶是现在非常活跃的领 ...

  • “青蛙效应”告诉我们的职场生存秘笈

    "青蛙效应"告诉我们的职场生存秘笈 青蛙效应 源自十九世纪末,美国康奈尔大学曾进行过一次著名的"青蛙试验":他们将一只青蛙放在煮沸的大锅里,青蛙触电般地立即窜了 ...