Logistic回歸—結合ROC曲線應用於聯合診斷

2021-12-30 醫學統計分析學習筆記

本文3294字〡14圖〡預計閱讀20分鐘

在前面學習了logistic回歸的10個基本問題、樣本量估算、啞變量、OR值、多重共線、變量篩選、混雜因素校正以及條件logistic回歸、多分類有序(無序)logistic回歸在SPSS中的操作,今天主要學習logistic回歸+ROC曲線實現多指標聯合診斷應用。

ROC(Receiver operating characteristic curves)曲線作為評價診斷信息和診斷決策的方法,已經被廣泛應用。為了提高臨床診斷的靈敏性和特異性,常採用多指標聯合診斷,可分為串聯與並聯診斷實驗。

串聯要求所有指標陽性才可以判斷結果為陽性,並聯只要有一個指標陽性就可以判斷為陽性,聯合診斷要從臨床和經濟效率兩方面考慮,可以將logistic回歸模型用於多指標聯合診斷方法的篩選。

基本步驟為:將聯合診斷指標作為自變量,金標準結果為因變量,擬合logistic回歸模型,計算預測概率,將預測概率作為ROC曲線的檢驗變量,金標準結果作為狀態變量,繪製ROC曲線,比較AUC(Area under curve),分析多指標聯合診斷的價值。

首先學習兩個例子:作者採用CEA、CA-153、CA19-9、CA72-4四種腫瘤標誌物建立ROC曲線,而後將4種標誌物作為自變量擬合logistic回歸模型,以預測概率Y 為自變量建立ROC曲線,可以看出Y 的AUC要高於前四種腫瘤標誌物,如下所示:

檢驗醫學與臨床, 2017, 014(005):604-606.

作者分別用淋巴結CT 評分、影像組學(綜合了CT評分等資料)為檢驗變量,進展期胃癌淋巴結轉移情況為狀態變量,進行ROC曲線分析,訓練集、測試集的聯合預測模型AUC均高於前者,如下所示:

中華醫學雜誌, 2020, 100(21):1617-1622.

某醫生收集了800例肺癌篩查資料,其中602例確診(均經過病理診斷),變量Y 為病理診斷結果(1陽性、0陰性)。同時,均進行了以下實驗室指標檢查:癌胚抗原( CEA) 、 細胞角蛋白( CYFRA) 、糖類抗原( CA-125)檢測 ,欲研究實驗室檢查指標聯合診斷肺癌的價值,數據如下所示:

▷肺癌實驗室檢查數據集

先看下CEA、CYFRA、CA125的ROC曲線分析情況,【分析】➱【ROC曲線】,如下所示:

▷ROC曲線分析

【檢驗變量】➱選入檢查指標,先用滑鼠選中CEA,然後按住Shift鍵,滑鼠再指向CA125,可以一次性選中變量。【狀態變量】➱Y,狀態變量值設為1(陽性結果,如果設為0,ROC曲線會偏向右下角),如下所示:

▷ROC曲線設置

ROC曲線和AUC結果可知:3個單指標的AUC分別為0.637、0.709、0.652,且P值均小於0.05,如下所示:


▷單指標ROC曲線和AUC結果

【分析】➱【回歸】➱【二元logistic】,如下所示:

【因變量】➱Y,【協變量】➱選入檢查指標,【保存】➱選保存預測概率值,如下所示:

▷二元logistic回歸參數設置

在數據視圖窗口,可以看到最後一列增加了「預測概率值」 PRE_1,如下所示:

【檢驗變量】➱選入檢查指標logistic回歸模型的預測概率,先用滑鼠選中CEA,然後按Shift,滑鼠指向預測概率,可以一次性選中變量。【狀態變量】➱Y,狀態變量值設為1(陽性結果),如下所示:

由ROC曲線和AUC結果可知:單指標和聯合診斷的AUC分別為0.637、0.709、0.652、0.788,P值均小於0.05,聯合診斷的AUC最大,初步說明聯合診斷效能更優。

由於SPSS軟體無法比較不同指標ROC曲線的AUC,下面在R語言操作。

read.table() 讀取數據,factor() 將因變量Y 轉為因子變量,通過glm() 建立logistic回歸模型,predict() 保存預測概率pre,如下所示:

lung_cancer <- read.table("clipboard", header = TRUE) # 讀取數據

lung_cancer$Y <- factor(lung_cancer$Y) #Y轉成因子變量

attach(lung_cancer) # 將數據框添加到搜索路徑

fit <- glm(Y ~ CA125 + CEA + CYFRA, data = lung_cancer_data,family = binomial()) # 擬合logistic回歸

pre <-predict(fit, newdata = lung_cancer_data, type = "response") #保存預測概率

detach(lung_cancer) # 解除數據框路徑存儲

▷數據讀取

載入pROC包,用roc() 建立ROC曲線,如下所示:

library(pROC) # 記載pROC包

roc_CA125 <- roc(lung_cancer$Y, lung_cancer$CA125) # 生成CA125的ROC曲線

roc_CEA <- roc(lung_cancer$Y, lung_cancer$CEA) # 生成CEA的ROC曲線

roc_CYFRA <- roc(lung_cancer$Y, lung_cancer$CYFRA) # 生成CYFRA的ROC曲線

roc_pre <- roc(lung_cancer$Y, pre) # 生成聯合診斷的ROC曲線

▷建立ROC曲線


採用roc.test() 比較不同ROC曲線的AUC,CEA和CA125的AUC分別為0.6523、0.6369,P = 0.6,差異無統計學意義;多指標聯合診斷的AUC為0.7881,與CA125比較,P < 0.01,差異具有統計學意義,如下所示:

> roc.test(roc_CA125, roc_CEA, method = "bootstrap") #比較roc_CA125和roc_CEA

   Bootstrap test for two correlated ROC curves

data:  roc_CA125 and roc_CEA

D = 0.53, boot.n = 2000, boot.stratified = 1, p-value = 0.6

alternative hypothesis: true difference in AUC is not equal to 0

sample estimates:

AUC of roc1 AUC of roc2

    0.6523      0.6369

> roc.test(roc_CA125, roc_pre, method = "bootstrap") #比較roc_CA125和roc_pre

   Bootstrap test for two correlated ROC curves

data:  roc_CA125 and roc_pre

D = -6.4, boot.n = 2000, boot.stratified = 1, p-value = 1e-10

alternative hypothesis: true difference in AUC is not equal to 0

sample estimates:

AUC of roc1 AUC of roc2

    0.6523      0.7881

▷ROC曲線比較

結束語:研究始於臨床問題,最終回到臨床實踐,雖然在繪製ROC曲線和分析AUC後發現多指標聯合診斷的效能更好,但是很有必要進行AUC比較,比如一個單指標AUC為0.7503,多指標聯合診斷的AUC為0.7652,儘管後者AUC更大,但是二者AUC比較可能無統計學差異,是否採用多指標聯合診斷應該慎下結論。

作為臨床醫師,治病救人是天職,但也要考慮患者經濟負擔,多指標聯合診斷必然增加患者經濟壓力,因此,多指標聯合診斷應儘可能在臨床需求與患者經濟負擔之間尋求平衡點。

參考文獻

[1] 秦正積, 沈毅, 崔曉莉, et al. logistic回歸在疾病多指標聯合診斷中的應用[J]. 中國衛生統計, 2014, 31(001):116-117.[2] 仲崇明. Logistic回歸在多指標聯合診斷肺癌中的應用[J]. 中國衛生統計, 2016,33(6):1045-1046.[3] 陳佳, 向玲亞, 邵華僑,等. 運用Logistic回歸和ROC曲線綜合評價腫瘤標誌物對肺癌的診斷價值[J]. 檢驗醫學與臨床, 2017, 014(005):604-606.[4] 王睿, 李靖, 方夢捷,等. 基於能譜CT的影像組學術前預測進展期胃癌淋巴結轉移的價值[J]. 中華醫學雜誌, 2020, 100(21):1617-1622.

微信ID:YXSJFX2018

相關焦點

  • 聯合診斷ROC分析及曲線下面積的比較
    01基礎知識ROC曲線分析是評價指標診斷能力的重要方法。疾病的診斷通常比較複雜,只依靠單一指標往往效果不佳,很多時候需要多個指標聯合才能做出診斷。評價不同指標聯合診斷的能力,可以通過比較各自的ROC曲線下面積實現。
  • 從零開始學Python【27】--Logistic回歸(實戰部分)
    LASSO回歸(實戰部分)從零開始學Python【24】--嶺回歸及LASSO回歸(理論部分)從零開始學Python【23】--線性回歸診斷(第二部分)從零開始學Python【22】--線性回歸診斷(第一部分)從零開始學Python【21】--線性回歸(實戰部分)從零開始學Python【20
  • Logistic回歸—初步了解10個問題
    logistic回歸模型用於預測和判別文獻如下:   Logistic回歸模型預測文獻(可左右滑動查看)   4   Logistic回歸應用條件   logistic回歸模型應用條件如下所示
  • R語言統計系列|一文理清Logistic回歸的R實現
    :校正決定係數Logistic回歸中的檢驗統計量:似然比檢驗多重線性回歸中的檢驗統計量:F統計量實際應用中:① 首先先將需要研究的影響因素(自變量X)一一進行單變量logistic回歸;② 設α=0.2以便初篩自變量
  • 從零開始學Python數據分析【27】--Logistic回歸(實戰部分)
    【13】-- matplotlib(直方圖)從零開始學Python數據分析【14】-- matplotlib(折線圖)從零開始學Python數據分析【15】-- matplotlib(散點圖)從零開始學Python數據分析【16】-- matplotlib(雷達圖)從零開始學Python數據分析【17】-- matplotlib(面積圖
  • Logistic回歸—多重共線性
    多重共線性作為常見問題,存在於線性或者廣義線性模型估計中,包括logistic回歸和Cox回歸。當預測變量間存在高度相關時會出現多重共線性,導致回歸係數估計值不穩定和不可靠。(P<0.05)納入多因素logistic回歸分析。
  • 統計·logistic回歸
    Logistic回歸一般用於用於分類問題,比如判斷事件成功/失敗的概率。使用logistic回歸的前提假設:因變量是二分類變量。順序 Logit模型要求因變量是序數。觀測值彼此獨立。換句話說,觀察結果不應來自重複的測量或匹配的數據。
  • 機器學習中的AUC-ROC曲線
    AUC-ROC曲線正好解決了這個問題!AUC-ROC曲線是什麼?ROC曲線是二值分類問題的一個評價指標。它是一個概率曲線,在不同的閾值下繪製TPR與FPR的關係圖,從本質上把「信號」與「噪聲」分開。我們選擇sklearn讓我們使用sklearn make_classification 方法創建任意數據:我將在此數據集上測試兩個分類器的性能:Sklearn有一個非常有效的方法roc_curve(),它可以在幾秒鐘內計算分類器的roc!
  • Logistic 回歸-原理及應用
    這次來介紹一下 Logistic 回歸,中文音譯為邏輯回歸,它是一個非線性模型,是由線性回歸改進而來(所以邏輯回歸的名字中帶有「回歸」二字)。1,Logistic 回歸模型Logistic 回歸模型將一個事件出現的概率適應到一條S 型曲線上,這條曲線稱為 Logistic 曲線。
  • logistic(邏輯回歸)
    應用範圍:①     適用於流行病學資料的危險因素分析②     實驗室中藥物的劑量-反應關係③     臨床試驗評價④     疾病的預後因素分析2. 3.Logistic回歸的應用條件是:①     獨立性。各觀測對象間是相互獨立的;②     LogitP與自變量是線性關係;③     樣本量。
  • 醫學統計與R語言:隨機森林與Logistic預測(randomForest vs Logistic regression)
    >      Balanced Accuracy : 0.8270                 install.packages("pROC")library(pROC)testdata$prob <-  predict(model,newdata = testdata,type="response")g <- roc
  • Logistic回歸分析之二元Logistic回歸
    在研究X對於Y的影響時,如果Y為定量數據,那麼使用多元線性回歸分析(SPSSAU通用方法裡面的線性回歸);如果Y為定類數據,那麼使用Logistic回歸分析。結合實際情況,可以將Logistic回歸分析分為3類,分別是二元Logistic回歸分析、多元有序Logistic回歸分析和多元無序Logistic回歸分析,如下圖。
  • 基於R語言PredictABEL包對Logistic回歸模型外部驗證
    在單個數據集中表現良好的模型在其他數據集中的表現不一定令人滿意,因此還需要在全新的數據集中對模型進行外部驗證,這個數據集稱為validation set。2.5.764301 4.235699## (0.454,0.494] 6 4 5.243437 4.756563## (0.494,0.564] 7 3 4.739571 5.260429## (0.564,0.624] 4 6 4.077834 5.922166## (0.624,0.669] 2 8 3.532070 6.467930## (0.669,0.744]
  • R與生物專題 | 第五十講 R-ROC曲線
    同時在真陽性率 TPR(敏感度) = TP / ( TP + FN ) 算式中的 FN = 0,所以 TPR=100%。→ 當閾值設定為最低時,必得出ROC座標系右上角的點 (1, 1)。: 0.0000 no :496 1st Qu.:24.00 male :140 1st Qu.: 0.0000 yes: 36 Median :28.00 Median : 0.0000 Mean :34.13 Mean : 0.9211 3rd Qu.:41.25
  • Logistic回歸的起源(上)
    網上有一個關於人工智慧(Artificial intelligence, AI)、機器學習(Machine Learning, ML)和Logistic回歸的段子,足以說明Logistic回歸之普遍:說到融資,它是人工智慧;說到招聘,它是機器學習;說到應用,它是Logistic回歸
  • 畫ROC曲線的R包總結
    輸入的術語有點折衷,但是一旦您理解了ROC.curve()函數,就可以輕鬆地繪製出一條乾淨的ROC曲線。正如vignette所指示,PRROC的創建實際上是為了做precision-recall曲線。1library(plotROC)2rocplot <- ggplot(df, aes(m = predictions, d = labels))+ geom_roc(n.cuts=20,labels=FALSE)3rocplot + style_roc(theme = theme_grey) + geom_rocci(fill="pink") 4
  • Logistic 回歸101
    我們今天將聊一聊其中最簡單,也是在實際中應用地最廣的二分類算法:Logistic 回歸。    作為開通原創保護後給大家的第一波福利,最後送上用 Matlab 實現的代碼以及其在一個小例子上的表現。走進分類的世界    分類是機器學習最重要的任務之一,也是機器學習應用地最成功的領域(之一)。
  • 基於R、Python和SPSS繪製ROC曲線並計算AUC
    通過取不同的閾值,我們便可以得到多個坐標點並且繪製出曲線,這一曲線便稱為ROC曲線,如下圖所示:ROC曲線根據ROC曲線的繪製原理,如果曲線上各點越靠近左方和上方,則真陽性率越高,假陰性率越低,模型的分類效果也就越好。
  • 多項無序logistic回歸
    一、多項logistic回歸多項logit模型由於因變量有多類,因此最終的模型不止一個,m類因變量將會產生m-1個模型。多項logit 模型在分析時一般先選定一個參照類,m-1個模型分別表示各類與參照類相比的結果。
  • 影像組學 | 18.ROC曲線和AUC
    相較於傳統影像學而言,影像組學是一種多學科交叉、多種影像技術相互結合的技術。今天起開始推出影像組學系列筆記第十八期:ROC曲線和AUC理論基礎 關於ROC曲線和AUC下面積的知識,如果看過往期推送,相信大家都有所了解。