今天给大家分析一篇文献,作者是浙大邵逸夫医院的章仲恒副主任,论文的主要内容就是教大家怎么画列线图。写的比较详细,拜读之后顺手写个粗浅的解析分享给大家,依然还是建议大家去看原文哦,论文题目见文章最后。
全文包括2分类逻辑斯蒂回归,多分类逻辑斯蒂回归,生存分析的列线图的画法和解析,基本上涵盖了临床上常用的预测方法,所以很值得大家收藏。
接下来我一个一个给大家解析
作者先模拟了一个数据集,大概长这样:

这个数据集有1000个个案,6个变量,其中age和lac都是正态分布的连续自变量,sex和shock为因子,y是二分类结局,Y是多分类结局(3分类),所以我们如果用y做结局,就是拟合一个二分类逻辑斯蒂回归,用Y做结局就是多分类逻辑斯蒂回归。接下来我们一个一个看:
二分类结局的列线图画法
画列线图用到的包是rms。
第一步我们需要用datadist()函数来得到预测变量的分布,以此来规定我们的图形的尺度,紧接着拟合我们的逻辑回归模型(用到的函数为lrm),代码如下:
<span style="color:#222222"><code>ddist <- datadist(<span style="color:#114ba6">data</span>)
options(datadist=<span style="color:#00753b">'ddist'</span>)
mod.bi<-lrm(y~shock+lac*sex+age,<span style="color:#114ba6">data</span>)</code></span>
模型拟合好了之后,我们把这个模型直接喂给nomogram函数就行,代码如下:
<span style="color:#222222"><code>nom.bi <- nomogram(mod.bi,
lp.at=seq(-<span style="color:#a82e2e">3</span>,<span style="color:#a82e2e">4</span>,<span style="color:#114ba6">by</span>=<span style="color:#a82e2e">0.5</span>),
<span style="color:#8a7304"><span style="color:#114ba6">fun</span>=<span style="color:#a82e2e">function</span>(x)</span><span style="color:#a82e2e">1</span>/(<span style="color:#a82e2e">1</span>+exp(-x)),
<span style="color:#8a7304"><span style="color:#114ba6">fun</span>.at=<span style="color:#a82e2e">c</span>(<span style="color:#a82e2e">.001</span>,<span style="color:#a82e2e">.01</span>,<span style="color:#a82e2e">.05</span>,seq(<span style="color:#a82e2e">.1</span>,<span style="color:#a82e2e">.9</span>,<span style="color:#114ba6">by</span>=<span style="color:#a82e2e">.1</span>)</span>,.<span style="color:#a82e2e">95</span>,.<span style="color:#a82e2e">99</span>,.<span style="color:#a82e2e">999</span>),
funlabel=<span style="color:#00753b">"Risk of Death"</span>,
conf.int=c(<span style="color:#a82e2e">0.1</span>,<span style="color:#a82e2e">0.7</span>),
abbrev=TRUE,
minlength=<span style="color:#a82e2e">1</span>,lp=F)
plot(nom.bi,lplabel=<span style="color:#00753b">"Linear Predictor"</span>,
<span style="color:#8a7304"><span style="color:#114ba6">fun</span>.side=<span style="color:#a82e2e">c</span>(<span style="color:#a82e2e">3</span>,<span style="color:#a82e2e">3</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">3</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">3</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">1</span>,<span style="color:#a82e2e">3</span>)</span>,
col.conf=c(<span style="color:#00753b">'red'</span>,<span style="color:#00753b">'green'</span>),
conf.space=c(<span style="color:#a82e2e">0.1</span>,<span style="color:#a82e2e"