上次介绍了如何绘制一个好看的生存曲线:https://blog.csdn.net/weixin_46500027/article/details/123245980?spm=1001.2014.3001.5501。
但有的时候我们会发现,单因素cox回归某个自变量对生存有意义,当绘制生存曲线的时候,确变得没意义了,比如下面这一组数据:
我们先进行一下单因素cox回归,代码如下:
setwd("C:\\Users\\ASUS\\Desktop\\KIRP与坏死性凋亡")
dir()
data <- read.csv("survival.csv",header = T,sep = ",")
head(data)
library(coin)
cox <- coxph(Surv(OS.time, OS) ~ RBCK1, data)
summary(cox)
可以看到P值是有意义的,但是当我们以中位值做生存曲线时,算出来P值就没意义了:
data$RBCK1 <- ifelse(data$RBCK1>median(data$RBCK1),"High RBCK1 expression","Low RBCK1 expression")
cox <- coxph(Surv(OS.time, OS) ~ RBCK1, data)
summary(cox)
生存曲线也是看不出差异:
这是因为中位值并不是这个基因最合适的截断值,因此,我们需要选择最合适的截断值。
选择截断值的软件目前比较火比较方便的便是x-tile软件,pubmed上也有类似的文章介绍:https://pubmed.ncbi.nlm.nih.gov/15534099/
下一期我们将详细介绍此软件如何使用。
我们使用此软件确定了基因RBCK1的最适cut-off值为7.0,根据7.0,我们将数据分为高地表达组,再次使用单因素cox回归分析,代码如下:
data$RBCK1 <- ifelse(data$RBCK1>7.0,"High RBCK1 expression","Low RBCK1 expression")
cox <- coxph(Surv(OS.time, OS) ~ RBCK1, data)
summary(cox)
可以看到,单因素cox回归有意义了,这也就意味着生存曲线也有意义:
因此,选择最适的cutoff值是很有必要的。关于生存曲线如何绘制,可以查看我们的另一期教程:
https://blog.csdn.net/weixin_46500027/article/details/123245980?spm=1001.2014.3001.5501
下面介绍x-tile的使用!!
数据格式如下:
将此数据存成txt(文本文件,制表符分隔)。
打开x-tile并点击分析:
然后File-open-选择数据导入。
Censor对应OS即生存状态,Survivaltime对应OS.time生存时间,marker1就是要研究的变量(基因表达,患者年龄,性别,分期等都可以)。
此处注意,如果随访的数据是天,就都改成Days,然后随访天数最长的加入是五千天,cutoff at写5000(加入4999天,也写5000)
点击左上角Do-kaplan-Maier-maker1,出现如下界面:
点击红框的倒三角,能够确认最适的两个cut-off值,下面的长方形能确定最适的一个cut-off值。
点击倒三角的结果如下:
点击长方形的结果如下:
把cut-off值记下来,然后用R语言做生存曲线。
需要改动的代码是ifelse函数,改为最适的cut-off值。
另外,TCGA的数据已经上传到资源,已经进行id转换,标准化及logCPM,logTPM等处理,包含已经整理好的完整临床资料,大家要做生信分析可以直接到我的资源下载,直接可以进行后续生信分析,免除数据准备的各种麻烦。
注:x-tile软件已上传到我的资源!