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

求助:如何在nlme::lme模型中使用tbl_regression?解决报错问题

解决nlme::lme模型使用tbl_regression的报错问题

你遇到的报错本质是gtsummary::tbl_regression默认处理nlme::lme模型时,没有正确调用适配的tidy方法,导致后续变量识别等步骤出错。以下是具体的解决方法:

步骤1:加载必要依赖包

首先要加载处理混合效应模型和生成汇总表所需的包,其中broom.mixed是专门用来整理混合效应模型结果的关键包:

library(nlme)
library(gtsummary)
library(broom.mixed)
library(dplyr)

步骤2:拟合lme模型(保留你的原有代码)

storms_lme <- lme(wind ~ 1 + year,  random = ~ 1 | name, data = storms, method='ML', control = lmeControl(opt = "optim"))

步骤3:正确调用tbl_regression

核心是通过tidy_fun参数指定用broom.mixed::tidy来整理模型结果,同时明确提取固定效应:

# 生成固定效应的汇总表
tbl_regression(
  storms_lme,
  tidy_fun = ~broom.mixed::tidy(.x, effects = "fixed"),
  include = c(year, `(Intercept)`), # 可选,指定要展示的变量,默认包含所有固定效应
  variable_labels = list(year = "年份", `(Intercept)` = "截距") # 可选,自定义变量显示标签
)

报错原因说明

  • 第一次直接调用tbl_regression(storms_lme)时,gtsummary默认用broom::tidy处理模型,但该方法不支持lme类对象,导致tidy结果为NULL,进而触发filter方法的报错。
  • 第二次尝试错误地将broom.mixed::tidy的结果直接传入函数,而tbl_regression的参数要求是模型对象,需通过tidy_fun指定整理函数,而非直接传入整理后的结果。

扩展:展示随机效应

如果需要同时展示随机效应的结果,可以用tbl_merge合并固定效应和随机效应的汇总表:

# 生成随机效应汇总表
tbl_random <- tbl_regression(
  storms_lme,
  tidy_fun = ~broom.mixed::tidy(.x, effects = "ran_pars"),
  variable_labels = list(`(Intercept)` = "随机截距方差")
)

# 合并两张表
tbl_merge(
  list(tbl_regression(storms_lme, tidy_fun = ~broom.mixed::tidy(.x, effects = "fixed")), tbl_random),
  tab_spanner = c("**固定效应**", "**随机效应**")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:02:40