如何在gtsummary和sjPlot中为交互项添加参考水平及解读
解决交互项参考水平显示问题(gtsummary & sjPlot)
用gtsummary显式展示交互项参考水平
默认gtsummary的回归表会隐藏分类变量的参考水平,包括交互项的基准组合。只需在tbl_regression()中设置show_reference_rows = TRUE,就能把所有参考水平(包括交互项的基准组合)显式列出来。
示例代码:
library(gtsummary) # 构造带分类变量的示例数据 mtcars$am <- factor(mtcars$am, levels = c(0,1), labels = c("自动挡", "手动挡")) mtcars$cyl <- factor(mtcars$cyl, levels = c(4,6,8), labels = c("4缸", "6缸", "8缸")) # 拟合带交互项的线性回归 model <- lm(mpg ~ am * cyl, data = mtcars) # 生成带参考水平的汇总表 tbl_regression(model, show_reference_rows = TRUE) %>% modify_header(label = "**变量**") %>% modify_caption("含交互项参考水平的线性回归汇总表")
执行后,表格会把am=自动挡 + cyl=4缸这个交互项的基准组合单独列出,标注为「Reference」,系数显示为0,明确展示参考水平的位置。
用sjPlot显式展示交互项参考水平
sjPlot的tab_model()同样默认隐藏参考水平,通过show.reference = TRUE参数可以强制显示,再配合interaction.style调整交互项的展示形式:
示例代码:
library(sjPlot) # 生成带参考水平的交互项回归表 tab_model(model, show.reference = TRUE, interaction.style = "full", # 同时展示主效应和交互项的所有水平 title = "含交互项参考水平的线性回归表", dv.labels = "燃油效率(mpg)", string.ref = "参考水平")
interaction.style = "only"会只展示交互项的各组合,"full"则会同时显示主效应和交互项的所有水平,按需选择即可。
交互效应的统计显著性解读
- 显著交互项(P < 0.05):说明两个变量对因变量的影响不是独立的——一个变量的效应强度/方向会随着另一个变量的水平变化而改变。比如上面的例子,如果
am*cyl的P值显著,就不能笼统说「手动挡比自动挡省油」,必须结合气缸数:可能4缸手动挡比自动挡省油很多,但8缸手动挡和自动挡的油耗差异极小甚至相反。 - 不显著交互项(P ≥ 0.05):说明两个变量的效应是独立的,直接解读各自的主效应即可,无需考虑变量间的联动影响。
自定义表格样式(以gtsummary为例)
如果要贴合你期望的样式(比如把参考水平标斜体、隐藏冗余列),可以用modify_*系列函数定制:
tbl_regression(model, show_reference_rows = TRUE) %>% modify_column_hide(std.error) %>% # 隐藏标准误列 modify_column_order(c(label, estimate, p.value)) %>% modify_rows( rows = reference_row == TRUE, update = list(estimate = "参考水平", p.value = "-") ) %>% modify_styling( rows = reference_row == TRUE, text_style = "italic" ) %>% modify_caption("自定义样式的交互项回归表")
内容的提问来源于stack exchange,提问作者Andrzej Andrzej
相关产品推荐
相关产品推荐

