R語言ICU患者死亡率預測實戰

【圖書推薦】《R語言醫學數據分析實踐》-CSDN博客

《R語言醫學數據分析實踐 李丹 宋立桓 蔡偉祺 清華大學出版社9787302673484》【摘要 書評 試讀】- 京東圖書 (jd.com)

預測ICU患者死亡率對比較藥物的療效、比較護理的有效性、比較手術的有效性有重要意義,利用機器學習來構建預測模型,輔助臨床預測有著重要的意義。

6.10.1? 數據集背景

本數據集來自醫學公開數據庫MIMIC III ICU中的數據,有4000患者。納入的指標除了RecordID住院號,年齡age,性別Gender,身高baseWeight ,體重ICU類別baseICUType,SAPS評分,SOFA評分,住院時間 Length_of_stay , Surivial生存天數,院內死亡In.hospital_death。

其他指標處理,根據臨床的相關性選擇納入的指標,這些納入的指標在機器學習中的術語叫特征feature。比如根據臨床經驗,格拉斯哥昏迷評分“GCS”的最低值min及中位數mean可能預測死亡。其它指標也按照“GCS”同樣處理,最后納入的指標有94項,如圖6-19所示。當然某項臨床指標是否納入,如何納入,沒有明確答案,靠臨床經驗和業務知識。

圖6-19

6.10.2? 數據預處理

原始數據中的某些指標在某些患者中沒有觀測值,發現很多缺失值,數據表中以“NA”表示。讀入數據,查看每一列數據概況,R代碼如下所示:

#數據文件icumortality.csv的路徑根據實際情況修改sur<-read.csv("c:/icu_demo/icumortality.csv", header = T, sep = ",")summary(sur)

查看每一列數據概況,summary函數會輸出每一列數據平均值、最大值、最小值以及缺失情況,如圖6-20所示,由于結果輸出太長,這里截圖并不完整。

圖6-20

比如患者的性別Gender 值是0或1,有些患者值為-1,明顯是推斷錯誤,可以改為1。有些患者的height身高值小于100,weight體重小于10,也是推斷不可能,可以賦值NA。計算患者的體重指數BMI,計算完再刪除身高和體重兩列。患者minTemp,meanTemp體溫小于33°,PH值minPH 小于6或maxPH大于8,也是不可能,可以都賦值“NA”。

如圖6-21所示,medianTroponinI缺失值達3795個(90%以上),可以刪除,暫時不用的RecordID,SAPS.I、SOFA、length_of_stay、survival可以刪除。

圖6-21

MechVent指標是機械通氣,0表示無,1表示有,如圖6-22所示,發現部分患者MechVent值為“NA”,推斷沒有機械通氣,可以賦值為0。

圖6-22

血壓有有創血壓和無創血壓兩種,可以先找出有創血壓DiasABP,SysABP 、MAP的缺失值,用此患者的的無創血壓(帶NI的變量)替換,然后刪除無創血壓的數據。

以上是利用經驗判斷缺失值是什么,此外可以使用mice程序包進行插補。mice即是基于多重填補法構造的,基本思想是對于一個具有缺失值的變量,用其他變量的數據對這個變量進行擬合,再用擬合的預測值對這個變量的缺失值進行填補。

數據清洗R代碼如下:

#數據清洗
sur$baseGender[sur$baseGender<0] <- 1
sur$baseHeight[which(sur$baseHeight < 100)] <- NA
sur$baseHeight[which(sur$baseHeight > 210)] <- NA
sur$baseWeight[which(sur$baseWeight < 10)] <- NA
sur$BMI <- (sur$baseWeight/sur$baseHeight)/sur$baseHeight * 10000
sur[,"baseWeight"] <- NULL
sur[,"baseHeight"] <- NULL
sur[,"medianTroponinI"] <- NULLsub=which(is.na(sur$meanDiasABP))
sur$meanDiasABP[sub] <- sur$meanNIDiasABP[sub]
sur$minDiasABP[sub] <- sur$minNIDiasABP[sub]
sur$maxDiasABP[sub] <- sur$maxNIDiasABP[sub]
sur[,"meanNIDiasABP"] <- NULL
sur[,"minNIDiasABP"] <- NULL
sur[,"maxNIDiasABP"] <- NULL
sub=which(is.na(sur$meanMAP))
sur$meanMAP[sub] <- sur$meanNIMAP[sub]
sur$minMAP[sub] <- sur$minNIMAP[sub]
sur$maxMAP[sub] <- sur$maxNIMAP[sub]
sur[,"meanNIMAP"] <- NULL
sur[,"minNIMAP"] <- NULL
sur[,"maxNIMAP"] <- NULL
sub=which(is.na(sur$meanSysABP))
sur$meanSysABP[sub] <- sur$meanNISysABP[sub]
sur$minSysABP[sub] <- sur$minNISysABP[sub]
sur$maxSysABP[sub] <- sur$maxNISysABP[sub]
sur[,"meanNISysABP"] <- NULL
sur[,"minNISysABP"] <- NULL
sur[,"maxNISysABP"] <- NULLsur$minTemp[sur$minTemp < 33] <- NA
sur$meanTemp[sur$meanTemp < 33] <- NAsur$minpH[sur$minpH>8] <- NA
sur$minpH[sur$minpH<6] <- NA
sur$meanpH[sur$meanpH>8] <- NA
sur$maxpH[sur$maxpH>8] <- NAsur$meanMechVent[is.na(sur$meanMechVent)] <- 0sur[,"RecordID"] <- NULL
sur[,"SAPS.I"] <- NULL
sur[,"SOFA"] <- NULL
sur[,"Length_of_stay"] <- NULL
sur[,"Survival"] <- NULL

對于缺失值插補,可以利用mice程序包進行插補:

library(mice)
sur_clean <- mice(sur, m=5, seed=123456)
completedData <- complete(sur_clean,1)

6.10.3? 模型建立

首先我們先用大家熟悉的Logistic回歸分析模型,載入glmnet包,這個R包包括廣義線性回歸方程所有功能,R代碼如圖6-23所示:

圖6-23

R代碼運行,結果如圖6-24所示。

圖6-24

因為我們最后要比較各個機器學習模型的表現,需要新建一個表格用來存儲模型的AUC,新建一個表格final,新表格只有一列label,是真實的死亡情況,新表格增加一列lasso,存儲lasso模型的預測值,R代碼如下所示:

label<-completedData$In.hospital_death
final <- as.data.frame(label)
final$Lasso <- completedData$test_pred

我們接著看支持向量機SVM ,給定一組訓練樣本集,樣本數據集是二維的,分散在平面上,需要找到一條直線將數據集分割開。可以分開的直線有很多,我們要找到其中泛化能力最好,魯棒性最強的直線。這是在平面上的點,如果是在三維空間中,則需要找到一個平面;如果是超過三維以上的維數,則需要找到一個超平面。

SVM的三個重要參數是kernel參數、C參數cost和gamma參數來調節模型的表現:

(1)C參數:C參數(Cost)它是控制著模型的懲罰力度,即決定了模型在訓練時對誤差和復雜度之間的折衷關系。通常情況下,C值越大,模型的復雜度越高,預測準確度也相應提高。但是,如果C值過大,可能會導致模型出現過擬合的情況,因此需要在實際應用中進行試探和調整。

(2)gamma參數:gamma參數決定了樣本點對于模型的影響程度,即越接近樣本點的數據在模型中的權重也越大。通常情況下,gamma值越小,對于遠離樣本點的數據的影響也就越小,而對于靠近樣本點的數據的影響則更加強烈。但是,如果gamma值過小,可能會導致模型出現欠擬合的情況,因此需要進行合理的選擇。

(3)kernel參數:Kernel指的是支持向量機的類型,它可能是線性還是非線性,首先選擇線性的kernel作為基準。核函數是支持向量機回歸算法的核心,不同的核函數適用于不同的數據集。常見的核函數有線性核函數、多項式核函數和徑向基核函數等。在選擇核函數時需要考慮數據集的特點和所需的預測準確度。

C參數即Cost是違反約束時的成本函數,gamma是除線性SVM外其余所有SVM都使用的一個參數,它的選擇與直線或平面的非線性程度相關,gamma選擇越大,其非線性程度越大。

使用支持向量機模型R代碼如圖6-25所示。

代碼運行,結果如圖6-26所示。

圖6-26

在final數據表中存儲SVM模型的AUC

final$SVM <- completedData$test_pred

隨機森林Radom Forest算法介紹:簡單的說,隨機森林就是用隨機的方式建立一個森林,森林里面有很多的決策樹,并且每棵樹之間是沒有關聯的。得到一個森林后,當有一個新的樣本輸入,森林中的每一棵決策樹會分別進行一下判斷,進行類別歸類(針對分類算法),最后比較一下被判定哪一類最多,就預測該樣本為哪一類。在隨機森林方法中,創建了大量的決策樹。每個觀察結果都被送入每個決策樹。 每個觀察結果最常用作最終輸出。對所有決策樹進行新的觀察,并對每個分類模型進行多數投票。

隨機森林Radom Forest的模型R代碼,如圖6-27所示:

運行結果,如圖6-27所示

圖6-27

同樣,在final數據表中存儲randomforest模型的AUC:

final$randomforest <- completedData$test_pred

6.10.4? 模型評估

利用基于plotROC包和ggplot2軟件包可以將模型得到的AUC都展示在同一張ROC曲線圖中,這樣比較直觀比較。如果提示出現“Error in library(plotROC) : 不存在叫‘plotROC’這個名字的程輯包”,可以通過 “install.packages("plotROC", dependencies = TRUE)”命令安裝plotROC包。

R代碼如下所示:

library(plotROC)
library(ggplot2)
longtest <- melt_roc(final, "label", c("Lasso", "randomforest"))
cbPalette <- c("#FF0000", "#FFCC00")
cbPalette <- c("#FF0000", "#FFCC00")
ggplot(longtest, aes(d = D, m = M, color = name)) +scale_colour_manual(values=cbPalette) + geom_roc(size = 1.75, n.cuts = 0, labels = FALSE) + style_roc() + theme(axis.text.x= element_text(size = 22), axis.title.x= element_text(size = 22), axis.text.y= element_text(size = 22), axis.title.y= element_text(size = 22), legend.text = element_text(size = 22))

運行結果,如圖6-28所示。可以看出隨機森林的AUC最大。

圖6-28

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/diannao/86541.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86541.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86541.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode240-搜索二維矩陣

leetcode 240 思路 1. 矩陣特性 首先&#xff0c;利用矩陣的特性是解題的關鍵&#xff1a; 每行的元素遞增每列的元素遞增 這意味著&#xff0c;如果我們在矩陣中從右上角或左下角開始搜索&#xff0c;可以有效縮小搜索范圍 2. 從右上角開始搜索 將搜索的起點定位在矩陣…

Linux相關概念和易錯知識點(42)(TCP的連接管理、可靠性、面臨復雜網絡的處理)

目錄 1.TCP的連接管理機制&#xff08;1&#xff09;三次握手①握手過程②對握手過程的理解 &#xff08;2&#xff09;四次揮手&#xff08;3&#xff09;握手和揮手的觸發&#xff08;4&#xff09;狀態切換①揮手過程中狀態的切換②握手過程中狀態的切換 2.TCP的可靠性&…

【web應用】若依框架:若依框架中的頁面跳轉簡介

文章目錄 ?前言1. 后端控制器跳轉2. 前端路由跳轉3. 菜單配置跳轉4. 權限控制跳轉5. 常見跳轉路徑 ?一、主目錄頁面跳轉?二、菜單目錄跳轉?總結 標題詳情作者JosieBook頭銜CSDN博客專家資格、阿里云社區專家博主、軟件設計工程師博客內容開源、框架、軟件工程、全棧&#x…

MS9292+MS9332 HD/DVI轉VGA轉換器+HD環出帶音頻

MS9292MS9332是一款HD/DVI轉VGA轉換器HD環出帶音頻的視頻轉換方案。支持HD/DVI輸入&#xff0c;VGA輸出和HD環出&#xff0c;HD/DVI輸入最高支持1920120060Hz&#xff0c;VGA輸出最高支持1920120060Hz&#xff0c;HD環出最高支持4K30Hz。該方案已實現量產&#xff0c;并提供完善…

C++初階-list的模擬實現(難度較高)

1.list&#xff08;容器&#xff0c;不是類&#xff09;模擬實現基本結構 這個實現是和源碼的實現不同的&#xff0c;不要進行強制類型轉換了&#xff0c;很麻煩。我們把定義放在.h文件中&#xff0c;在.cpp中放測試代碼。 注&#xff1a;這個基本結構之后會改變&#xff0c;…

【ROS】Nav2源碼之nav2_behavior_tree-行為樹節點列表

1、行為樹節點分類 在 Nav2(Navigation2)的行為樹框架中,行為樹節點插件按照功能分為 Action(動作節點)、Condition(條件節點)、Control(控制節點) 和 Decorator(裝飾節點) 四類。 1.1 動作節點 Action 執行具體的機器人操作或任務,直接與硬件、傳感器或外部系統…

【iOS】cell的復用以及自定義cell

【iOS】cell的復用以及自定義cell 文章目錄 【iOS】cell的復用以及自定義cell前言cell的復用手動&#xff08;非注冊&#xff09;自動&#xff08;注冊&#xff09; 自定義cell 前言 cell的復用及自定義cell是UITableView或UICollectionView的一個重要優化機制,當用戶滾動視圖…

深度學習之模型壓縮三駕馬車:基于ResNet18的模型剪枝實戰(2)

前言 《深度學習之模型壓縮三駕馬車&#xff1a;基于ResNet18的模型剪枝實戰&#xff08;1&#xff09;》里面我只是提到了對conv1層進行剪枝&#xff0c;只是為了驗證這個剪枝的整個過程&#xff0c;但是后面也有提到&#xff1a;僅裁剪 conv1層的影響極大&#xff0c;原因如…

傳輸層協議:UDP

目錄 1、概念 2、報文結構 3、核心特性 3.1 無連接 3.2 不可靠交付 3.3 面向數據報 3.4 輕量級&高效 3.5 支持廣播和組播 4、典型應用場景 5、優缺點分析 6、與TCP的區別 1、概念 UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09…

JVM虛擬機:內存結構、垃圾回收、性能優化

1、JVM虛擬機的簡介 Java 虛擬機(Java Virtual Machine 簡稱:JVM)是運行所有 Java 程序的抽象計算機,是 Java 語言的運行環境,實現了 Java 程序的跨平臺特性。JVM 屏蔽了與具體操作系統平臺相關的信息,使得 Java 程序只需生成在 JVM 上運行的目標代碼(字節碼),就可以…

c++ 面試題(1)-----深度優先搜索(DFS)實現

操作系統&#xff1a;ubuntu22.04 IDE:Visual Studio Code 編程語言&#xff1a;C11 題目描述 地上有一個 m 行 n 列的方格&#xff0c;從坐標 [0,0] 起始。一個機器人可以從某一格移動到上下左右四個格子&#xff0c;但不能進入行坐標和列坐標的數位之和大于 k 的格子。 例…

【匯編逆向系列】七、函數調用包含多個參數之浮點型- XMM0-3寄存器

目錄 1. 匯編代碼 1.1 debug編譯 1.2 release編譯 2. 匯編分析 2.1 浮點參數傳遞規則 2.2 棧幀rsp的變化時序 2.3 參數的訪問邏輯 2.4 返回值XMM0寄存器 3. 匯編轉化 3.1 Debug編譯 3.2 Release 編譯 3.3 C語言轉化 1. 匯編代碼 上一節介紹了整型的函數傳參&#x…

華為云Flexus+DeepSeek征文 | 從零到一:用Flexus云服務打造低延遲聯網搜索Agent

作者簡介 我是摘星&#xff0c;一名專注于云計算和AI技術的開發者。本次通過華為云MaaS平臺體驗DeepSeek系列模型&#xff0c;將實際使用經驗分享給大家&#xff0c;希望能幫助開發者快速掌握華為云AI服務的核心能力。 目錄 作者簡介 前言 1. 項目背景與技術選型 1.1 項目…

【多智能體】受木偶戲啟發實現多智能體協作編排

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一個正在變禿、變強的文藝傾年。 &#x1f514;本專欄《人工智能》旨在記錄最新的科研前沿&#xff0c;包括大模型、具身智能、智能體等相關領域&#xff0c;期待與你一同探索、學習、進步&#xff0c;一起卷起來叭&#xff…

Java八股文——Spring篇

文章目錄 Java八股文專欄其它文章Java八股文——Spring篇SpringSpring的IoC和AOPSpring IoC實現機制Spring AOP實現機制 動態代理JDK ProxyCGLIBByteBuddy Spring框架中的單例Bean是線程安全的嗎&#xff1f;什么是AOP&#xff0c;你們項目中有沒有使用到AOPSpring中的事務是如…

NineData數據庫DevOps功能全面支持百度智能云向量數據庫 VectorDB,助力企業 AI 應用高效落地

NineData 的數據庫 DevOps 解決方案已完成對百度智能云向量數據庫 VectorDB 的全鏈路適配&#xff0c;成為國內首批提供 VectorDB 原生操作能力的服務商。此次合作聚焦 AI 開發核心場景&#xff0c;通過標準化 SQL 工作臺與細粒度權限管控兩大能力&#xff0c;助力企業安全高效…

開源技術驅動下的上市公司財務主數據管理實踐

開源技術驅動下的上市公司財務主數據管理實踐 —— 以人造板制造業為例 引言&#xff1a;財務主數據的戰略價值與行業挑戰 在資本市場監管日益嚴格與企業數字化轉型的雙重驅動下&#xff0c;財務主數據已成為上市公司財務治理的核心基礎設施。對于人造板制造業而言&#xff0…

借助它,普轉也能獲得空轉信息?

在生命科學研究領域&#xff0c;轉錄組技術是探索基因表達奧秘的有力工具&#xff0c;在疾病機制探索、生物發育進程解析等諸多方面取得了顯著進展。然而&#xff0c;隨著研究的深入&#xff0c;研究人員發現普通轉錄組只能提供整體樣本中的基因表達水平信息&#xff0c;卻無法…

synchronized 學習

學習源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.應用場景 不超賣&#xff0c;也要考慮性能問題&#xff08;場景&#xff09; 2.常見面試問題&#xff1a; sync出…

Java事務回滾詳解

一、什么是事務回滾&#xff1f; 事務回滾指的是&#xff1a;當執行過程中發生異常時&#xff0c;之前對數據庫所做的更改全部撤銷&#xff0c;數據庫狀態恢復到事務開始前的狀態。這是數據庫“原子性”原則的體現。 二、Spring 中的 Transactional 默認行為 在 Spring 中&am…