Rの使い方:ROC曲線

  • 2021年7月6日
  • 2021年8月10日
  • 統計-R
  • 4407view

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)

 

画像12

 

複数の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)

 

画像13

 

ここからはROC曲線のパラメーター求め方です。

AUC、感度、特異度、Best cutoff、Youden indexを求めます。

まずはAUCです。

ROC1 <- roc(Events ~ BMI, data = df, ci = TRUE)
ROC1
画像14

 

次に感度、特異度、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)

上記を入力するごとに数値が表示されます。

 

画像15

2つのROC曲線のAUCを比較することもできます。

ROC1 <- roc(Events ~ BMI, data = df, ci = TRUE)
ROC2 <- roc(Events ~ LDL.C, data = df, ci = TRUE)
roc.test(ROC1, ROC2)
画像16

Eventsに対するBMIとLDL-CのROC曲線をAUCで比較し、p値は0.8772です。

 

スポンサーリンク
最新情報をチェックしよう!