今天在做随机生存森林的分析,将数据集分成7/3的训练集和测试集,用randomForestSRC包进行分析,挑选到10个特征变量进行建模,然后用下面这个代码来画训练集的roc曲线不知道对不对,主要是想看如何画测试集的auc。希望大佬们能帮我看看,谢谢!
library(randomForestSRC)
A <- read.csv('1035.csv',row.names = 1,header = T)
library(survival)
library(survminer)
library(tidyverse)
set.seed(10)
i <- sample(1:363,254)
train <- A[i,]
test <- A[-i,]
disease.rf <- rfsrc(Surv(OS_MONTHS,OS_STATUS)~.,data = train,ntree = 800,mtry = 3,nodesize = 3,splitrule = "logrank")
our.rf <- var.select(object = disease.rf,vdv,method = "vh.vimp",nrep = 50)
index <- numeric(our.rf$modelsize)
for(i in 1:our.rf$modelsize){index[i] <- which(names(A)==our.rf$topvars[i])}
data <- A[,c(1,2,index)]
i1 <- sample(1:363,254)
train1 <- data[i1,]
test1 <- data[-i1,]
rf.model <- rfsrc(Surv(OS_MONTHS, OS_STATUS) ~ ., train1, ntree = 300, importance = TRUE)
survival.results <- predict(rf.model, newdata = test)
library(cmprsk)
library(riskRegression)
fit <- Score(list('model1'=rf.model),
formula=Hist(OS_MONTHS,OS_STATUS)~1,
data =train ,se.fit=1L,times=c(12,36,60),
plots="ROC",
metrics ="auc")
d <- as.data.frame(fit$AUC$score)
a <- d[d$times %in% c(12,36,60),]
col = c("darkcyan","tomato","purple")
plotROC(fit,
xlab="1-Specificity",
ylab="Sensitivity",
col=col[1],
legend="",
cex=1,
auc.in.legend = T,
times = 12)
plotROC(fit,col=col[2],legend = '', cex=0.5,times = 36,auc.in.legend = F,add=T)
plotROC(fit,col=col[3], times = 60, add=T, cex=0.5, legend = '',auc.in.legend = F)
leg <- paste(c("AUC at 1 year:","AUC at 3 year:","AUC at 5 year:"),a$AUC_com)
legend(0.8,0.2,legend=leg,cex = 1,bty='n',title='Train',
col=col,lwd=2)


雷达卡


京公网安备 11010802022788号







