交互作用分析体会总结
日前总结了一个交互作用分析的思路,包括:
- Boruta等筛选变量;
- 批量展示多个变量的交互作用。 使用iml包,用树形模型(随机森林等)构建方程,批量展示多个变量的交互作用力度;这里需要指出的是模型一定要是树形模型,因为树形模型算法中天然包含了变量间的交互作用;
- 鉴定 排名靠前的交互变量。使用多种方法,包括带有交互作用项的回归方程的P值,计算方程间的AIC是否有提升,模型效能(AUC)是否有改善。
通过以上步骤鉴定出的交互作用,可以作为独立危险因素研究中危险因素的属性,或者线性模型构建中构造性能更优的预测线性预测模型。
体会
在尝试使用以上的步骤构建了三类常见医学模型的交互作用分析(线性模型、二分类和COX)之后,这里和大家分享一些体会。
首先,二分类结局变量可能不适合进行交互作用分析,至少是多分类,因为二分类过于粗略,不能反映交互作用的变化,这是AI给的答案。实践中我用同一份数据用二分类和cox分别进行交互作用分析,也确实是cox可以分析出微弱的交互作用,而二分类结局数据不,所以这个判断应该是成立的。
其次,在第二步展示交互作用时,需要用树形模型,这在之前时犯了错误的,因为计算交互作用力度的iml包或者SHAP包都是“模型解释”的包,所以,如果原来的方程中没有交互作用的计算,就无从进行展示,所以要么用树形模型,要么用带有交互作用项的线性模型。
最后,在批量展示交互作用的技术方面,我们有iml包和shap包可供选择,iml包支持线性方程和分类方程,而shap全部都支持,但是iml中使用的算法时计算H-statistics,其区间多数情况下位于0~1之间,0代表没有交互作用,1代表变量对结局的贡献全部时交互作用的贡献,也可以大于1,据说暂时不能解释。位于0~1之间的特性可以帮助我们量化交互作用的大小。
最后
交互作用分析的内容不多,往往占的比重也不大,单独作为研究的主要内容并不适合,还是要和其他的研究进行整合。也不好说全对,供大家参考。
三种交互作用分析的项目可以在和鲸社区搜索“交互作用”获得。