【交互作用】02. 加法交互 乘法交互 (R包 interactionR)

2023-11-05 07:59

本文主要是介绍【交互作用】02. 加法交互 乘法交互 (R包 interactionR),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【交互作用】02. 加法交互 & 乘法交互 [R包 interactionR]

  • 1. 原理和方法回顾
  • 2. `interactionR` R包介绍

生物学交互作用的评价应该基于是否有相加交互作用, 而流行病学研究中常运用logistic和Cox等广义线性模型, 并纳入乘积项分析因素间交互作用,其是否有意义仅反映相乘交互作用, 并不能反映两因素间相加或生物学交互作用的有无。上篇【交互作用】01. 加法交互 & 乘法交互 (R包 epiR) 介绍了交互作用的基本概念、三个相加交互作用评价指标(RERI、AP和S)和 epiR R包的应用等。本篇内容主要介绍实现交互作用的另一个好用的R包 interactionR

1. 原理和方法回顾

以两因素两水平为例。假设两暴露因素分别为A、B,1表示因素存在,0表示因素不存在,因变量为疾病发生与否。

ORA0B0表示A、B都不存在时发病的OR值,分析时作为参照组;ORA1B0表示仅A存在、B不存在时发病的OR值;ORA0B1表示A不存在、仅B存在时发病的OR值;ORA1B1表示A、B共同存在时发病的OR值。

评价相加交互作用的三个指标
① 相对超危险度比:RERI = ORA1B1 - ORA0B1 - ORA1B0 + 1;
② 归因比:AP = RERI / ORA1B1
③ 交互作用指数:SI = (ORA1B1 - 1) / [(ORA0B1 - 1) + (ORA1B0 - 1)]。

判定准则:如果两因素无相加交互作用,则RERI和AP的可信区间应包含0,SI的可信区间应包含1。

交互作用指标的点估计
可通过以下两种方法,建立logistic回归模型计算ORA1B1、ORA0B1和ORA1B0,代入交互作用指标的计算公式。
(1) 用两因素A、B及乘积项A×B构建logistic回归模型1
ln[p/(1-p)] = β0 + β1A + β2B + β3(A×B);
ORA1B0 = exp(β1),
ORA0B1 = exp(β2),
ORA1B1 = exp(β1 + β2 + β3)。
(2) 根据两因素A、B,建立新的交互作用哑变量A_B,构建logistic回归模型2
A0B0表示A=0且B=0,分析时作为参照组;A0B1表示A=0且B=1,A0B1表示A=0且B=1,A1B1表示A=1且B=1。
ln[p/(1-p)] = β0 + β1A1B0 + β2A0B1 + β3A1B1;
ORA1B0 = exp(β1),
ORA0B1 = exp(β2),
ORA1B1 = exp(β3);
模型1和2中的β1、β2相同,而模型2中的β3等于模型1中的β1 + β2 + β3。

注意:一般以高风险的一类作为暴露组,尤其是在保护因素时,应当将无暴露设置为1,有暴露设置为0,以避免解释上混乱。当暴露变量为多分类或连续变量时,置信区间(CI)估计的delta方法以及Andersson编制的Excel法均不适用。而Bootstrap方法可以估计所有解释变量类型的交互情况的CI。

2. interactionR R包介绍

interactionR 可直接导出出版级别的Word,结果包括联合效应、暴露效应和交互效应,乘法交互,加法交互,以及分层分析。

R包内置3种置信区间的估计方法

  • delta method (Hosmer and Lemeshow (1992), [doi:10.1097/00001648-199209000-00012]),
  • variance recovery method (Zou (2008), [doi:10.1093/aje/kwn104]),
  • percentile bootstrapping (Assmann et al. (1996), [doi:10.1097/00001648-199605000-00012]).

R包的安装

devtools::install_github("epi-zen/interactionR")
library(interactionR) 

参数介绍

  • model: 包含交互项的回归模型。可以是logistic glm(formula, family = binomial(link = "logit"), data)、条件logistic clogit() 或cox coxph()回归模型。模型可以包含适当的协变量。
  • exposure_names: 模型中可能存在交互作用的两个二分类变量(乘积项)。
  • ci.type: 加法交互作用的置信区间估计方法 (“delta” 或 “mover”) ,默认为delta方法。
  • ci.level: 置信区间水平。
  • em: TRUE, for effect modification assessment. FALSE, for interaction.
  • recode: If TRUE, recodes the exposures - if at least one of the exposures is protective - such that the stratum with the lowest risk becomes the new reference category when the two exposures are considered jointly (See Knol et al (2011) [doi: 10.1007/s10654-011-9554-9]).

示例数据代码实现

已报道的饮酒和吸烟对口腔癌的联合作用数据。包括两个二分类暴露因素,即饮酒 (alc) 和吸烟 (smk),结局为二分类变量,即口腔癌 (oc)。

data (OCdata)## fit the interaction model
model.glm <- glm(oc ~ alc*smk, family = binomial(link = "logit"), data = OCdata)
summary(model.glm)## 1) analysis----
table_object = interactionR(model.glm, exposure_names = c("alc", "smk"), ci.type = "mover", ci.level = 0.95, em = F, recode = F)
table_object$dframe 
# Measures Estimates       CI.ll      CI.ul
# 1                        OR00 1.0000000          NA         NA
# 2                        OR01 2.9629630   0.6800459 12.9096430
# 3                        OR10 3.3333333   0.7006066 15.8592734
# 4                        OR11 9.0361446   2.6413389 30.9130753
# 5  OR(smk on outcome [alc==0] 2.9629630   0.6800459 12.9096430
# 6  OR(smk on outcome [alc==1] 2.7108434   0.9969750  7.3709689
# 7  OR(alc on outcome [smk==0] 3.3333333   0.7006066 15.8592734
# 8  OR(alc on outcome [smk==1] 3.0496988   1.2948765  7.1826638
# 9        Multiplicative scale 0.9149096   0.1543611  5.4227369
# 10                       RERI 3.7398483 -11.4297248 21.8721579
# 11                         AP 0.4138765  -0.3775073  0.8113231
# 12                         SI 1.8704819   0.6460433  5.4155854# 乘法:
# 饮酒作用:OR10/OR00=3.33
# 吸烟作用:OR01/OR00=2.96
# 烟酒联合作用:OR11/OR00=9.04
# 相乘作用:OR11/(OR01*OR10)=0.9149096(Multiplicative scale)=exp(-0.08893)(alc:smk)=exp(2.2012)/exp(1.0862)/exp(1.2040)
# P interaction= 0.92197(即alc:smk的P值)# 加法:
# 饮酒作用:OR10-OR00=3.33-1=2.33
# 吸烟作用:OR01-OR00=2.96-1=1.96
# 烟酒联合作用:OR11-OR00=8.0361446
# 相加作用:OR11-OR01-OR10+1=9.04-3.33-2.96+1=3.7398483(RERI)## 2) output word----
interactionR_table(table_object) #将分层分析与乘法和加法交互作用的结果输出到Word。## CI estimating methods: 
CI1 <- interactionR_mover(model.glm, exposure_names = c("alc", "smk"), ci.level = 0.95, em = F, recode = F);CI1$dframe
CI2 <- interactionR_delta(model.glm, exposure_names = c("alc", "smk"), ci.level = 0.95, em = F, recode = F);CI2$dframe 
CI3 <- interactionR_boot(model.glm, ci.level = 0.95, em = F, recode = F, seed = 12345, s = 1000);CI3$dframe 
# interactionR_boot() #A fitted model object of class glm. Requires that the two binary exposure variables are listed first in the call formula.

输出到Word中的表格如下:
在这里插入图片描述

参考阅读:
[1] 许敏锐,强德仁,周义红,石素逸,秦晶,陶源.应用R软件进行logistic回归模型的交互作用分析[J].中国卫生统计,2017,34(04):670-672+675.
[2] Babatunde Alli (2021). interactionR: Full Reporting of Interaction Analyses. R package version 0.1.2. https://CRAN.R-project.org/package=interactionR.

这篇关于【交互作用】02. 加法交互 乘法交互 (R包 interactionR)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348484

相关文章

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

MySQL record 02 part

查看已建数据库的基本信息: show CREATE DATABASE mydb; 注意,是DATABASE 不是 DATABASEs, 命令成功执行后,回显的信息有: CREATE DATABASE mydb /*!40100 DEFAULT CHARACTER SET utf8mb3 / /!80016 DEFAULT ENCRYPTION=‘N’ / CREATE DATABASE myd

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

Kubernetes 之 kubelet 与 CRI、CNI 的交互过程

序言 当一个新的 Pod 被提交创建之后,Kubelet、CRI、CNI 这三个组件之间进行了哪些交互? Kubelet -> CRI -> CNI 如上图所示: Kubelet 从 kube-api-server 处监听到有新的 pod 被调度到了自己的节点且需要创建。Kubelet 创建 sandbox 并配置好 Pod 的环境,其中包括: Kubelet 通过 gRPC 调用 C

滚雪球学MyBatis(02):环境搭建

环境搭建 前言 欢迎回到我们的MyBatis系列教程。在上一期中,我们详细介绍了MyBatis的基本概念、特点以及它与其他ORM框架的对比。通过这些内容,大家应该对MyBatis有了初步的了解。今天,我们将从理论走向实践,开始搭建MyBatis的开发环境。了解并掌握环境搭建是使用MyBatis的第一步,也是至关重要的一步。 环境搭建步骤 在开始之前,我们需要准备一些必要的工具和软件,包括J

SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)

上一章讲了 BAPI的概念,以及如何调用SAP里面的既存BAPI。 SAP学习笔记 - 开发01 - BAPI是什么?通过界面和ABAP代码来调用BAPI-CSDN博客 本章继续讲开发相关的内容,主要就是BTP的实际操作流程,比如账号注册,登录,BTP集成开发环境的搭建这方面。 目录 1,账号注册 2,BTP登录URL 3,如何在BTP上进行开发? 以下是详细内容。 1,账