Time dependant ROC

library(survivalROC)

#####dataにdata.frameいれる#####
data(FTUL1028)
###365を別の日付に###

cutoff <- 365
FTUL= survivalROC(Stime=FTUL1028$intervention.days,status=FTUL1028$intervention.cencor,
marker = FTUL1028$age65, predict.time = cutoff, method="KM")
plot(FTUL$FP, FTUL$TP, type="l", xlim=c(0,1), ylim=c(0,1),
xlab=paste( "FP", "\n", "AUC = ",round(FTUL$AUC,3)), ylab="TP",
main=paste("age65, Method = KM \n Year =", cutoff/365))
abline(0,1)
#AUC出す

FTUL$AUC

#精度 、精度が最大になる値

FTUL$ACR = ((1-FTUL$FP)+FTUL$TP)
MAXACR = max(FTUL$ACR)
MAXACR
ACRretsu = grep(MAXACR, FTUL$ACR)
ACRretsu

#ACRretsuを代入してCutoffを決める
FTUL$cut.values[32]


ROC(730)

AUC4 <- rep(0, 12)
AUC4[1] <- ROC(365)
AUC4[2] <- ROC(365*2)
AUC4[3] <- ROC(365*3)
AUC4[4] <- ROC(365*4)
AUC4[5] <- ROC(365*5)
AUC4[6] <- ROC(365*6)
AUC4[7] <- ROC(365*7)
AUC4[8] <- ROC(365*8)
AUC4[9] <- ROC(365*9)
AUC4[10] <- ROC(365*10)
AUC4[11] <- ROC(365*11)
AUC4[12] <- ROC(365*12)


ROC2 <- function(cut){
cutoff <- cut
Mayo4.2= survivalROC(Stime=mayo$time,status=mayo$censor,
marker = mayo$mayoscore5,predict.time = cutoff, method="KM")
plot(Mayo4.2$FP, Mayo4.2$TP, type="l", xlim=c(0,1), ylim=c(0,1),
xlab=paste( "FP", "\n", "AUC = ",round(Mayo4.2$AUC,3)), ylab="TP",
main=paste("Mayoscore 5, Method = KM \n Year =", cutoff/365))
abline(0,1)
Mayo4.2$AUC
}

AUC5 <- rep(0, 12)
AUC5[1] <- ROC2(365)
AUC5[2] <- ROC2(365*2)
AUC5[3] <- ROC2(365*3)
AUC5[4] <- ROC2(365*4)
AUC5[5] <- ROC2(365*5)
AUC5[6] <- ROC2(365*6)
AUC5[7] <- ROC2(365*7)
AUC5[8] <- ROC2(365*8)
AUC5[9] <- ROC2(365*9)
AUC5[10] <- ROC2(365*10)
AUC5[11] <- ROC2(365*11)
AUC5[12] <- ROC2(365*12)


AUC <- data.frame(Year = rep(1:12, 2), AUC= c(AUC4, AUC5) , mayo = rep(c("4", "5"), c(12, 12)))

library(ggplot2)
ggplot(AUC, aes(x=Year, y=AUC, group=mayo, col=mayo)) + geom_line() + geom_point() + ylim(0.5, 1)

この記事が気に入ったらサポートをしてみませんか?