dxy logo
首页丁香园病例库全部版块
搜索
登录

预测模型连载3:列线图(nomogram)的R语言实现

消化内科医师 · 最后编辑于 2019-03-24 · IP 上海上海
16.9 万 浏览
这个帖子发布于 9 年零 109 天前,其中的信息可能已发生改变或有所发展。

系列文章:

-------------------------------------------------------------------------------------------------------------------------

本人刚刚学习R,对Cox回归和nomogram建立非常感兴趣,读到董英老师《Cox模型及预测列线图在R软件中的实现》一文(附件),学到很多。现将其中代码结合个人体会,码于下文,请过往各位战友拍砖。

1. 安装相关的包(packages)

  • install.packages("rms")  #这一步一劳永逸。安装好后,再次启动R时,无需再次输入代码,下同

  • install.packages("Hmisc")

  • install.packages("lattice")

  • install.packages("survival")

  • install.packages("Formula")

  • install.packages("ggplot2")

  • install.packages("foreign")

2. 从SPSS文件读入数据

本例应用的是SPSS 18.0自带数据"Breast cancer survival.sav"(附件,需解压)。根据文中所述,作者对原始数据做了两方面改动:

①根据连续型变量age生成分类变量agec。这一步我通过SPSS完成,并保存为"Breast cancer survival agec.sav"(附件,需解压)。接下来导入R中:

  • library(foreign)  #函数read.spss()属于foreign包,故需先加载该包

  • bc <- read.spss("C:/Users/panjun/Desktop/viscera/Breast cancer survival agec.sav", use.value.labels=F, to.data.frame=T)  #原文use.value.labels给的是T

②原始数据共1207个观测(行),删除含缺失值的观测,最后得到660个观测:

  • bc <- na.omit(bc)  #函数na.omit()即删除数据框中所有含缺失值的观测

3. 加载相关的包

  • library(rms)  #加载rms包时,Hmisc、lattice、survival、Formula和ggplot2等包通常会自动加载;不然请手动加载

4. 数据打包

  • dd <- datadist(bc)

  • options(datadist="dd")

5. 生成函数

  • f <- cph(Surv(time, status) ~ agec + pr + pathscat + ln_yesno, x=T, y=T, surv=T, data=bc, time.inc=36)

  • surv <- Survival(f)

6. 建立nomogram

  • nom <- nomogram(f, fun=list(function(x) surv(36, x), function(x) surv(60, x), function(x) surv(120, x)), lp=F, funlabel=c("3-year survival", "5-year survival", "10-year survival"), maxscale=10, fun.at=c(0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.6, 0.5))   #maxscale为列线图第一行最大的分值,默认值100,这是文献中列线图普遍采用的最大分值;本例由于原文设定最大分值为10,故输入代码maxscale=10

  • plot(nom)

img

这样nomogram就建立起来了。很多地方我没有加#注解,欢迎拍砖,欢迎提问。


Breast cancer survival agec.rar (12.8 KB)
Cox模型及预测列线图在R软件中的实现.pdf (481 KB)
Breast cancer survival.rar (13.3 KB)
366 1223 103

全部讨论(0)

默认最新
avatar
366
分享帖子
share-weibo分享到微博
share-weibo分享到微信
认证
返回顶部