R语言|中位生存时间列线图绘制

转自个人微信公粽号【易学统计】的统计学习笔记:R软件绘制患者中位生存时间列线图

研究背景

前两章分享的是绘制1年、3年和5年生存时间的列线图,本章主要是绘制中位生存期的列线图。生存期和生存率都是临床上评价肿瘤治疗的重要指标。生存期一般分为总生存期(OS)、中位生存期(MST)、无进展生存期(PFS),每个指标都有不同的意义,而生存率也有3年生存率、5年生存率,10年生存率等。

5年生存率是指某种肿瘤经综合治疗后,生存5年以上的比例。5年生存率表达具有一定的科学性。

中位生存期(MST)又称半数生存期,表示有且只有50%的个体活过这个时间。比如1000个人参加临床试验,将每个人的生存时间按照从小到大排名,第501人的生存时间为18个月,即表明该临床试验的中位生存期为18个月。如果是评估某个癌种的中位生存期,一般从发现该肿瘤开始计算;如果是评估某项临床试验的中位生存期,一般从给药或随机开始。

案例研究

本文数据依旧采用R自带的lung数据集,一个晚期肺癌数据集,收集了228例癌症患者的生存资料,包含患者年龄、性别、生存时间、生存状态等10个变量。本文利用年龄、性别和体重减轻三个变量构建模型,绘制中位生存期列线图。

临床研究一般提供多个危险因素,首先做单因素的筛选,具体筛选方法,见公众号之前的文章,本章详细说明中位生存期列线图和自定义存活比例患者列线图的绘制。

R代码及解读

##加载包 明确每个包的作用
library(rms)  ##绘制列线图
library(survival)  ##生存分析包
##调用数据,数据格式与普通的spss中格式一样,一行代表一条观测,     
##一列代表一个变量;
data(lung)
d <- lung
#aggr(d,prop=T,numbers=T) #判断数据缺失情况,红色表示有缺失。
d <- na.omit(d) #按行删除缺失值

第一步,数据整理。

###添加变量标签,在列线图上展示分类标签
d$sex <- factor(d$sex,levels = c(1,2),labels = c('male','female'))
##结局变量转换
d$status <- ifelse(d$status==2,1,0)
str(d)##可以查看数据结构

第二步:构建模型并绘制中位生存时间列线图

#Cox模型多因素分析-进行比例风险假设检验
y<-Surv(d$time,d$status==1,type="right")
mod<-coxph(y~age+sex+wt.loss, data=d)
temp <- cox.zph(mod,transform="rank",global=T)  ##等比例检验
temp
#####结果展示
##          chisq df    p
## age     0.647  1 0.42
## sex     1.064  1 0.30
## wt.loss 0.376  1 0.54
## GLOBAL  1.974  3 0.58

dd<-datadist(d) #设置工作环境变量,将数据整合
options(datadist='dd') #设置工作环境变量,将数据整合
units(d$time) <- "Day"  ## 设定时间单位
##
coxm <- cph(Surv(time,status)~age+sex+ph.ecog,x=T,y=T,data=d,surv=T)
med  <- Quantile(coxm)
###绘制cox回归生存概率的nomogram图
## 构建Nomo图的对象只能是rms包中cph()函数
nom1 <- nomogram(coxm, fun=function(x) med(lp=x), ## lp 绘制线形图,即图中totalpoints那根线
                 funlabel="Median Survival Time",
                 lp=F)
par(mar=c(4,5,3,2),cex=0.8) ## 设置画布
plot(nom1)
列线图2.png

自定义存活比例列线图的绘制:比如现在想知道25%的人能存活的时间,此时在原函数中添加q=0.25就行,如果想看75%的人能存活的时间,则q=0.75。

第三步:绘制列线图

nom2<- nomogram(fcox,fun=list(function(x) med(lp=x,q=0.5),
                              function(x) med(lp=x,q=0.25)),
                    funlabel=c("Median Survival Time","1Q Survival Time"),
                    lp=F)
 
  ###  以下是将列线图输出保存方法                   
road<- paste('C:\\文件夹\\','Nomo.jpeg',sep='',collapse = "")
jpeg(file=road,width = 1000, height = 600)   ##定义输出图片的长度和宽度
plot(nom2,cex.axis=1.4,  ## 坐标轴刻度文字的缩放倍数
     xfrac=.25,  ## 左侧标签与 刻度的距离
     cex.lab=1.6, ##坐标轴标签(名称)的缩放倍数
     col.grid=c("red","green"))  ## 画网格不同颜色标注
dev.off()  ## 这个函数可以将画出的图保存到road这个路径
Nomo_total.jpeg

右下角的图看不清,局部放大看下:


列线图局部放大.png
绘制列线图的参数说明:

1.等比例风险检验:能采用cox回归模型有一个前提条件,危险因素对死亡风险的作用的作用强度随着时间的变化时一致的。如果搭建模型,发现有些变量随时间变化而变化,不满足等比例条件,需要处理,这个在之后的文章会介绍,敬请关注。本例中返回的结果可以看到,最后面的GLOBAL是整体看,P值大于0.05,全模型整体都是满足的。对于每一个分类来说P值大于0.05,也是满足的。

  1. 相比于1年,2年生存期,求中位生存时间,采用的函数是Quantile()函数,通过调整其中参数q自定义需要的存活比例。以上第二个图的最后一行表示的是:25%的人存活的时间在370到380天,倒数第二行则表示50%的人也就是中位生存期是250到550天,这个只是演示下,一般情况下中位生存期区间比较紧凑。
    3.在绘制列线图上,本章增加了一点新元素,绘制出彩色网格,可以更方便找到对应的得分值。

以上就是中位生存时间列线图所有内容了。后面还有更多高分统计方法分享,请持续关注哦~

如果您觉得有用,请点赞,转发哦~

更多统计小知识,请关看 公粽号 易学统计

更多阅读
R语言|Cox模型校准度曲线绘制
基于Lasso回归筛选变量构建Cox模型并绘制Nomogram
R语言Logistic回归模型验证及Nomogram绘制
如何进行高维变量筛选和特征选择(一)?Lasso回归

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容