imd 统计教程 · 交互作用与中介分析
← 教程首页 返回本模块

一键Cox、logistic相加交互-多分类等级加权-超级牛逼SAS宏

聂志强 黄光实战医学统计2022-12-17 16:00:41广东


本章思维导图

写在前面:本文成文过程,一并感谢2位热心的小伙伴,中大张俊国同学和临度公司黄光同学,小伙伴们给予有力帮助且深入讨论和演算。虽未曾谋面但很开心,能遇到如此热心的朋友。本文内容较多,需要耐心,心急的朋友可以直接跳到实战代码部分。

背景

相加交互在探讨亚组异质性、风险脆弱人群、政策干预靶向人群方面越来越得到重视,当然SCI中也越来也见认可。前2章笔者介绍了相加交互的理论、方向背离、excel工具,小伙伴们应该已经有基础认识了。也许你不经要问,既然Excel只能做非条件logistic的相加交互,那么为何不直接上手最热门最全的R代码? 

先来听个故事。笔者近5年总觉得SAS软件有点老态龙钟,跟不上时代,比如安装体积太庞大代码太古板陈旧,直到最近清洗UKBiobank的60G数据时候才发觉SAS的优势(吃硬盘)和R短板(吃内存)。此事件让笔者纠正了几年来的偏见,感叹SAS结果的可靠性和R的易错。当前R算法过于开放自由,许多R包作者可能自己都没有验证结果,调包侠们更不会去思考对否,以至于最终论文不说刻意造假,也可能是真的“论文存在图片误用”这般拿来主义,使得结果谬之千里。其实吧,最最重要的是目前R没有现成的cox相加交互包!尽管笔者曾在2016年中华流行病发表了基于SAS宏(搜索“实现logistic与Cox回归相乘相加交互作用的临床实践宏程序”)的相乘相加交互程序,但是引用率不高,可能与教程不详细有关,于是笔者重新打磨并增加使用教程,让SAS相加交互宏更容易上手,更容易实现一键出结果的目的。

笔者当时开发时由于中文杂志版面问题,相乘相加SAS代码的演示不够清楚,且cox分析部分没有印刷正确,而参考文献Li2007AP部分提供的偏导数原公式错误(哎,坑了几十篇引用),为广大读者在做交互的时候留下了个深坑(文献和我都有错)。在次,笔者一口气把坑都填上。本文代码应该算是全网最强的SAS宏,原理深入但使用超简单,本宏应配得上“超级牛逼”(此处应有掌声)!

1. 经典文献与方法学

下列3篇文献十分经典,有部分SAS代码及宏,3篇论文很好的阐述了RERI等理论,请小伙伴们结合笔者理论篇一起研读,收获俱佳。

理论的核心是知道OR、RR、HR3类效应量对应的单独效应、相加相应、相乘效应的区别和联系,及相应的表格位置与公式,包括点估计值与delta法95%CI估计。Li2007利用矩阵直接计算优化了代码,但是,笔者这一周在复现的时候发现各种AP95%CI对应不上,真的是神坑!笔者结合理论篇,总结如下:


2. 非条件Logistic相加相乘交互

实战数据为虚拟数据jiaohu.sav。

变量a b不分主次,a01,b01,均为2分类。jiaohu.sav演示logistic、cox的相乘相加交互作用。下图中的β1β2β3意味着原始数据x的回归系数,具体意义请参考理论篇。

2.1重现VanderWeele2014代码

可以看到,VanderWeele2014只计算logistic的RERI不能提供AP S95%CI等。似乎甚至不如lundberg1996!不过优点是可以处理等级变量RERI,并且给出了等级及多分类建议,拆分成感兴趣组的二分类,再做RERI

2.2 a b 二分类

 

2.3 a b 等级变量

等级变量考虑分别用a、b最高等级的赋值,对应代码中的g、 e部分。

2.4 a b 无序多分变量

2.5 nie2022非条件logistic交互宏

核心参数:

图为宏的参数,仅需要替换红色部分即可。运行“cox-条件-非条件logistics交互作用数据-实战医学统计.sas”中的非条件部分,从“%macro additive2dum_logistic”至“quit;);”,表示加载笔者定义的相加交互函数,下面案例相同操作。然后修改下面命令红色(data,a,b,y)+灰色部分即可,如果没有混杂可忽略灰色cov。

案例1:SAS数据集jiaohu.sas7bdat

/===  测试logistic交互 ===/ 

libname paper "D:\聂个人文件\我的公众号\交互作用cox\test"
RUN; 
data jiaohu; 
set paper.jiaohu; run; 
/非条件logistic相加相乘交互/ 
%additive2dum_LOGISTIC(jiaohu,a,b,y,age,sex); &ICR_logistic; 
run;

3 nie2022条件logistic交互宏

4 nie2022 cox交互宏

核心参数:


案例2:同案例1,SAS数据集jiaohu.sas7bdat

/===   cox交互 ===/ 
libname paper "D:\聂个人文件\我的公众号\交互作用cox\test"
RUN; 
data jiaohu; 
set paper.jiaohu; 
run; 
/cox相加相乘交互/ 
%additive2dum_cox(jiaohu,a,b,y,time,age,sex); &ICR_COX; 
run;

5 huang2022 加权logistic、cox交互宏

强烈推荐!由黄光同学无私提供,珍藏版代码,本代码同样适合NHANES等复杂抽样需要加权分析的公共数据库。




案例3:同案例1,SAS数据集jiaohu.sas7bdat

/===  同时测试logistic交互  cox交互 ===
/ libname paper "D:\聂个人文件\我的公众号\交互作用cox\test"
RUN; 
data jiaohu; 
set paper.jiaohu; 
run; 
/*cox相加相乘交互*/ 
%additive2dum_cox(jiaohu,a,b,y,time,age,sex); &ICR_COX;
run;

上述宏代码结果一致,汇总如下。


6 小结

强烈推荐nie2022与huang2022宏,前者更适合SCI的叉生分析、分层分析,后者更适用NHANES数据库的加权交互分析。宏间优劣,尽在思维导图

如需本文的SAS宏代码,可通过公众号信息界面回复

超级牛逼SAS交互宏

原创不易,欢迎转载,分享给你身边的小伙伴