Nomogram(諾莫圖) | Logistic、Cox生存分析結果可視化


本文首發於“生信補給站”公眾號,https://mp.weixin.qq.com/s/BWpy3F-nEKXCdVXmY3GYZg

當然還有更多R語言,生物信息學相關知識。。。🤭

 

Nomogram,也常稱為諾莫圖或者列線圖,在醫學領域的期刊出現頻率越來愈多,常用於評估腫瘤學和醫學的預后情況,可將Logistic回歸或Cox回歸的結果進行可視化呈現。

 

數據准備

使用TCGA-LIHC隊列的臨床數據,簡單處理后進行示例分析:

## 載入R包
library(rms)
library(survival)

## 讀取LIHC數據
LIHC <- read.csv("TCGA-LIHC-nomogram.csv",header=TRUE)
head(LIHC)

繪制nomogram圖

 

1)打包數據


## 關鍵步驟:按照nomogram要求“打包”數據,可以輸入??datadist查看詳細說明
dd=datadist(LIHC)
options(datadist="dd")

 

2)構建logist模型,繪制諾莫圖

## 構建logist模型,繪制諾莫圖
f <- lrm(status ~ age + gender + grade , data =  LIHC)

nom <- nomogram(f, fun=plogis, lp=F, funlabel="Risk")

plot(nom)

img

3) 構建COX模型,繪制諾莫圖

A :COX回歸中位生存時間的Nomogram

## 構建COX比例風險模型
f2 <- psm(Surv(time,status) ~ age+gender+grade,data =  LIHC, dist='lognormal')

med <- Quantile(f2) # 計算中位生存時間
surv <- Survival(f2) # 構建生存概率函數

## 繪制COX回歸中位生存時間的Nomogram圖
nom <- nomogram(f2, fun=function(x) med(lp=x),funlabel="Median Survival Time")

plot(nom)

簡單介紹下使用,比如某患者年齡為50歲,那就在列線圖年齡為50歲的地方向上畫一條垂直線,即可得到其對應的得分(Points);男性,則在男性的地方畫一條垂直線,以此類推,找出每個變量狀態下對應的得分,相加得到總得分。

最后將患者的總得分(Total Points)再向下畫一條垂直線,就可以知道該患者對應的中位生存時間。

下面例子同,可以知道未來1年、5年的生存率,當然也可以是其他時間節點。

 

B:繪制COX回歸生存概率的Nomogram圖

## LIHC數據的time是以”天“為單位,此處繪制1年,5年的生存概率
nom <- nomogram(f2, fun=list(function(x) surv(365, x),
                            function(x) surv(1825, x),
                            function(x) med(lp=x)),
                            funlabel=c("1-year Survival Probability", "5-year Survival Probability","Median Survival Time"))
plot(nom, xfrac=.2)

img

當然也可以計算其他時間節點的生存率,同樣加到list中即可。

 

使用相對風險的指標(OR、HR)等統計之余,可以結合列線圖展示,能夠起到預測生存概率的作用,也會使預測模型的結果更直觀、易懂。

 

【覺得不錯,右下角點擊點個“在看”,轉發就是最好的支持和贊賞,謝謝!】

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM