求助:如何在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
相关产品推荐
相关产品推荐

