上次介绍了如何绘制一个好看的生存曲线:。

但有的时候我们会发现,单因素cox回归某个自变量对生存有意义,当绘制生存曲线的时候,确变得没意义了,比如下面这一组数据:

单因素多分类的COX回归分析 单因素cox回归p值大小_人工智能

 我们先进行一下单因素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)

单因素多分类的COX回归分析 单因素cox回归p值大小_数据_02

  

可以看到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)

单因素多分类的COX回归分析 单因素cox回归p值大小_单因素多分类的COX回归分析_03

 生存曲线也是看不出差异:

单因素多分类的COX回归分析 单因素cox回归p值大小_数据_04

 这是因为中位值并不是这个基因最合适的截断值,因此,我们需要选择最合适的截断值。

选择截断值的软件目前比较火比较方便的便是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回归分析 单因素cox回归p值大小_单因素多分类的COX回归分析_05

可以看到,单因素cox回归有意义了,这也就意味着生存曲线也有意义:

单因素多分类的COX回归分析 单因素cox回归p值大小_数据_06

 因此,选择最适的cutoff值是很有必要的。关于生存曲线如何绘制,可以查看我们的另一期教程:

 

下面介绍x-tile的使用!!

数据格式如下:

单因素多分类的COX回归分析 单因素cox回归p值大小_数据挖掘_07

 将此数据存成txt(文本文件,制表符分隔)。

单因素多分类的COX回归分析 单因素cox回归p值大小_数据_08

 打开x-tile并点击分析:

单因素多分类的COX回归分析 单因素cox回归p值大小_人工智能_09

 

单因素多分类的COX回归分析 单因素cox回归p值大小_回归_10

 然后File-open-选择数据导入。

单因素多分类的COX回归分析 单因素cox回归p值大小_数据挖掘_11

 Censor对应OS即生存状态,Survivaltime对应OS.time生存时间,marker1就是要研究的变量(基因表达,患者年龄,性别,分期等都可以)。

单因素多分类的COX回归分析 单因素cox回归p值大小_回归_12

此处注意,如果随访的数据是天,就都改成Days,然后随访天数最长的加入是五千天,cutoff at写5000(加入4999天,也写5000) 

单因素多分类的COX回归分析 单因素cox回归p值大小_数据挖掘_13

 点击左上角Do-kaplan-Maier-maker1,出现如下界面:

单因素多分类的COX回归分析 单因素cox回归p值大小_数据_14

 点击红框的倒三角,能够确认最适的两个cut-off值,下面的长方形能确定最适的一个cut-off值。

点击倒三角的结果如下:

单因素多分类的COX回归分析 单因素cox回归p值大小_数据_15

 点击长方形的结果如下:

单因素多分类的COX回归分析 单因素cox回归p值大小_回归_16

 把cut-off值记下来,然后用R语言做生存曲线。

单因素多分类的COX回归分析 单因素cox回归p值大小_回归_17

 生存曲线的代码参考之前的博客:绘制一张好看的生存曲线_李京弦的博客-CSDN博客首先准备数据,数据格式如下:这是来自TCGA—BLCA的数据,OS.time生存时间,OS生存状态:1表示死亡,0表示存活,NSUN6是随意筛选的某个基因的表达量。下面开始测试代码:1.设置工作路径,读取数据setwd("D:\\data")dir()data <- read.csv("survival.csv",header = T,sep = ",")head(data)##查看数据> head(data) Sample OS.time OS

需要改动的代码是ifelse函数,改为最适的cut-off值。

单因素多分类的COX回归分析 单因素cox回归p值大小_单因素多分类的COX回归分析_18

另外,TCGA的数据已经上传到资源,已经进行id转换,标准化及logCPM,logTPM等处理,包含已经整理好的完整临床资料,大家要做生信分析可以直接到我的资源下载,直接可以进行后续生信分析,免除数据准备的各种麻烦。

注:x-tile软件已上传到我的资源!