rm(list=ls())
setwd("D:/R/R-4.0.5/bin/project_writing/singleGene")

ROC

步骤:

1. 数据处理:

  • 原始数据与cox回归一致,生存时间、状态+相关变量

  • 拟合cox回归模型:cph();coxph()

  • 根据拟合模型计算模型预测风险值:predict()

    • predict(fit,type)输入2个参数:fit之前拟合的模型,type='lp'为生存ROC特有的线性预测
  • 将风险值加入原始表格得到最终数据表

2. 建模:

  • survivalROC建模,得到的对象包含ROC计算的各种结果,提取FPTP用于做图

  • 函数survivalROC(Stime,status,marker,predict.time,method)包含五个参数:Stime,status生存时间和状态;marker是之前算出来的预测值;predict.time为想要计算ROC的时间;method='KM'生存分析常用描述值KM

3. 绘图:

  • x=roc_fit$FP,y=roc_fit$TP直接绘图(也可用ggplot);

  • 设置线条属性、坐标轴、标题标签等

  • 加入参考线abline()

  • 加入legend(map,expression,col)

  • lines(x,y,col)在原有图片的基础上再加线条,也可用plot(... , add=T)

#载入数据
load("NMG_data_surv.Rdata")
pdNMG <- na.omit(pdNMG)

#加载需要的R包
suppressMessages(library(survivalROC))
suppressMessages(library(rms))

## 建立模型

#建立cox回归模型
dd <- datadist(pdNMG)
options(datadist = "dd")
cph_fit <- cph(Surv(OS.time,OS)~AGE+gender+AJCC_N+AJCC_M+group,data = pdNMG)
#计算预测值
pdNMG$pre <- predict(cph_fit,type = "lp")
#计算真阳、假阳性率
cutoff <- 1095#设置时间
roc_fit <- survivalROC(Stime=pdNMG$OS.time,  
                       status=pdNMG$OS,      
                       marker = pdNMG$pre,     
                       predict.time =  cutoff, 
                       method="KM")

## 图形绘制与美化

#install.packages("ggsci")
suppressMessages(library(ggsci))
suppressMessages(library(scales))

pal_jco("default")(10)
##  [1] "#0073C2FF" "#EFC000FF" "#868686FF" "#CD534CFF" "#7AA6DCFF" "#003C67FF"
##  [7] "#8F7700FF" "#3B3B3BFF" "#A73030FF" "#4A6990FF"
show_col(pal_jco("default")(10))

plot(roc_fit$FP, roc_fit$TP,
       type="l",col="#CD534CFF",lwd=2, ##线条设置
       xlim=c(0,1), ylim=c(0,1), 
       xlab=("1 - Specificity"), ##连接
       ylab="Sensitivity",
       main="Time dependent ROC \n 3years")## \n换行符
abline(0,1,col="gray",lty=2)##线条颜色
legend(0.75,0.25,c(paste("AUC  =",round(roc_fit$AUC,3))),
         #x.intersp=1, y.intersp=0.8,#行、列间距
         lty= 1 ,lwd= 2,col="#CD534CFF",
         bty = "n",# 边框的类型
         seg.len=1,cex=0.8)

#lines函数在原有基础上继续绘图
#lines(ROC2$FP, ROC2$TP, type="l",col="#0072B5FF",xlim=c(0,1), ylim=c(0,1))

DCA

步骤

  1. 回归建模:
  • 可以选择lrm(logistic regression model),Cox Proportional Hazards:cph,coxph;

*【注意】建模时只能用Surv(time,event)~val,不可以使用计算出来的survdata

  1. DCA建模:DCA(cot_fit,times=c())不写times=默认为中位数

3.绘图:ggDCA是基于ggplot2的包

# 4.2.3 DCA 曲线
rm(list=ls())
gc()
##           used  (Mb) gc trigger  (Mb) max used  (Mb)
## Ncells 2275772 121.6    4557192 243.4  2989547 159.7
## Vcells 3859880  29.5    8388608  64.0  8388602  64.0
## 加载R包
#install.packages("ggDCA")
suppressMessages(library(ggplot2))
suppressMessages(library(ggDCA))
suppressMessages(library(foreign))
#install.packages("rmda")
suppressMessages(library(rmda))
suppressMessages(library(rms))
suppressMessages(library(survival))
  
## 载入数据
load("NMG_data_surv.Rdata")
pdNMG <- na.omit(pdNMG)
dd = datadist(pdNMG)
options(datadist = "dd")

##建模
cox_fit <- cph(Surv(OS.time,OS)~AGE+gender+AJCC_N+AJCC_M+group,data = pdNMG)
DCA <- dca(cox_fit,times=1095)
##绘图
ggplot(DCA)
## Warning: Removed 17 row(s) containing missing values (geom_path).

重点知识 | 获取颜色

suppressMessages(library(ggsci))#这个包有sci杂志的配色
#杂志名、色板名、颜色数
pal_jco("default")(10)
##  [1] "#0073C2FF" "#EFC000FF" "#868686FF" "#CD534CFF" "#7AA6DCFF" "#003C67FF"
##  [7] "#8F7700FF" "#3B3B3BFF" "#A73030FF" "#4A6990FF"
show_col(pal_jco("default")(10))

#有些里面的色板名需查看help
pal_npg("nrc")(10)
##  [1] "#E64B35FF" "#4DBBD5FF" "#00A087FF" "#3C5488FF" "#F39B7FFF" "#8491B4FF"
##  [7] "#91D1C2FF" "#DC0000FF" "#7E6148FF" "#B09C85FF"
show_col(pal_npg("nrc")(10))

  • 可以使用的杂志有:pal_jco;pal_lancet;pal_npg;pal_nejm;pal_igv等;输出值为16进制色号

  • 使用 show_col() 查看