吸烟与肺癌关联分析:酒精作为效应修饰符时的模型调整vs分层选择
问题:交互作用分析中两种分层方法的选择困惑
我希望展示纳入自变量交互作用的分析结果,了解到当交互作用显著或基于研究问题需考虑时需进行分层,但对两种分析方法的差异存在困惑。以酒精作为吸烟与肺癌关系的效应修饰符为例,我设计了两种分析流程:
Analysis 1
先拟合包含交互项的全样本模型:
library(rms) model <- lrm(lung_cancer ~ age + physical_activity + smoking * alcohol, data=data)
随后按酒精状态展示OR值:
summary(model, alcohol="Yes") summary(model, alcohol="No")
Analysis 2
同样先拟合包含交互项的全样本模型:
library(rms) model <- lrm(lung_cancer ~ age + physical_activity + smoking * alcohol, data=data)
随后基于研究目的,无论交互作用是否显著,按酒精摄入状态分层样本:
library(tidyverse) data1 <- data %>% filter(alcohol=="Yes") data0 <- data %>% filter(alcohol=="No")
再为每个分层拟合模型并解读组内OR值:
model1 <- lrm(lung_cancer ~ age + physical_activity + smoking, data=data1) summary(model1) model0 <- lrm(lung_cancer ~ age + physical_activity + smoking, data=data0)
两种分析结果相似,仅酒精摄入组中吸烟的OR值显著,请问一般应采用哪种做法?
分析与建议
两种方法的核心差异
- Analysis 1:基于全样本的统一模型(包含交互项),分层的OR值是通过模型预测得到的——所有协变量(年龄、体力活动)的校正效应基于全样本估计,仅针对不同酒精状态计算吸烟的效应。这种方法保留了全样本信息,估计精度更高,还能直接对吸烟与酒精的交互项做显著性检验,判断酒精是否为效应修饰符。
- Analysis 2:直接分层后独立拟合模型,每个模型的所有参数(包括协变量的效应)都基于该层样本单独估计。这种做法相当于默认所有协变量与酒精都存在交互,不再受全样本模型约束,但分层后样本量减小可能导致估计不稳定,尤其是样本量较小时。
选择建议
- 如果核心目标是检验酒精是否是吸烟与肺癌关系的效应修饰符,优先用Analysis 1:它能直接给出交互作用的统计检验结果,且分层的OR值基于统一校正框架,更适合组间效应比较,也避免了分层带来的样本量损耗。
- 如果研究目的是分别描述不同酒精摄入人群中吸烟对肺癌的独立影响,且分层后每组样本量足够支撑模型拟合(比如每组有数百例以上),可以用Analysis 2,但要注意:此时你是在允许所有协变量的效应在两组间不同,这和仅关注吸烟-酒精交互的假设不同。
- 从你的结果来看,两种方法结果相似,说明协变量的效应在两组中差异不大,这种情况下Analysis 1是更高效、严谨的选择——它利用全样本信息,估计更可靠,还能明确交互作用的显著性,帮你更清晰地解释结果。
内容的提问来源于stack exchange,提问作者Stats_Beginner
相关产品推荐
相关产品推荐

