→ gsuper:(比如BMI 22 加起來為 0.92) , 這句話代表 AUC = 0.9212/06 16:16
→ gsuper:sensitivity+specificity 最大的點 , 是一個選項12/06 16:17
→ gsuper:其他還看過相乘開根號12/06 16:17
AUC並非0.92
ROC曲線的繪製有點麻煩...
先想像一個情況,我有一個檢驗工具要拿來驗癌症,
這個檢驗工具可測得血中的某癌症指標(A)濃度(假設A濃度越高越有可能罹癌)。
以下是模擬數據:
A濃度 有病 沒病
1 1 9
2 3 7
3 5 5
4 8 2
5 9 1
total 26 24
於是當我設定不同cut-off值,sensitivity和(1-specificity)分別如下
A濃度 SEN SPE 1-SPE
>=1 26/26 0/24 24/24
>=2 25/26 9/24 15/24
>=3 22/26 16/24 8/24
>=4 17/26 21/24 3/24
>=5 9/26 23/24 1/24
使用下列R指令即可繪圖:
SEN<-c(1, 0.961538462, 0.846153846, 0.653846154, 0.346153846)
FSEN<-c(1, 0.625, 0.333333333, 0.125, 0.041666667)
plot(FSEN,SEN,xlab="False Positive", ylab="True Positive", type="l")
至於怎麼用R算AUC...等我查一下資料= =
因為我只有用過SAS和SPSS作ROC曲線...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.173.162.2
→ gsuper:恩 AUC是面積 當時寫的不對 12/11 16:23
→ gsuper:反正概念差不多就那樣 圖畫出來就立刻學會了 12/11 16:24
R程式碼範例:
#請先安裝pROC package。
install.packages("pROC",repos="http://R-Forge.R-project.org")
library(pROC)
#先建立模擬資料檔(這種手動輸入方法比較笨 = = )
#亦可用模擬邏輯斯迴歸的方法模擬,日後再詳述。
outcome<-c("ca","ca","ca","ca","ca","ca","ca","ca","ca","ca",
"ca","ca","ca","ca","ca","ca","ca","ca","ca","ca","ca","ca",
"ca","ca","ca","ca",
"health","health","health","health","health","health","health",
"health","health","health","health","health","health","health",
"health","health","health","health","health","health","health",
"health","health","health")
conA<-c(1,2,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,
1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,4,4,5)
id<-c(1:50)
#把上面的資料整合成一個dataframe。
data<-data.frame(id,outcome,conA)
#以下參數依序為"是否罹癌"、"A濃度",而levels指定control組是"沒有罹癌"
roc(data$outcome,data$conA, levels=c("health","ca"))
結果:
Call:
roc.default(response = data$outcome, predictor = data$conA, levels =
c("health", "ca"))
Data: data$conA in 24 controls (data$outcome health) < 26 cases (data$outcome
ca).
Area under the curve: 0.8045
亦可使用該指令繪圖:
result<-roc(data$outcome,data$conA, levels=c("health","ca"))
plot.roc(result)
※ 編輯: anovachen 來自: 1.173.162.2 (12/11 16:52)
※ 編輯: anovachen 來自: 1.173.162.2 (12/11 16:57)