本文首發(fā)于“生信補給站”公眾號 關注小號,還有更多R語言,生物信息學相關知識。。。??
Nomogram,也常稱為諾莫圖或者列線圖,在醫(yī)學領域的期刊出現(xiàn)頻率越來愈多,常用于評估腫瘤學和醫(yī)學的預后情況,可將Logistic回歸或Cox回歸的結(jié)果進行可視化呈現(xiàn)。 數(shù)據(jù)準備 使用TCGA-LIHC隊列的臨床數(shù)據(jù),簡單處理后進行示例分析: ## 載入R包 library(rms) library(survival)
## 讀取LIHC數(shù)據(jù) LIHC <- read.csv("TCGA-LIHC-nomogram.csv",header=TRUE) head(LIHC) 繪制nomogram圖1)打包數(shù)據(jù) ## 關鍵步驟:按照nomogram要求“打包”數(shù)據(jù),可以輸入??datadist查看詳細說明 dd=datadist(LIHC) options(datadist="dd")
2)構(gòu)建logist模型,繪制諾莫圖## 構(gòu)建logist模型,繪制諾莫圖 f <- lrm(status ~ age + gender + grade , data = LIHC)
nom <- nomogram(f, fun=plogis, lp=F, funlabel="Risk")
plot(nom) 3) 構(gòu)建COX模型,繪制諾莫圖A :COX回歸中位生存時間的Nomogram ## 構(gòu)建COX比例風險模型 f2 <- psm(Surv(time,status) ~ age+gender+grade,data = LIHC, dist='lognormal')
med <- Quantile(f2) # 計算中位生存時間 surv <- Survival(f2) # 構(gòu)建生存概率函數(shù)
## 繪制COX回歸中位生存時間的Nomogram圖 nom <- nomogram(f2, fun=function(x) med(lp=x),funlabel="Median Survival Time")
plot(nom) 簡單介紹下使用,比如某患者年齡為50歲,那就在列線圖年齡為50歲的地方向上畫一條垂直線,即可得到其對應的得分(Points);男性,則在男性的地方畫一條垂直線,以此類推,找出每個變量狀態(tài)下對應的得分,相加得到總得分。 最后將患者的總得分(Total Points)再向下畫一條垂直線,就可以知道該患者對應的中位生存時間。 下面例子同,可以知道未來1年、5年的生存率,當然也可以是其他時間節(jié)點。 B:繪制COX回歸生存概率的Nomogram圖 ## LIHC數(shù)據(jù)的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) 當然也可以計算其他時間節(jié)點的生存率,同樣加到list中即可。 使用相對風險的指標(OR、HR)等統(tǒng)計之余,可以結(jié)合列線圖展示,能夠起到預測生存概率的作用,也會使預測模型的結(jié)果更直觀、易懂。
|