列线图,又称诺莫图(Nomogram),它是建立在回归分析的基础上,使用多个临床指标或者生物属性,然后采用带有分数高低的线段,从而达到设置的目的:基于多个变量的值预测一定的临床结局或者某类事件发生的概率。列线图(Nomogram)可以用于多指标联合诊断或预测疾病发病或进展。
近些年来在高质量SCI临床论文中用的越来越多。列线图将回归模型转换成了可以直观的视图,让结果更容易判断,具有可读性,例如:
对于复杂设计调查(Survey-Weighted)的数据,我们不能使用RMS包直接绘制预测模型列线图,这样会造成数据偏差,今天我们来介绍SvyNom绘制复杂设计调查(Survey-Weighted)的数据cox回归的列线图,先导入数据和R包
library("rms")
library("survey")
library("SvyNom")
set.seed(1234)
noNA<-read.csv("E:/r/test/noNA.csv",sep=',',header=TRUE)
上图只显示了一部分,这是一个转移性胃癌患者(Power、Capanu、Kelsen 和 Shah 2011)的数据(公众号回复:胃癌数据,可以获得数据),数据很多我们选取一部分建模,age_dx:年龄,group:分组变量,分为存活率小于2年的和大于两年的,inv_weight:概率权重,ssize:每个分组患者的人数,survival生存时间,surv_cens生存结局
要建立调查加权,我们先要生成一个调查表,我们这里是根据患者是否能活超过24个月进行分层,
dstr2 <- svydesign(id = ~1, strata = ~group, prob = ~inv_weight,
fpc = ~ssize, data = noNA)
prob 指定的抽样概率对于长期幸存者组(≥ 24月)中的患者等于 1,对于存活不到 2 年的患者均等于 253/853=0.296。fpc 选项指定已在每个层中抽样的总人口,在 ≥ 24 组中等于 132,对于 <24 组中的患者等于 853。
建立cox方程拟合包含患者年龄、ECOG 状态、白蛋白和血红蛋白水平、肿瘤分化、是否存在多个转移部位等变量
svy.cox.fit <- svycoxph(Surv(survival, surv_cens) ~ ECOG + liver_only +
Alb + Hb + Age + Differentiation + Gt_1_m1site + lymph_only, x = TRUE,
design = dstr2)
svy.cox.fit
对数据格式设定
dd <- datadist(noNA)
options(datadist = "dd")
ss3 <- c(0.05, 0.2, 0.4, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99)
构建列线图数据,design =填入我们的调查表,model=填入我们建立的模型,pred.at =这里我们预测两年生存率,所以填入24,fun.lab =这里生存列线图标签
mynom <- svycox.nomogram(.design = dstr2, .model =
Surv(survival, surv_cens) ~ ECOG + liver_only + Alb + Hb + Age +
Differentiation + Gt_1_m1site + lymph_only, .data = noNA, pred.at = 24,
fun.lab = "Prob of 2 Yr OS")
绘图
plot(mynom$nomog)
通过重抽样建立引导数据对列线图进行验证
bootit <- 200
cases <- which(noNA$group == "long")
controls <- which(noNA$group == "<24")
boot.index <- matrix(NA, nrow(noNA), bootit)
for (i in 1:bootit)
boot.index[, i] <- c(sample(cases, replace = TRUE), sample(controls, replace = TRUE))
估值差异很小,说模型可信度不错。最后绘制校准曲线
svycox.calibrate(mynom)
OK,本文结束,觉得有用的话请分享给需要的人哟。