## 原文首发在丁香园 ##
前些日子,有师妹问我logistic模型中分类自变量的相加交互作用怎么检验,经过一番学习和探索,学到了很多。
logistic模型中的交互作用可分为相加和相乘两类,相乘交互作用可通过建立相乘项(如i.A#i.B、A*B等)并纳入模型予以探究,但相加作用的探究便没有这么便利了,需要计算相对超危险度比(RERI)、归因比(AP)和交互作用指数(S)。若RERI和AP的置信区间跨0,S的置信区间跨1,那表示无相加交互作用。本贴主要展示如何通过R语言探究二元logistic模型中分类自变量的相加交互作用(原理和公式就不多说了……主要是我也说不清楚,大家还是看资料吧),文末附上几篇文献,希望能对大家有所帮助。
先说一下用到的程序包“epiR”,该程序包的“epi.interaction”可以实现相加交互作用的检验。下面介绍一下数据情况,Disease是二分类因变量(某慢性病的状态:有和无),Smoking和History为二分类自变量(假设为是否吸烟、是否有家族史)。多的不说,直接上代码。有问题的地方,还望各位站友多多指教。
## 加载程序包
library(epiR)
library(openxlsx)
##载入数据
dat<-read.xlsx("data.xlsx",sheet =1)
##建立交互项
dat$inter <- ifelse(
dat$Smoking == '0' & dat$History =='0', 'S0H0',
ifelse(dat$Smoking == '0'&dat $ History == '1', 'S0H1',
ifelse(dat$Smoking == '1' & dat$History == '0', 'S1H0', 'S1H1')))
##建立二元logistic模型
fit <- glm(Disease ~ inter, family = binomial, data = dat)
#如果有其他协变量也可以一起纳入模型
#fit <- glm(Disease ~ inter +X1+X2, family = binomial, data = dat)
summary(fit)

## 计算RERI、AP、S三个指标
epi.interaction(model = fit, coef = c(2,3,4), type = "RERI", param = "dummy", conf.level = 0.95)
epi.interaction(model = fit, coef = c(2,3,4), type = "APAB", param="dummy", conf.level = 0.95)
epi.interaction(model = fit, coef = c(2,3,4), type = "S", param = "dummy", conf.level = 0.95)

文献
1. 聂志强,欧艳秋,庄建,曲艳吉,麦劲壮,陈寄梅,刘小清.实现logistic与Cox回归相乘相加交互作用的临床实践宏程序[J].中华流行病学杂志,2016,37(5):737-740.
2. 邱宏,余德新,谢立亚,王晓蓉,付振明.Logistic回归模型中连续变量交互作用的分析[J].中华流行病学杂志,2010,31(7):812-814.
3. 许敏锐, 强德仁, 周义红,等. 应用R软件进行logistic回归模型的交互作用分析[J]. 中国卫生统计, 2017, 034(004):670-672,675.
4. 袁悦,李楠,任爱国, 等.流行病学研究中相加和相乘尺度交互作用的分析[J].现代预防医学,2015,42(6):961-965,975.
5. 麦子. 1+1大于2是怎么回事?来个相加交互模型看看 [EB/OL]. https://www.sohu.com/a/155275085_170798, 2017-07-07/2020-05-09.
前些日子,有师妹问我logistic模型中分类自变量的相加交互作用怎么检验,经过一番学习和探索,学到了很多。
logistic模型中的交互作用可分为相加和相乘两类,相乘交互作用可通过建立相乘项(如i.A#i.B、A*B等)并纳入模型予以探究,但相加作用的探究便没有这么便利了,需要计算相对超危险度比(RERI)、归因比(AP)和交互作用指数(S)。若RERI和AP的置信区间跨0,S的置信区间跨1,那表示无相加交互作用。本贴主要展示如何通过R语言探究二元logistic模型中分类自变量的相加交互作用(原理和公式就不多说了……主要是我也说不清楚,大家还是看资料吧),文末附上几篇文献,希望能对大家有所帮助。
先说一下用到的程序包“epiR”,该程序包的“epi.interaction”可以实现相加交互作用的检验。下面介绍一下数据情况,Disease是二分类因变量(某慢性病的状态:有和无),Smoking和History为二分类自变量(假设为是否吸烟、是否有家族史)。多的不说,直接上代码。有问题的地方,还望各位站友多多指教。
## 加载程序包
library(epiR)
library(openxlsx)
##载入数据
dat<-read.xlsx("data.xlsx",sheet =1)
##建立交互项
dat$inter <- ifelse(
dat$Smoking == '0' & dat$History =='0', 'S0H0',
ifelse(dat$Smoking == '0'&dat $ History == '1', 'S0H1',
ifelse(dat$Smoking == '1' & dat$History == '0', 'S1H0', 'S1H1')))
##建立二元logistic模型
fit <- glm(Disease ~ inter, family = binomial, data = dat)
#如果有其他协变量也可以一起纳入模型
#fit <- glm(Disease ~ inter +X1+X2, family = binomial, data = dat)
summary(fit)

## 计算RERI、AP、S三个指标
epi.interaction(model = fit, coef = c(2,3,4), type = "RERI", param = "dummy", conf.level = 0.95)
epi.interaction(model = fit, coef = c(2,3,4), type = "APAB", param="dummy", conf.level = 0.95)
epi.interaction(model = fit, coef = c(2,3,4), type = "S", param = "dummy", conf.level = 0.95)

文献
1. 聂志强,欧艳秋,庄建,曲艳吉,麦劲壮,陈寄梅,刘小清.实现logistic与Cox回归相乘相加交互作用的临床实践宏程序[J].中华流行病学杂志,2016,37(5):737-740.
2. 邱宏,余德新,谢立亚,王晓蓉,付振明.Logistic回归模型中连续变量交互作用的分析[J].中华流行病学杂志,2010,31(7):812-814.
3. 许敏锐, 强德仁, 周义红,等. 应用R软件进行logistic回归模型的交互作用分析[J]. 中国卫生统计, 2017, 034(004):670-672,675.
4. 袁悦,李楠,任爱国, 等.流行病学研究中相加和相乘尺度交互作用的分析[J].现代预防医学,2015,42(6):961-965,975.
5. 麦子. 1+1大于2是怎么回事?来个相加交互模型看看 [EB/OL]. https://www.sohu.com/a/155275085_170798, 2017-07-07/2020-05-09.