R语言基于visreg 包COX回归和连续变量交互效应(交互作用)的可视化分析

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性,进行可视化后可以清晰的表明变量之间的关系。不仅如此,交互作用还可以使用来进行数据挖掘。在既往文章中,我们已经介绍了怎么使用R语言和SPSS对logistic回归亚组交互效应(交互作用)进行可视化分析(见下图)
在这里插入图片描述
在这里插入图片描述
后台有粉丝问能不能进行COX回归交互效应可视化分析和对连续变量进行交互效应可视化分析,都是可以的,下面我们来一一进行演示。
COX回归交互效应可视化分析和logistic回归交互项的可视化分析的步骤基本一样的,继续使用我们的乳腺癌数据(公众号回复:乳腺癌,可以获得数据)我们先导入数据和R包

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

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

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

建立cox回归方程,我们假设age和histgrad有交互

f1<- coxph(Surv(time, status) ~ age + histgrad+
           pathsize+ er + pr + ln_yesno+age*histgrad, data=bc)
summary(f1)

在这里插入图片描述
这里发现age:histgrad的P值大于0.05,两者之间没有交互效应,我们不管他,这里主要是演示怎么做图

visreg(f1, "age", "histgrad", ylab="log(Hazard ratio)")

在这里插入图片描述
可以把3张图合并起来

visreg(f1, "age", "histgrad", ylab="log(Hazard ratio)", overlay = T)

在这里插入图片描述
还可以进一步修改

plot(visreg(f1,xvar = "age",by="histgrad",plot=F),xlab="age",ylab="log(Hazard ratio)",
     overlay = T,partial = F,rug=F,,line=list(lty=1:6))
legend("bottomright",
       c("histgrad1","histgrad2","histgrad3"),
       lty=c(1,1,1),
       col=c("red","green","blue"),
       lwd=c(2,1,1),
       bty="n")

在这里插入图片描述
也可以按箱线图来表示

plot(visreg(f1, "histgrad", by="age",plot=F),xlab="age",ylab="log(Hazard ratio)",
     overlay = T,partial = F,rug=F,,line=list(lty=1:6))
legend("bottomright",
       c("age38","age55","age74"),
       lty=c(1,1,1),
       col=c("red","green","blue"),
       lwd=c(2,1,1),
       bty="n")

在这里插入图片描述
从图上中数据的可信区间严重重合也可以看出来两者并没有交互。
下面来演示连续变量的交互可视化分析,使用我们的臭氧数据(公众号回复:臭氧可以获得数据)
我们先导入R包和臭氧数据

library(splines)
be <- read.spss("E:/r/test/ozone.sav",
                use.value.labels=F, to.data.frame=T)

在这里插入图片描述
数据中有七个变量,ozon每日臭氧水平为结局变量,Inversion base height(ibh)反转基准高度,Pressure gradient (mm Hg) 压力梯度(mm Hg),Visibility (miles) 能见度(英里),Temperature (degrees F) 温度(华氏度),Day of the year日期,vh我也不知道是什么,反正就是一参数,这里所有的变量都是连续的。
假设我们想知道反转基准高度和温度对臭氧浓度有无存在交互影响

fit <- lm(ozon ~ vh +ns(ibh, df=2)*ns(temp, df=2), data=be)
summary(fit)

在这里插入图片描述

visreg2d(fit, "ibh", "temp")

在这里插入图片描述
也可以自己更改想要的颜色

visreg2d(fit, "ibh", "temp", color.palette=colorRampPalette(c("black", "white", "purple")))

在这里插入图片描述
也可以绘制3D立体图

visreg2d(fit,"ibh", "temp", plot.type="persp")

在这里插入图片描述
也可以绘制成这种

plot(visreg(fit,xvar = "ibh",by="temp",plot=F),xlab="age",ylab="log(Probability)",
     overlay = T,partial = F,rug=F,,line=list(lty=1:6))
legend("topright",
       c("temp41","temp62","temp81"),
       lty=c(1,1,1),
       col=c("red","green","blue"),
       lwd=c(2,1,1),
       bty="n")

在这里插入图片描述
在这里插入图片描述

  • 11
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 41
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天桥下的卖艺者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值