在醫學統計中,ROC分析經常用於(1)比較預測模型的好壞(比較AUC(Area under the Curve of ROC)的面積大小)、(2)找單一模型的最佳切點,可用於臨床上的使用(例如:找到Biomarker的切點,用於診斷疾病)。

 

AUC的特性:

1.AUC的範圍必在0~1之間

2.假設閾值(切點)以上是陽性(有病),以下是陰性(沒病)

3.若隨機抽取一個陽性(有病)樣本和一個陰性(沒病)樣本,分類器正確判斷陽性(有病)樣本的值高於陰性(沒病)樣本之機率=AUC

4.AUC值越大的分類器,正確率越高

 

 

AUC判斷分類器(預測模型)好壞的標準:

AUC=1,是完美分類器,代表隨機抽取樣本,100%都是陽性的樣本

0.5<AUC<1,優於隨機猜測(0.5)。這個分類器(模型)設定好的閾值後,能有預測價值。

AUC=0.5,跟隨機猜測一樣(例如:丟一枚銅板),模型沒有任何預測價值。

AUC<0.5,比隨機猜測還差;但只要是用於反預測(用來預測陰性或沒病),就優於隨機猜測

 

壹、資料說明

1.jpg

 

貳、會用到的package:

haven:用於讀入資料

pROC:用於畫ROC curve

 

參、讀入數據:

透過R studio已內建的”haven” package匯入資料,”haven”可用於匯入SPSS、Stata、SAS檔案。

 

2.jpg

 

肆、產生ROC物件:

透過pROC內建的roc函數可以去得到Auc的面積、每一個切點、不同切點下的敏感度(sensitivity)、不同切點下的特異度(specificity)等等,筆者針對資料當中的四個連續變項(HOMA_ln、BMI、WC、HDL),以代謝症候群為outcome,去做ROC的分析。指令說明:roc(outcome:二元變項,自變項:連續變項)

 

3.jpg

 

伍、ROC結果呈現:

以HOMA_ln為例,AUC的面積為0.8471,在實務上,AUC超過0.7以上的結果算是相當的不錯,可以很好的用於臨床的診斷。

 

4.jpg

 

此外,筆者也透過R的summary(),可以去看ROC的物件中有哪一些內容,如下圖所示。

 

5.jpg

 

陸、繪製基本的ROC curve

    筆者直接使用plot函數去繪製沒有任何加工的ROC curve,如下圖所示,雖然看的出來是一張ROC curve,但還是有一些問題存在,首先,X軸的標題是特異度,但一般常見的ROC curve X軸通常是1-特異度,此外圖形的字體大小、線條粗細等可以再做一些調整,以符合投稿的需求。

 

6.jpg

 

柒、美化ROC curve:

 

7.jpg

 

根據上述語法執行後,美化後的圖形如下,比起一開始較為陽春的圖形,修正後的圖形變得相當正式,雖然還是有一些調整的空間以符合使用者的需求,有興趣的讀者可以去(https://www.rdocumentation.org/packages/pROC/versions/1.17.0.1/topics/plot.roc)上面了解詳細語法的使用。

 

8.jpg

 

捌、多組ROC curve比較:

在繪製了一張ROC curve後,筆者想把多條ROC curve畫在一起,以比較不同預測模型的區辨能力,首先,因為原本的ROC曲線繪圖範圍是長方形,因此圖形輸出後,會留下許多不必要的空白,因此可以在繪圖的一開始,先限制繪圖的範圍,這邊會用到par(pty=”s”),這邊的”s”指的是square(正方形),下了這個指令後,之後的圖形才會跟上面示範的一樣,不會有不必要的空白。

 

9.jpg

 

畫圖的語法就根據前面介紹的一樣做操作,第一張圖形有加上標題,這邊使用main=”標題”,第二張圖形開始會調整線條的顏色,以區別不同ROC曲線,col=”顏色”,可以去調整線條的顏色,預設為黑色;第二張圖形要加上add=TRUE,這個指令是用於將圖形疊到前一張圖形,這樣才可以得到圖形疊加的結果。

 

10.jpg

 

最後圖形的成品如下

 

11.jpg

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 晨晰部落格新站 的頭像
    晨晰部落格新站

    晨晰統計部落格新站(統計、SPSS、BIG DATA討論園地)

    晨晰部落格新站 發表在 痞客邦 留言(0) 人氣()