实例演示R语言制作限制性立方条图

限制性立方样条函数(RCS)在比较非线性关系中很常用。既往我们已经讲过R语言制作限制性立方条图,但是讲得比较简单,中间有些环节没写出来,我也不是很满意,今天重新来说一下。主要是要用到rms包的rcs函数来绘制,继续用我们的乳腺癌数据来绘制,因为目前也没找到什么好的数据。
我们先导入包,导入数据

library(foreign)
library(rms)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)
names(bc)

在这里插入图片描述
我们先来看看数据:
age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。
在这里插入图片描述
转换分类变量并且抽取一部分变量等下来拟合模型

attach(bc)
be<-data.frame(age,status,time,ln_yesno)
be$ln_yesno<-as.factor(be$ln_yesno)

对数据进行打包,整理

dd <- datadist(be) #为后续程序设定数据环境
options(datadist='dd') #为后续程序设定数据环境

拟合模型

fit<- cph(Surv(time,status) ~ rcs(age,4) + ln_yesno,data=be) 
an<-anova(fit)

生成预测值并且做图,我们要注意一下,这里的exp等于把它返回了HR值

plot(Predict(fit, age,fun=exp), anova=an, pval=T)

在这里插入图片描述
在这里插入图片描述
Nonlinear值为0.33,提示不是非线性,
论文中我们常可以看见有一条等于1的对比线,如下图这样,说明线上的值大于1,线下面小于1。我们可以通过HR等于1的age对它进行设定。
在这里插入图片描述
我们进行查看预测表,HR等于1,age为50
在这里插入图片描述

dd$limits$age[2] <-50
fit1=update(fit)

最后画出图形

HR<-Predict(fit, age,fun=exp,ref.zero = TRUE) 
ggplot(HR)
ggplot()+geom_line(data=HR, aes(age,yhat),linetype=1,size=1,alpha = 0.9,colour="red")+
  geom_ribbon(data=HR, aes(age,ymin = lower, ymax = upper),alpha = 0.3,fill="red")+
  geom_hline(yintercept=1, linetype=2,size=1)+theme_classic()+ 
  labs(title = "RCS", x="age", y="HR (95%CI)")

在这里插入图片描述
其他模型做法也是一样的,只是在构建模型这一块不同。
原创不易,求关注,求分享,求点击广告,各种求
在这里插入图片描述

  • 9
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 36
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值