【肿瘤预测模型系列】Nomogram绘制原理及RSAS实现
【肿瘤预测模型系列】Nomogram绘制原理及RSAS实现
准备⽤⼏次推送与⼤家⼀起系统的学习下Nomogrm的绘制原理及其在R软件和SAS软件中的实现。⾸先声明,⽂章只是⾃⼰⽂献上的整理及⾃⼰的⼀点点理解,错误之处还请⼤家指出!
在wikipedia ⾥对Nomogram的介绍是,Nomogram—词来源于希腊语,Nomos指“法律”⽽Gramma意思是“书写”。Nomogram的理论是由法国⼯程
师 Philbert Maurice d’Ocagne (1862-1938) 于1884年提出,最早⽤于⼯程学,它能够将复杂的⼯程⼒学等计算公式以图形的⽅式,快速、直观、精确的展现出来。换句话说,绘制Nomogram旨在以绘图的⽅法来阐述不同变量之间的关系。在医学领域,Nomogram优势在于可个性化的计算特定肿瘤患者⽣存率, 因此在临床实践中有很⼤的价值。
Nomogram 怎么⽤?
我们⽤个例⼦来说明Nomogram的⽤法,临床上⽤四个指标A,B,C,D来预测某疾病的发病率,其中A和B是连续性变量,C和D为⼆分类变量;A的取值范围在0-80之间,B的取值范围在0-10之间,C取值为Low和High,和D取值为Neg和Pos,在统计软件中建⽴回归模型,并绘制Nomogram,具体绘制出的图形如下:
雪中悍刀行青鸟结局是什么图1.Nomogram ⽰意图
假设有⼀个病⼈,他的四个因素的值分别是:A=40, B=5,C=Low和D=Pos,Nomogrm的⽤法是在A变量的刻度尺上到其值为40的刻度,然后垂直画条竖线,对应到最上⽅的Points刻度尺上,到Points对应的分值。我们看到图中A为40时,其Points是50,同理B=5时其Points是40,C=Low时其Points值是0,D=Pos时其Points值是19.将这四个因素的Points值加起来总共是109分;下⼀步在图下⽅的Total Points刻度尺上到109,向下⽅的Probability of Clin.Outcome做垂线,109对应的值是39,则此病⼈该种疾病得发病风险预测概率值是39%。
Nomogram 绘制原理
⼀般的回归模型都可以绘制其对应的Nomogram,本⽂以⼆分类的Logistic 回归为例。例:为探讨某些危险因素对某种疾病的发病影响,统计建模筛选出的结果显⽰年龄(10-90),性别(男⼥)和⾎压(低,正常,⾼)是三个影响因素,利⽤这三个因素与⼆分类的结局变量做Logistic回归,回归结果见下表:
1. 对每个⾃变量(因素)赋分
⼀般情况下,绘制Nomogram时要求每个因素的赋分范围在0-100之间。Nomogram绘制实际上是对上述回归结果的系数做转化后以图形的形式展现出来,即主要是对回归模型拟合系数的转化。
(1)系数转换
对于连续性变量年龄,其范围是10-90,结合表1中估计的各因素的系数,Nomogram的转换公式是:
(2)根据转换结果赋分
绘制Nomogram的最核⼼点是哪个变量对预测结果影响最⼤,然后以影响最⼤的指标为基础(即Nomogram的第⼀条刻度线),第⼆影响⼤的指标以第⼀影响⼤的指标为基础,按照⼀定的公式转换成⽐例,第三影响⼤的指标同样以第⼀⼤的指标为基础,做⼀定的转换。换句话说,Nomogram的每个指标的标尺,是以影响最⼤的指标为参考做出来的。
本例中,按照转换的系数值⼤⼩排序及赋分结果见表2。
上⾯步骤即完成了最基本的每个因素的赋分过程,即每个因素刻度尺的确定及刻度尺所对应的Points的值。
(⼀)讲Nomogram实现代码时,先讲下如何下载安装R软件?
传媒学校排名1.⽤百度搜索R软件,在⾸页到The R Project for Statistic Computing
英⽂⽹站,这是R的官⽹,点击进⼊
2.在⾸页第⼀部分Getting Started的第⼀段到download R ,蓝⾊字体突出显⽰的,很容易看到点击download R
3.这时你会看到很多国家名字和对应的地址,向下滚动页⾯,到China,⽹站提供了5个链接地址,任意点击⼀个进⼊
4.这是⽹站询问要下载的R对应的系统类型,⼤多数⼈都是WINDOWS点击Dowload R for Windows如果你是Linux或者是OS X的话,只要点对应的选项就可以了
5.⼜要做选择题了,选择Base
6.点击下⾯的地址类似⼩编图中红框标注的地⽅点击“开始下载“在这⾥⼩编使⽤的是浏览器⾃带的下载器,也可以使⽤其他下载⼯具,⼤⼩62.4MB,稍等⽚刻,就可以完成下载了。
7.下载下来以后,双击打开安装⽂件,你⾸先看到语⾔的选择,我们选择简体中⽂
8.下⾯就简单了,点击下⼀步
9.选择你需要安装的组件,通常四个都安装最好,以后不会因为少装了⽽去重新安装。如果你电脑是32位,你就不要装63位,如果电脑是64位,你随便装哪个,我装了两个,都会⽤到。
10.选择no(接受默认选择),点击下⼀步
11.在开始菜单中设置⼀个⽂件夹存饭R的快捷⽅式,点击下⼀步
12.到这⾥就基本上完成了安装
13.安装完成以后,界⾯是这样的:
R在运⾏代码前,先要安装⼀个包(package),这个在R主页上有,是⼤家恭喜出来的,诸如做Nomogram是rms包
在百度⾥搜索rms
点击进去
你会发现这⾥⾯有rms包的详细介绍,包括包的作者信息,⽤途,全名,包的指导⼿册(Reference manual),包⽂件等等都可以下载。
⼀般新按照的包,⼤家要看下它的指导⼿册,
包的PDF指导⼿册可以下载,点开之后⾥⾯有包的详细介绍,包括包中函数的⽤法,例⼦等等,⾮常
详细。
下⼀步,编写程序,⾸先打开R⾥⾯任务栏⾥⾯的File选择,New script
会出现编写代码的对话框:
我们要安装rms包,代码是:
install.packages("rms")
输⼊代码后,在代码⾏点击右键选择Run或者ctrl+R就会运⾏代码,
同样它会提醒选择镜像
选择中国就可以了,之后会⾃动安装。
(⼆)、Nomgram的R语⾔实现代码
上⾯简要介绍了R软件的下载、安装及包的在线安装。下⾯我们回归正题,R语⾔中如何实现Nomogram?
⾸先什么是Nomogram?在本前期的⼀篇⽂章中详细讲过(⽂章名”Nomogram 绘制原理及R&SAS实现(⼀)“),简单的说这是⼀种将Logistic回归或Cox回归图形化呈现的⽅法,可以让读者从图中很简便地根据预测变量的值得到因变量的⼤致概率数值。其对于Logistic回归或Cox回归的意义,⼤概相当于散点图对于简单线性回归的意义。
下⾯简单说下Nomogram怎么看。如下图。欲知年龄50岁的⼥性(sex=1)的患病风险,只需要将age=45岁向points轴投射,则points=50;同理sex=1时,points≈37。两者相加则Total points=87;将此数值在Total points轴上向Risk概率轴投射,则可知风险⼤概在0.4和0.5之间。(参见图中红线)对于单个变量,只需要令Total points = points进⾏投射即可。
接下来讲如何⽤R语⾔做出上⾯的这张图。简单起见,此帖仅讨论Logistic回归,Cox回归的⽅法类似,但相对更复杂。本帖所⽤数据引⽤⾃上海交⼤出版《医学统计学及SAS应⽤(修订版)》的例11.4
require(rms)    ##调⽤rms包
中国古典名著
# 建⽴数据集
y = c(0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1,
1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1,
1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0,
0, 0, 1, 0, 1, 0, 1, 0, 1)
火炬之光2互联网age = c(28, 42, 46, 45, 34, 44, 48, 45, 38, 45, 49, 45, 41, 46, 49, 46, 44, 48,
52, 48, 45, 50, 53, 57, 46, 52, 54, 57, 47, 52, 55, 59, 50, 54, 57, 60,
51, 55, 46, 63, 51, 59, 48, 35, 53, 59, 57, 37, 55, 32, 60, 43, 59, 37,
30, 47, 60, 38, 34, 48, 32, 38, 36, 49, 33, 42, 38, 58, 35, 43, 39, 59,
39, 43, 42, 60, 40, 44)
sex = c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1,
0, 1, 1, 1, 0, 1)
ECG = c(0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1,
0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 2, 2, 0, 0, 2, 2,
0, 1, 2, 2, 0, 1, 0, 2, 0, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2,
1, 1, 0, 2, 1, 1)
经济补偿金的计算
# 设定nomogram的参数
ddist <- datadist(age, sex, ECG)
options(datadist='ddist')
# logistic回归
f <- lrm(y ~ age + sex + ECG)
# nomogram
nom <- nomogram(f, fun=plogis,
fun.at=c(.001, .01, .05, seq(.1,.9, by=.1), .95, .99, .999),
lp=F, funlabel="Risk")
plot(nom)
有朋友问到Cox回归的代码怎么写。Cox回归模型会复杂⼀些,因为可能涉及到不同时间点(3年、5年)⽣存概率的计算。下⾯讨论最简单的概率轴为中位⽣存时间的情况。
require(rms)
require(Hmisc)    ##需要下载安装
require(survival)  ##R默认⾃带的⽤于做⽣存分析的包
# 建⽴数据集(使⽤rms包example的代码,未改动)
n <- 1000
set.seed(731)
age <- 50 + 12*rnorm(n)
label(age) <- "Age"
sex <- factor(sample(c('Male','Female'), n,
rep=TRUE, prob=c(.6, .4)))
cens <- 15*runif(n)
h <- .02*exp(.04*(age-50)+.8*(sex=='Female'))
dt <- -log(runif(n))/h
label(dt) <- 'Follow-up Time'
e <- ifelse(dt <= cens,1,0)
dt <- pmin(dt, cens)
units(dt) <- "Year"
# 设定nomogram的参数
ddist <- datadist(age, sex)羽绒服品牌有哪些
options(datadist='ddist')
# Cox回归
S <- Surv(dt,e)
f <- cph(S ~ rcs(age,4) + sex, x=T, y=T)
med <- Quantile(f)
# nomogram
nom <- nomogram(f, fun=function(x) med(x),
fun.at=c(13,12,11,9,8,7,6,5),lp=F, funlabel="Median Survival Time")
plot(nom) ##绘制Nomgram图
每周更新肿瘤数据最新⽂献统计⽅法!欢迎关注:“survival-analysis” QQ:8243033近万⼈的肿瘤医⽣粉丝平台!
本精彩历史⽂章:
04:如何在R软件中求⼀致性指数( Harrell'concordance index:C-index)?
05:Nomogram 绘制原理及R&SAS实现.
06  : Lasso⽅法简要介绍及其在回归分析中的应⽤
07  : 最优模型选择中的交叉验证(Cross validation)⽅法
08  : ⽤R语⾔进⾏分位数回归(Quantile Regression)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。