RでROC曲線を描いてみます。
libraryの”tidyverse”と”pROC”を使用します。
libraryの使い方はこちらの記事から
まず、EventsとBMIの関係について評価します。
今回使用する練習データはこちらにあります。
ROC <- roc(Events ~ BMI, data = df, ci =TRUE)
ROC
r <- ggroc(ROC, size = 1, legacy.axes = TRUE)+
geom_abline(color = "dark grey", size = 0.5)+
theme_bw()+
scale_y_continuous(expand = c(0, 0))+scale_x_continuous(expand = c(0, 0))
plot(r)
複数のROC曲線を一つの図にまとめることもできます。
BMIの後にLDL-Cを追加しています。
ROC <- roc(Events ~ BMI + LDL.C, data = df, ci =TRUE)
ROC
r <- ggroc(ROC, size = 1, legacy.axes = TRUE)+
geom_abline(color = "dark grey", size = 0.5)+
theme_bw()+
scale_y_continuous(expand = c(0, 0)) + scale_x_continuous(expand = c(0, 0))
plot(r)
ここからはROC曲線のパラメーター求め方です。
AUC、感度、特異度、Best cutoff、Youden indexを求めます。
まずはAUCです。
ROC1 <- roc(Events ~ BMI, data = df, ci = TRUE)
ROC1
次に感度、特異度、Best cutoff、Youden indexです。
#Youden index
plot(ROC1, identity = TRUE, print.thres = "best", print.thres.best.method = "youden", legacy.axes = TRUE)
#Best cutoff
plot(ROC1, identity = TRUE, print.thres = "best", print.thres.best.method = "closest.topleft", legacy.axes = TRUE)
上記を入力するごとに数値が表示されます。
2つのROC曲線のAUCを比較することもできます。
ROC1 <- roc(Events ~ BMI, data = df, ci = TRUE)
ROC2 <- roc(Events ~ LDL.C, data = df, ci = TRUE)
roc.test(ROC1, ROC2)
Eventsに対するBMIとLDL-CのROC曲線をAUCで比較し、p値は0.8772です。