写在前面的话,此函数不适用于NHANES数据,请注意甄别。
在SCI文章中,交互效应表格(通常是表五)几乎是高分SCI必有。因为增加了亚组人群分析,增加了文章的可信度,能为文章锦上添花,增加文章的信服力,还能进行数据挖掘。

cox回归 AUC cox回归分析怎么读_bc

在既往文章《scitb5函数1.7版本(交互效应函数P for interaction)发布----用于一键生成交互效应表、森林图》中,本人发布了自己编写的scitb5函数,用于绘制交互效应表。效果还不错,但是scitb5函数只能使用于线性回归和逻辑回归,不能使用于cox回归。因此我编写了scitb5.coxph函数,可用于cox回归。下面我来演示一下。
导入R包和我编写的函数,还有数据

source("E:/r/myfit/scitb5coxph16.R")
library(foreign)
library(survival)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)

cox回归 AUC cox回归分析怎么读_交互_02


这是个乳腺癌的数据(公众号回复:乳腺癌,可以获得这个数据)

age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。

咱们先把分类变量转成因子

bc$histgrad<-as.factor(bc$histgrad)
bc$er<-as.factor(bc$er)
bc$pr<-as.factor(bc$pr)
bc$ln_yesno<-as.factor(bc$ln_yesno)

做亚组交互需要设定协变量和分层变量,咱们给他设定一下,cov1是协变量的意思,Interaction是分层变量的意思,分层变量必须是因子

cov1<-c("er","pathsize","ln_yesno","pr","histgrad")
Interaction<-c("ln_yesno","er","pr","histgrad")

然后一句话代码就可以生成表格,data是你的数据,必须是数据框形式,x是你研究的目标变量,y是你的结局变量,time是你的时间变量,Interaction是你的分层变量,这个必须是分类变量并转成因子,cov是你的协变量,family="cox"这个是固定的。

out<-scitb5.coxph(data=bc,x="age",y="status",time="time",Interaction=Interaction,cov = cov1,family="cox")

cox回归 AUC cox回归分析怎么读_数据_03


这样亚组交互的效应表就生成好了。我简单解释一下函数是怎么运作的,函数先会对分层变量进行判断,如果分层变量在协变量中会自己删除分层变量,所以对于"ln_yesno"这个层,协变量是c(“er”,“pathsize”,“pr”,“histgrad”)。

计算的结果咱们手动验证演示一下

#亚组演示
dat1<-subset(bc,bc$ln_yesno==0)
dat2<-subset(bc,bc$ln_yesno==1)
coxph(Surv(time,status)~age+er+pathsize+pr+histgrad,dat1)
coxph(Surv(time,status)~age+er+pathsize+pr+histgrad,dat2)

cox回归 AUC cox回归分析怎么读_数据_04


咱们可以看到,对于ln_yesno这个分层,手动计算的OR是0.99和0.96和咱们函数计算出来的几乎一样,所以结果的可靠性是没有问题的。

接下来咱们来个X和Y都是分类变量的

###分类变量
cov1<-c("er","pathsize","pr")
Interaction<-c("er","pr")

out<-scitb5.coxph(data=bc,x="ln_yesno",y="status",time="time",Interaction=Interaction,cov = cov1,family="cox")

cox回归 AUC cox回归分析怎么读_数据_05


上图我要解释一下,做分类变量的时候需要设定一个参考,在er这个分层比较的时候,ln_yesno .0_er.0是被认定做参考的,什么意思呢?就是当ln_yesno .等于0和er等于0这个亚组的人群是被默认为做参考比较的,其他组都是和它进行比较的,如果这个层数据

缺失的很厉害的话会显示NA。

加下来说一个包含的问题,在既往函数中,我要求协变量COV是要包含分层变量,不然就会报错,但也有些粉丝说这样有时候不够灵活,新版本中这个包含规则也是可以关掉的,比如以下情况

cov1<-c("er","pathsize")
Interaction<-c("er","pr")

以前这样是做不出来的,因为pr没有在协变量里面

out<-scitb5.coxph(data=bc,x="ln_yesno",y="status",time="time",Interaction=Interaction,cov = cov1,
                  family="cox")

cox回归 AUC cox回归分析怎么读_bc_06


在新版本中咱们可以通过contain参数关掉它

out<-scitb5.coxph(data=bc,x="ln_yesno",y="status",time="time",Interaction=Interaction,cov = cov1,
                  family="cox",contain = F)

cox回归 AUC cox回归分析怎么读_bc_07


我对模型检查了,发现关掉也没啥问题。关不关看你需要了。Cox回归也是可以一键生成森林图的,既往森林图黑色我觉得有点单调,改成蓝色了。森林图需要安装stringr包和forestplot包

plotforest(out)

cox回归 AUC cox回归分析怎么读_cox回归 AUC_08


森林图的颜色也是可以调整的

plotforest(out,col = "green")

cox回归 AUC cox回归分析怎么读_cox回归 AUC_09


因为有粉丝模型的OR值很小,因此scitb5.coxph支持结果小数位数调整,dec调整OR的小数位数,pdec调整P值的小数位数,

out<-scitb5.coxph(data=bc,x="ln_yesno",y="status",time="time",Interaction=Interaction,
                  cov = cov1,family="cox",dec=5,pdec=5,p.intervaue = 5,contain = F)

cox回归 AUC cox回归分析怎么读_bc_10


如果你还不会也没有关系,请看下面的视频操作

scitb5coxph函数1.6版本(交互效应函数P for interaction)发布----用于一键生成交互效应表、森林图


我暂时还没有把两个函数进行和并的打算,NHANES数据的COX回归亚组交互函数也在编写中,可能还要等一等。