实例演示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)

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

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)

实例演示R语言制作限制性立方条图_第3张图片
实例演示R语言制作限制性立方条图_第4张图片
Nonlinear值为0.33,提示不是非线性,
论文中我们常可以看见有一条等于1的对比线,如下图这样,说明线上的值大于1,线下面小于1。我们可以通过HR等于1的age对它进行设定。
实例演示R语言制作限制性立方条图_第5张图片
我们进行查看预测表,HR等于1,age为50
实例演示R语言制作限制性立方条图_第6张图片

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)")

实例演示R语言制作限制性立方条图_第7张图片
其他模型做法也是一样的,只是在构建模型这一块不同。
原创不易,求关注,求分享,求点击广告,各种求
实例演示R语言制作限制性立方条图_第8张图片

你可能感兴趣的:(R语言,大数据)