预测模型连载3:列线图(nomogram)的R语言实现
系列文章:
预测模型连载1:风险模型(risk model)、风险评分(risk score)、列线图(nomogram)的概念与步骤
预测模型连载2:风险模型(risk model)、风险评分(risk score)、列线图(nomogram)的公式与原理
-------------------------------------------------------------------------------------------------------------------------
本人刚刚学习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)
这样nomogram就建立起来了。很多地方我没有加#注解,欢迎拍砖,欢迎提问。