本章思维导图
之前需要做cox分析相加交互作用,检索后发现Interactions包不支持相对超危险度比(relative excess risk due to interaction,RERI),因为主要都是连续变量相加交互,而RERI需要a/b均二分类交互因素;epiR包案例支持logistic,coxph但是相乘交互错误,多因素调整后算法错位。本来去年自编了一套rerisci包,水友留言中发现,interactionR包去年更新了,支持coxph、 clogit、logistic,且能同时输出delta法、bootstrap法的置信区间。好吧,于是这个包就没发布了,留着学员自用了。通过本文,我们会发现,R包的超级便捷性远大于SAS包。找准参数,调包,就可以短短几行代码快速实现之前SAS长达几百行的代码。SAS代码过于冗长且图表不友好。
我之前写过一些列的相加交互作用代码,具体文章见公众号系列文章,相加交互RERI理论篇(全网最强大图形理论)、一键相加交互SAS宏(适合SAS用户)、RERI相加交互作用excel篇(适合excel/SPSS用户)、RRR相加交互新指标。
本文参考BMJ范文,用自己的数据jiaohu.sav制作案例,复现全部过程。
实战数据为虚拟数据jiaohu.sav。变量a b不分主次,a01,b01,均为2分类。jiaohu.sav演示logistic、cox的相乘相加交互作用。下图中的β1β2β3意味着原始数据x的回归系数,具体意义请参考公众号2022年发表的理论篇。
先看案例1,公众号自编SAS宏复现了非条件logistic,3个自编宏分别提供了3种常规模型相加交互计算RERI(ICR)、AP、S指标,对应模型是非条件logistic、条件logistic、cox模型。使用十分方便,只需要输入x、y、covs有哪些就会自动运行结果。
上图为宏的参数,仅需要替换红色部分即可。运行“cox-条件-非条件logistics交互作用数据-实战医学统计.sas”中的非条件部分,从“%macro additive2dum_logistic”至“quit;);”,表示加载我定义的相加交互函数,下面案例相同操作。然后修改下面命令红色(data,a,b,y)+灰色部分即可,如果没有混杂可忽略灰色cov。
SAS宏代码,和excel、spss相加交互代码见前面红色链接。
之前需要做cox分析相加交互作用,检索后发现Interactions包不支持相对超危险度比(relative excess risk due to interaction,RERI),因为主要都是连续变量相加交互,而RERI需要a/b均二分类交互因素;epiR包案例支持logistic,coxph但是相乘交互错误,多因素调整后算法错位。本来自编了一套rerisci包,水友留言中发现,interactionR包更新了,支持coxph、 clogit、logistic,且能同时输出delta法、bootstrap法的置信区间。可惜的是interactionR一些小细节错误了,整理还是很强的,可以快速制作交互表格。
#----??3、interactionR包,p错误--------
# install.packages("devtools")
##devtools::install_github("tunsmart/interactionR")
library(interactionR)
f1<- glm(y ~ a+b+ a:b+ sex, family = binomial(link = logit), data = jiaohu)
summary(f1)
##-----3.1 delta法,默认----
table_object = interactionR(f1, exposure_names = c("a", "b"),
#置信区间估计默认“delta” or “mover”
ci.type = "delta", ci.level = 0.95, em = F, recode = F)
interactionR_table(table_object)
# View(table_object[["dframe"]])
智荟R代码分为reri.cox和reri.logistic命令,只需要设y=y,a=a,b=b,covs=c("sex"),就可以一键出RERI、AP、S三指标及置信区间还有相加交互协同效应图。
#实战医学统计案版权为广州智荟数据公司所有
#------??案例1 logistic相乘相加交互-----
#------??1、rerisci包--------
#复制文件.R到setwd目录
setwd("D:/聂个人文件A款2024课件/13.交互中介趋势检验")
#载入交互函数.rc
compiler::loadcmp("./test/RERI-logistic.Rc", envir = rlang::current_env())
compiler::loadcmp("./test/RERI2-logistic.Rc", envir = rlang::current_env())
##-----1.1 logistic相乘相加交互----
#复制文件.R到setwd目录
setwd("D:/聂个人文件A款2024课件/13.交互中介趋势检验")
pacman::p_load(haven)
jiaohu<-read_sav("./test/zhonghua.sav")
#RERI.logistic 函数,RERI.logistic (dataset,y,a,b,covs,filepath,...)
#进行logistic分析的相加相乘计算输出excel PDF图;带混杂因素
RERI.logistic(dataset=jiaohu,y=y,a=a,b=b,covs=c("sex"),filepath = "./test")
RERI计算特性,几乎全文献都是2分类A交互因素2分类B交互因素2分类结局Y来计算,简写就是2*2,2(0,1)*2(0,1)。多水平变量交互要拆分:RERIsci包V0.1.0版本,亦仅限2(0,1)*2(0,1),如遇到2(0,1)*3(0,1,2),3(0,1,2)*3(0,1,2)等,可参考BMJ(zhang et.al 2021)范文将高剂量组与最低剂量组,拆分出来单独做A(0,2)*B(0,2)分析。
根据Katsoulis、和vanderweele文献,连续x依旧是拆分为等级x来进行后续分析。实际文献中并未普及。
相加交互无论logistic、cox如果用SAS代码,推荐nie2022与huang2022宏,前者更适合SCI的叉生分析、分层分析,后者更适用NHANES数据库的加权交互分析。宏间优劣,尽在思维导图。
interactionR很强,但是有些bug,p值错误,效应量标注错误等一些小细节问题;epiR包错误很多,别用。
3. rerisci包没开放获取,A款课程内部分享
“1.相加交互2分类R代码推荐interactionR和rerisci包,注意前者细节错误,后者强在细节
2.等级与连续变量x交互,赋值为等距分类,再绘制rcs趋势择优选择ref组,再两两交互RERI计算。
本公众号建立了学术交流群(群6),仅供SCI学术交流,人数有限需要实名制, 还有200坑位。入群请加笔者微信 popnie,请备注说明:姓名-学校(单位)-专业。