【R实战操作】顶刊都在使用的联合效应分析方法:相加交互分析

牛治平

牛治平

复旦大学公共卫生学院

擅长:流行病与卫生统计、大型公开队列数据挖掘、空气污染等环境暴露评估、新现化合物暴露健康效应分析、系统综述和Meta分析
已关注
关注
2025-07-04 来源:医咖会

当吸烟遇上饮酒,当空气污染叠加遗传易感性,当熬夜撞上高压力,这些危险因素的组合会产生怎样的破坏力?是简单的“1+1=2”,还是更具杀伤力的“1+1>2”?

上一篇文章我们通过研究实例讲解了相加交互分析(顶刊都在使用的联合效应分析方法:相加交互分析),本文将详细介绍如何使用“InteractionR”包进行相加交互效应分析。

1、InteractionR介绍

InteractionR 是一个用于分析交互作用(特别是相加交互作用)的 R 包,广泛应用于流行病学、生物统计学和医学研究。它主要用于计算和评估两个或多个暴露因素对结局变量的联合效应,并提供多种统计指标来量化交互作用。

1. InteractionR包可实现的分析

该程序包严格遵循Knol和Vanderweele提出的报告标准,自动生成包含以下内容的分析表格:

  • 各因素单独作用的 OR 值
  • 联合作用的 OR 值
  • 相乘交互效应:通过回归系数 alc:smk 的显著性判断
  • 相加交互效应指标:相对超额风险(RERI)、归因比例(AP)、协同指数(SI)

图片

2. InteractionR包中三种置信区间计算方法

包中实现了三种计算相加交互作用指标置信区间的方法:

  • Delta法:传统方法,计算简单但性能较差。
  • MOVER法(方差恢复法):利用OR/RR置信区间的不对称性,小样本表现优异。
  • 百分位Bootstrap法:大样本时性能最佳,但小样本可能出现稀疏单元格问题核心指标。

3. InteractionR包用于相加交互效应分析的优势

  • 主函数`interactionR()`接受常规回归模型对象,自动提取所需信息
  • 支持logistic回归、条件logistic回归和Cox模型
  • 提供表格生成函数,一键输出发表级表格
  • 内置数据示例和详细文档,降低学习成本

2、实战演练

案例1:酒精与吸烟对口腔癌的交互作用

使用包中内置的OCdata数据,包含酒精(“alc”)和吸烟(“smk”)这两个暴露变量,以及结果口腔癌(“oc”)这两个二分变量(0 或 1,分别表示不存在或存在)。分析步骤如下:

####相加交互效应模型分析_Zhiping Niu #######
# 首次使用时,安装interactionR程序包
# 注意:如果已安装,可跳过此步骤以避免重复安装
# install.packages() 是R中用于从CRAN安装包的基础函数
install.packages("interactionR")

# 载入interactionR包
# library() 函数用于加载已安装的包,使其功能可用
# 如果安装成功但加载失败,可能是包依赖未满足(如检查是否安装了devtools、ggplot2等)
library(interactionR)

# 拟合含交互项的logistic回归模型
# glm() 是广义线性模型函数,此处用于拟合二分类结局的Logistic回归
# 参数说明:
#   - formula: oc ~ alc*smk 
#     - oc: 二分类结局变量(如疾病发生与否)
#     - alc*smk: 表示包含alc、smk的主效应及其交互项(等价于 alc + smk + alc:smk)
#   - family: binomial(link='logit') 
#     - 指定分布为二项分布,链接函数为logit(即Logistic回归)
#   - data: OCdata 
#     - 指定数据集,需确保变量名与数据框中一致
m <- glm(oc ~ alc*smk, family = binomial(link='logit'), data = OCdata)

# 使用MOVER法进行交互作用分析
# interactionR() 是包的核心函数,用于计算相加交互作用指标
# 参数说明:
#   - model: m 
#     - 上一步拟合的回归模型对象
#   - exposure_names: c("alc", "smk") 
#     - 指定两个暴露变量的名称(顺序会影响结果解释)
#   - ci.type: "mover"
#     - 置信区间计算方法,可选"delta"(默认)、"mover"或"bootstrap"
#     - MOVER法(Method of Variance Estimates Recovery)对小样本更稳健
#   - ci.level: 0.95
#     - 置信区间水平(默认0.95)
#   - em: FALSE 
#     - 是否评估效应修饰(Effect Modification),FALSE表示分析交互作用
#   - recode: FALSE 
#     - 是否自动重新编码保护性因素(FALSE保持原始编码)
table_object <- interactionR(m, 
                           exposure_names = c("alc", "smk"), 
                           ci.type = "mover",
                           ci.level = 0.95,
                           em = FALSE, 
                           recode = FALSE)

# 生成发表级表格
# interactionR_table() 将结果输出为Word格式的表格(默认保存到工作目录)
# 输出内容:
#   - 暴露单独/联合的OR值及置信区间
#   - 相加交互作用指标(RERI、AP、SI)及置信区间
#   - 交互作用的统计学显著性
# 注意:
#   - 表格会自动保存为"interactionR_table.docx"
#   - 可通过参数调整格式(如filename修改路径,title修改标题)
interactionR_table(table_object)

图片

结果表格清晰展示了:

  • 饮酒(alc)的单独效应:OR=3.33(95% CI: 0.7, 15.86),表明饮酒可能增加口腔癌风险,但OR置信区间包含1,表明不具有统计学显著性。
  • 吸烟(smk)的单独效应:OR=2.96(95% CI: 0.68, 12.91),吸烟可能增加口腔癌风险,但OR置信区间包含1,表明不具有统计学显著性。
  • 饮酒(alc)和吸烟(smk)联合效应:OR=9.04(95% CI: 2.64, 30.91),远高于单独暴露的效应,表明两者可能存在协同作用,且OR置信区间不包含1,表明具有统计学显著性。
  • 交互作用分析:
  • 相加交互(RERI):3.74(95% CI: -11.43, 21.87),点估计显示正向交互,但置信区间包含0,统计不显著。

案例2:运动与吸烟对腰椎间盘突出的影响

使用包中内置的HDiscdat数据,包含运动参与(“ns”)和吸烟(“smk”)这两个暴露变量,以及结果腰椎间盘突出(“h”)。以上三个变量均为二分类变量(0 或 1,分别表示不存在或存在)。

展示bootstrap法的应用:

# 拟合含交互项的logistic回归模型
# 使用glm()函数拟合模型,其中:
# - h: 二分类结局变量(如疾病发生与否)
# - ns*smk: 表示包含ns、smk的主效应及其交互项(等价于 ns + smk + ns:smk)
# - family=binomial(link='logit'): 指定使用logistic回归
# - data=HDiscdata: 指定使用的数据集
m2 <- glm(h ~ ns*smk, family=binomial(link='logit'), data=HDiscdata)

# 使用bootstrap法进行交互作用分析(1000次重复)
# interactionR_boot()是interactionR包中专门用于bootstrap分析交互作用的函数
# 参数说明:
#   - model: m2 - 上一步拟合的回归模型对象
#   - ci.level=0.95 - 置信区间水平(默认0.95)
#   - em=FALSE - 不评估效应修饰(Effect Modification),而是分析交互作用
#   - recode=FALSE - 不重新编码保护性因素
#   - seed=12345 - 设置随机种子以保证结果可重复
#   - s=1000 - 指定bootstrap重复次数为1000次
# 注意:
#   - bootstrap法计算量较大,重复次数越多结果越稳定但耗时越长
#   - 建议在正式分析前测试较小次数(如100次)检查代码是否正确
table_object2 <- interactionR_boot(m2, 
                                 ci.level=0.95, 
                                 em=FALSE,
                                 recode=FALSE,
                                 seed=12345, 
                                 s=1000)

图片

结果表格清晰展示了:

  • 不运动(ns)的单独效应:OR=2.38(95% CI: 1.27, 4.46),显著增加腰椎间盘突出风险。
  • 吸烟(smk)的单独效应:OR=1.88(95% CI: 1.29, 2.73),同样显著增加风险。
  • 不运动(ns)和吸烟(smk)联合效应:OR=1.98(95% CI: 1.12, 3.48),与单独吸烟的效应接近,但低于单独不运动的效应。
  • 交互作用分析:
  • -1.28(95% CI: -3.63, 0.54),点估计为负值,提示可能的拮抗作用(但统计不显著)。
评论
请先登录后再发表评论
发表评论
使用课程券需先认证
为保证平台的学术氛围,请先完成认证,认证可享受以下权益
基础课程券2张
200积分
确认
取消
下载附件需认证
为保证平台的学术氛围,请先完成认证,认证可享受以下权益
基础课程券2张
200积分
确认
取消
APP下载 领课程券
扫码下载APP
领基础课程券
公众号
统计咨询
扫一扫添加小咖个人微信,立即咨询统计分析服务!
会员服务
SCI-AI工具
积分商城
意见反馈