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

含二次项时,如何用emtrends获取Side因子的二次趋势差异?

问题

我希望以Age为自变量对响应变量RV建立模型,并引入了二次项。通常仅含线性项时,我会使用emmeans包的emtrends()函数获取因子Side两个水平的趋势差异。请问当模型中包含二次项I(Age^2)时,如何计算趋势差异?emtrends()能否实现该需求?

构建的模型及方差分析结果

> mod.quadra<-lmer(RV~Side*(Age + I(Age^2))+(1|ID),data)
> Anova(mod.quadra)
                      Chisq Df Pr(&gt;Chisq)    
Side                2.0791  1  0.1493267    
Age                 12.0248  1  0.0005250 ***
I(Age^2)            10.9917  1  0.0009152 ***
Side:Age            1.8857  1  0.1696876    
Side:I(Age^2)       2.0099  1  0.1562804   

仅含线性项时的操作流程

> mtrend<-emtrends(LM.fit, "Side", var = "Age")

 Side       Age.trend    SE  df lower.CL upper.CL
 contra          1.03 0.648 159   -0.251     2.31
 ipsi            2.03 0.648 159    0.755     3.31

> pairs(mtrend)
 contrast      estimate    SE  df t.ratio p.value
 contra - ipsi    -1.01 0.891 149  -1.129  0.2606
解决方案

emtrends()完全可以处理带二次项的模型,核心是理解:二次模型中,响应变量对Age的趋势(即瞬时斜率)是随Age取值变化的线性函数,因此需要指定具体的Age值来计算趋势,再比较Side水平间的差异。

1. 计算指定Age值处的趋势

二次模型的趋势公式为:
$\text{趋势} = \beta_{\text{Age}} + 2\beta_{\text{I(Age^2)}} \times \text{Age} + \beta_{\text{Side:Age}} \times \text{Side} + 2\beta_{\text{Side:I(Age^2)}} \times \text{Side} \times \text{Age}$

使用emtrends()时,通过at参数指定要计算趋势的Age值(比如均值、中位数或业务上感兴趣的关键点):

# 计算Age的均值作为参考点
age_mean <- mean(data$Age, na.rm = TRUE)
# 获取Side各水平在Age均值处的趋势
quad_trend <- emtrends(mod.quadra, "Side", var = "Age", at = list(Age = age_mean))

运行后会输出每个Side水平在指定Age处的瞬时趋势、标准误、置信区间等结果。

2. 比较Side水平间的趋势差异

和线性模型的操作一致,直接对emtrends()的结果调用pairs(),就能得到两个Side水平在指定Age处的趋势差异及显著性:

pairs(quad_trend)

3. 可选:在多个Age值处分析趋势差异

如果想观察趋势差异随Age的变化规律,可以指定多个Age值(比如分位数):

# 取Age的25%、50%、75%分位数
age_vals <- quantile(data$Age, c(0.25, 0.5, 0.75), na.rm = TRUE)
# 计算多个Age值下的趋势
quad_trends_multi <- emtrends(mod.quadra, "Side", var = "Age", at = list(Age = age_vals))
# 查看所有结果
quad_trends_multi
# 按Age分组比较Side的趋势差异
pairs(quad_trends_multi, by = "Age")

注意事项

  • 二次模型的趋势依赖于Age的具体取值,不像线性模型中趋势是恒定的,因此必须指定Age值才能得到有意义的趋势估计。
  • 从你的方差分析结果来看,Side:Age和Side:I(Age^2)交互项均无显著性,说明两个Side水平的趋势随Age的变化模式没有显著差异,但仍可按上述方法计算特定Age处的趋势差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:10:42