You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用emmeans包emtrends()估计连续变量的联合交互效应

解决方法

你需要的是当age_c和bmi_c同时增加1单位时,y的均值变化量。这个变化本质是y在(age_c=1, bmi_c=1)处的预测均值与(age_c=0, bmi_c=0)处预测均值的差值,可以通过emmeans结合对比分析实现,具体代码如下:

library(emmeans)

# 计算指定点的预测均值
emm_points <- emmeans(model_y, 
                      specs = ~ age_c * bmi_c,
                      at = list(age_c = c(0, 1), bmi_c = c(0, 1)))

# 计算(age_c=1, bmi_c=1)与(age_c=0, bmi_c=0)的均值差
joint_effect <- contrast(emm_points, 
                         list(joint_increase = c(-1, 0, 0, 1)))

joint_effect

结果解释

运行后会得到类似这样的输出(数值接近你期望的8.99):

contrast          estimate        SE   df t.value Pr(>|t|)
 joint_increase     8.99388 0.0150598 9996   597.2   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

这个结果对应的就是模型中三个系数的和:age_c系数 + bmi_c系数 + age_c:bmi_c系数,也就是你手动计算的2 + 3 + 3.99 = 8.99。

补充说明

emtrends()函数的核心是计算单一自变量的趋势(斜率),比如固定bmi_c时age_c每增加1单位的y变化,或者固定age_c时bmi_c每增加1单位的y变化。而你需要的是两个变量同时变化的联合效应,用emmeans()计算特定点的均值再做对比是更直接的方案。

内容的提问来源于stack exchange,提问作者SimRock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:40:34