我们既往已经在文章《手把手教你使用R语言制作临床决策曲线》介绍了怎么使用rmda包制作了临床决策曲线,但是rmda包只能制作logistic回归模型的临床决策曲线,原来制作COX回归模型的stdca包R上下载不到。有粉丝留言向我推荐了ggDCA包,今天来演示一下怎么使用ggDCA包制作COX回归模型临床决策曲线。
ggDCA包由我们R语言大神,南方医科大学的博导Y叔制作,使用ggDCA包可以制作logistic回归模型和COX回归模型临床决策曲线,作图很简单,其中也让我体会到了制图的原理,目前ggDCA还在继续完善中。
下面我们来演示一下,还是既往乳腺癌的数据。
先导入包和数据
library(ggDCA)
library(rms)
library(foreign)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
use.value.labels=F, to.data.frame=T)
我们先来看看数据:
age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。
先把部分用到的分类变量转换一下并删除缺失值
bc$histgrad<-as.factor(bc$histgrad)
bc$er<-as.factor(bc$er)
bc$pr<-as.factor(bc$pr)
bc$ln_yesno<-as.factor(bc$ln_yesno)
names(bc)
bc <- na.omit(bc)
数据集分为训练集和验证集
set.seed(1)
index <- sample(2,nrow(bc),replace = TRUE,prob=c(0.7,0.3))
traindata <- bc[index==1,]
testdata <- bc[index==2,]
然后使用训练集构建3个预测模型(随便建的)
#####生成3个模型
f1<-cph(Surv(time,status)~age,traindata)
f2<-cph(Surv(time,status)~er+histgrad+pr,traindata)
f3<-cph(Surv(time,status)~er+histgrad+pr+age+ln_yesno,traindata)
开始绘制图形,不设时间的话默认中位数时间
d_train <- dca(f1)
ggplot(d_train)###不设时间的话默认中位数时间
单个模型的3年生存率
d_train <- dca(f1,
times=36)
ggplot(d_train)
多个模型的5年生存率
d_train <- dca(f1,f2,f3,
times=60)####多个模型5年后生存率
ggplot(d_train)
多个模型的3年和5年生存率
d_train <- dca(f1,f2,f3,
times=c(36,60))####多个模型3年和5年后生存率
ggplot(d_train)
在验证集上多个模型的5年生存率
d_train <- dca(f1,f2,f3,
times=60,
new.data=testdata)
我对这种虚线有强迫症,感觉改为实线美观一点
d_train <- dca(f1,f2,f3,
times=60)####多个模型5年后生存率
ggplot(d_train,linetype=1)