cox回归模型的列线图绘制方法有很多种,这里先附上最简单常见的一种吧,后续再来精修~
Mydata<-read.csv(file.choose()) #打开我的数据
View(Mydata)
factor_v <- c("F") #这个数据中变量F是等级分类变量,需转为因子型变量,但对列线图展示影响不大
Mydata[factor_v] <- lapply(Mydata[factor_v],factor)
library("survival")
dd <- datadist(Mydata)
options(datadist = "dd")
cox_fit <- cph(Surv(time, status) ~A + B +
C + D +E+F,data=Mydata,
x = TRUE, y = TRUE, surv = TRUE) #也可以使用coxph()函数,但我的R报错,换了个函数
summary(cox_fit) #可以初步查看自己的模型结果
library(Hmisc)
library(rms)
surv <- Survival(cox_fit) #构建cox比例风险模型后构建生存函数
surv1 <- function(x) surv(6,x) # 5个月年OS #注意最大的生存时间啊,我的最长时间是17.3个月
surv2 <- function(x) surv(6*2,x) # 10个月年OS #假如你的数据都没有达到1*12或者都超过了1*12,那就会出错
par(mgp=c(1.6,0.6,0),mar=c(5,5,3,1)) #我习惯设置画布大小,防止下标出界
nom <- nomogram(cox_fit,
fun = list(surv1,surv2),
lp = T,
funlabel = c('半年生存概率 ',
'1年生存概率 '),
maxscale = 100,
fun.at = c(0.05, 0.1,0.4,0.7,0.95))
plot(nom,
lplabel="Linear Predictor",
xfrac = 0.2, # 左侧标签距离坐标轴的距离
#varname.label = TRUE,
tcl = -0.2, # 刻度长短和方向
lmgp = 0.1, # 坐标轴标签距离坐标轴远近
points.label ='Points',
total.points.label = 'Total Points',
cap.labels = FALSE,
cex.var = 1, # 左侧标签字体大小
cex.axis = 1, # 坐标轴字体大小
col.grid = gray(c(0.8, 0.95))) # 竖线颜色