求SAS做限制性立方样条图的%RCS_Reg宏和相应语句😭

限制性立方样条函数(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为50dd$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)")其他模型做法也是一样的,只是在构建模型这一块不同。原创不易,求关注,求分享,求点击广告,各种求}

我要回帖

更多关于 限制性立方样条图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信