2018-10-18
閱讀量:
2850
R實(shí)現(xiàn)Nomogram圖的筆記整理
Nomogram,中文常稱(chēng)為諾莫圖或者列線圖,簡(jiǎn)單的說(shuō)是將Logistic回歸或Cox回歸的結(jié)果進(jìn)行可視化呈現(xiàn)。它根據(jù)所有自變量回歸系數(shù)的大小來(lái)制定評(píng)分標(biāo)準(zhǔn),給每個(gè)自變量的每種取值水平一個(gè)評(píng)分,對(duì)每個(gè)患者,就可計(jì)算得到一個(gè)總分,再通過(guò)得分與結(jié)局發(fā)生概率之間的轉(zhuǎn)換函數(shù)來(lái)計(jì)算每個(gè)患者的結(jié)局時(shí)間發(fā)生的概率。
## 繪制nomogram圖
## 第一步 讀取rms程序包及輔助程序包
library(Hmisc); library(grid); library(lattice);library(Formula); library(ggplot2)
library(rms)
## 第二步 讀取數(shù)據(jù),以survival程序包的lung數(shù)據(jù)來(lái)進(jìn)行演示
## 列舉survival程序包中的數(shù)據(jù)集
library(survival)
data(package = "survival")
## 讀取lung數(shù)據(jù)集
data(lung)
## 顯示lung數(shù)據(jù)集的前6行結(jié)果
head(lung)
## 顯示lung數(shù)據(jù)集的變量說(shuō)明
help(lung)
## 添加變量標(biāo)簽以便后續(xù)說(shuō)明
lung$sex <-
??factor(lung$sex,
? ?? ?? ?levels = c(1,2),
? ?? ?? ?labels = c("male", "female"))
## 第三步 按照nomogram要求“打包”數(shù)據(jù),繪制nomogram的關(guān)鍵步驟,??datadist查看詳細(xì)說(shuō)明
dd=datadist(lung)
options(datadist="dd")
## 第四步 構(gòu)建模型
## 構(gòu)建logisitc回歸模型
f1 <- lrm(status~ age + sex, data = lung)
## 繪制logisitc回歸的風(fēng)險(xiǎn)預(yù)測(cè)值的nomogram圖
nom <- nomogram(f1, fun= function(x)1/(1+exp(-x)), # or fun=plogis
? ?? ?? ?? ?? ? lp=F, funlabel="Risk")
plot(nom)
## 構(gòu)建COX比例風(fēng)險(xiǎn)模型
f2 <- psm(Surv(time,status) ~ age+sex, data =??lung, dist='lognormal')
med <- Quantile(f2) # 計(jì)算中位生存時(shí)間
surv <- Survival(f2) # 構(gòu)建生存概率函數(shù)
## 繪制COX回歸中位生存時(shí)間的Nomogram圖
nom <- nomogram(f2, fun=function(x) med(lp=x),
? ?? ?? ?funlabel="Median Survival Time")
plot(nom)
## 繪制COX回歸生存概率的Nomogram圖
## 注意lung數(shù)據(jù)的time是以”天“為單位
nom <- nomogram(f2, fun=list(function(x) surv(365, x),
? ?? ?? ?? ?? ?? ?? ?? ?? ???function(x) surv(730, x)),
? ?? ?? ?? ?? ? funlabel=c("1-year Survival Probability",
? ?? ?? ?? ?? ?? ?? ?? ?? ?"2-year Survival Probability"))
plot(nom, xfrac=.6)
## 評(píng)價(jià)COX回歸的預(yù)測(cè)效果
## 第一步 計(jì)算c-index
rcorrcens(Surv(time,status) ~ predict(f2), data =??lung)
## 第二步 繪制校正曲線
## 參數(shù)說(shuō)明:
## 1、繪制校正曲線前需要在模型函數(shù)中添加參數(shù)x=T, y=T,詳細(xì)參考幫助
## 2、u需要與之前模型中定義好的time.inc一致,即365或730;
## 3、m要根據(jù)樣本量來(lái)確定,由于標(biāo)準(zhǔn)曲線一般將所有樣本分為3組(在圖中顯示3個(gè)點(diǎn))
## 而m代表每組的樣本量數(shù),因此m*3應(yīng)該等于或近似等于樣本量;
## 4、b代表最大再抽樣的樣本量
## 重新調(diào)整模型函數(shù)f2,也即添加x=T, y=T
f2 <- psm(Surv(time,status) ~ age+sex, data =??lung, x=T, y=T, dist='lognormal')
## 構(gòu)建校正曲線
cal1 <- calibrate(f2, cmethod='KM', method="boot", u=365, m=76, B=228)
## 繪制校正曲線,??rms::calibrate查看詳細(xì)參數(shù)說(shuō)明
par(mar=c(8,5,3,2),cex = 1.0)
plot(cal1,lwd=2,lty=1,
? ???errbar.col=c(rgb(0,118,192,maxColorValue=255)),
? ???xlim=c(0.25,0.6),ylim=c(0.15,0.70),
? ???xlab="Nomogram-Predicted Probability of 1-Year DFS",
? ???ylab="Actual 1-Year DFS (proportion)",
? ???col=c(rgb(192,98,83,maxColorValue=255)))
## rms::nomogram的完整示例詳見(jiàn)rms程序包的幫助文件
## rms程序包的幫助文件下載網(wǎng)址:https://cran.r-project.org/web/packages/rms/rms.pdf






評(píng)論(0)


暫無(wú)數(shù)據(jù)
CDA考試動(dòng)態(tài)
CDA報(bào)考指南
推薦帖子
0條評(píng)論
0條評(píng)論
0條評(píng)論