imd 统计教程 · RCS非线性建模
← 教程首页 返回本模块

「转」限制性立方样条(RCS)的列线图怎么画?

阿越就是我实战医学统计2023-03-04 16:10:53广东
关注公众号,发送R语言python,可获取资料

??专注R语言在??生物医学中的使用


今天的这篇推文来自群友(大家如果有问题可加入对方的免费千人QQ群讨论,他会把你们的问题写成推文推送)提问,RCS(限制性立方样条)的列线图怎么画?

其实很简单,直接用rms包即可搞定。

下面分别演示logistic和COX的RCS的列线图绘制。

建立logistic模型

library(rms)

# 逻辑回归数据
getHdata(titanic3)

# 使用rms前先把数据打包
dd <- datadist(titanic3); options(datadist='dd')

# 逻辑回归的立方样条
f <- lrm(survived ~ rcs(sqrt(age),5) + sex, data=titanic3)
f
## Frequencies of Missing Values Due to Each Variable
## survived      age      sex 
##        0      263        0 
## 
## Logistic Regression Model
##  
##  lrm(formula = survived ~ rcs(sqrt(age), 5) + sex, data = titanic3)
##  
##  
##                         Model Likelihood      Discrimination    Rank Discrim.    
##                               Ratio Test             Indexes          Indexes    
##  Obs          1046    LR chi2     328.06      R2       0.363    C       0.794    
##   0            619    d.f.             5     R2(5,1046)0.266    Dxy     0.587    
##   1            427    Pr(> chi2) <0.0001    R2(5,758.1)0.347    gamma   0.593    
##  max |deriv| 2e-07                            Brier    0.168    tau-a   0.284    
##  
##            Coef     S.E.    Wald Z Pr(>|Z|)
##  Intercept   3.0936  0.5428   5.70 <0.0001 
##  age        -0.6383  0.1771  -3.60 0.0003  
##  age'        1.5544  0.6527   2.38 0.0172  
##  age''     -12.1583  8.8925  -1.37 0.1715  
##  age'''     15.8326 16.9397   0.93 0.3500  
##  sex=male   -2.4944  0.1549 -16.10 <0.0001 
## 

画列线图

下面直接画图即可,没有任何难度,因为rms这个包把一切都给你做好了,不用自己操心,如果你做临床预测模型,是不可能绕开这个包的。

nom <- nomogram(f, fun=plogis,
                 lp=T,
                 funlabel="Risk of Death")  
plot(nom) 
plot of chunk unnamed-chunk-2

这样RCS的列线图就画好了,关于一些参数的意义和细节的美化,可以参考前面的推文,这里就不多说了。

既然logistic回归没问题,那COX回归自然也是没问题的!

COX回归RCS的列线图

dd <- datadist(lung)
options(datadist = "dd")

构建cox比例风险模型:

coxfit <- cph(Surv(time, status) ~ rcs(sqrt(age),5) + sex,
              data = lung, x=T,y=T,surv = T
              )

# 构建生存函数,注意你的最大生存时间
surv <- Survival(coxfit) 
surv1 <- function(x) surv(365,x) # 1年OS
surv2 <- function(x) surv(365*2,x) # 2年OS

nom <- nomogram(coxfit,
                fun = list(surv1,surv2),
                lp = T,
                funlabel = c('1-year survival Probability',
                         '2-year survival Probability')
                )

plot(nom)
plot of chunk unnamed-chunk-4

这就是COX回归RCS的列线图,关于一些参数的意义和细节的美化,可以参考前面的推文,这里就不多说了。

是不是很简单?

因为是演示数据,所以画出来的图不是很美观,但是实现方法就是这么简单!


另外阿越还有bilibili的视频号,他是个临床大夫哦。



视频教程可关注我的b站:阿越就是我


他还有许多精选合集,链接在下面



??精选合集