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

如何在R的lm()或glmmTMB()模型输出中保留未用作因子的变量

在glmmTMB模型的emmeans结果中保留分组关联的额外变量

问题背景

需要在使用glmmTMB拟合模型后,让emmeans输出结果自动携带输入数据框中与分组变量(如示例中的b)一一对应的额外变量(如country、Solvent_ref)。这些变量无需纳入模型公式,但同一分组下的变量值完全一致。

示例数据

df <- data.frame(a = c(1,2,3,4,5,6,1,2,3), 
                 b = c("A", "B", "C","A", "B", "C","A", "B", "C" ), 
                 country = c("Malawi", "Malawi","UK", "Malawi"),
                 Solvent_ref = c("DMSO", "DMSO", "H2O")
)

注:同一b值对应的country、Solvent_ref变量值完全一致。

当前代码及结果

运行以下代码后,emmean_df丢失了country和Solvent_ref变量:

library(glmmTMB)
library(emmeans)

model = glmmTMB(a~b, data = df)

emmean_df = as.data.frame(emmeans(model,
                                  type = "response",
                                  specs = ~ b))

输出结果:

> emmean_df
  b   emmean        SE df    lower.CL upper.CL
1 A 1.999998 0.8164967  5 -0.09887403 4.098869
2 B 2.999995 0.8164967  5  0.90112308 5.098866
3 C 4.000004 0.8164967  5  1.90113222 6.098876

期望输出

b   emmean        SE df    lower.CL upper.CL country Solvent_ref
1 A 1.999998 0.8164967  5 -0.09887403 4.098869  Malawi        DMSO
2 B 2.999995 0.8164967  5  0.90112308 5.098866  Malawi        DMSO
3 C 4.000004 0.8164967  5  1.90113222 6.098876      UK         H2O

解决方案

方法1:分组汇总后关联(最稳妥通用)

先按分组变量b对原数据汇总,提取每个分组对应的唯一额外变量值,再通过left_join合并到emmeans结果中:

library(dplyr)

# 生成分组-额外变量映射表
df_summary <- df %>%
  group_by(b) %>%
  summarise(
    country = unique(country),
    Solvent_ref = unique(Solvent_ref),
    .groups = "drop"  # 取消分组状态
  )

# 合并结果
emmean_df <- emmean_df %>%
  left_join(df_summary, by = "b")

方法2:将额外变量纳入模型(间接保留)

如果希望模型数据中直接携带这些变量,可以将它们以共线性形式纳入模型公式(因为同一b下变量值唯一,不会影响模型拟合结果),之后再关联:

# 纳入额外变量(共线性,模型不会估计其效应)
model <- glmmTMB(a ~ b + country + Solvent_ref, data = df)

# 生成emmeans结果并关联原始变量
emm <- emmeans(model, ~ b, type = "response")
emmean_df <- as.data.frame(emm) %>%
  left_join(unique(df[, c("b", "country", "Solvent_ref")]), by = "b")

注:此方法本质仍需关联数据,但模型的fit$model会保留额外变量,适合需要从模型对象直接提取相关信息的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:54:55