如何在modelsummary输出表格中添加glmer模型的组数信息?
为glmer模型的modelsummary表格添加组数信息
当使用modelsummary为lme4::glmer拟合的多水平逻辑回归模型生成表格时,若需要添加组数信息(该信息可从summary(model)中获取,但无法通过get_gof(model)直接提取),可以通过以下两种方式实现:
方法1:使用add_rows手动添加
直接从模型结果中提取组数,再通过add_rows参数将该行信息插入表格的拟合优度区域:
# 加载所需包 library(lme4) library(modelsummary) # 加载数据集并构造二分类因变量 data(sleepstudy) sleepstudy$binary_outcome <- ifelse(sleepstudy$Reaction > median(sleepstudy$Reaction), 1, 0) # 拟合多水平逻辑回归模型 model <- glmer(binary_outcome ~ Days + (1 | Subject), data = sleepstudy, family = binomial()) # 从模型摘要中提取组数 num_groups <- summary(model)$ngrps # 构造要添加的行数据 add_row <- data.frame( term = "Number of groups:", model = num_groups, check.names = FALSE ) # 生成带组数信息的表格 modelsummary(model, output = "table.docx", title = 'Table 1', exponentiate = TRUE, stars = TRUE, add_rows = add_row)
方法2:自定义拟合优度函数
定义一个自定义函数,让modelsummary自动将组数纳入拟合优度统计量区域,同时可保留默认的拟合优度指标:
# 加载所需包 library(lme4) library(modelsummary) # 加载数据集并构造二分类因变量 data(sleepstudy) sleepstudy$binary_outcome <- ifelse(sleepstudy$Reaction > median(sleepstudy$Reaction), 1, 0) # 拟合多水平逻辑回归模型 model <- glmer(binary_outcome ~ Days + (1 | Subject), data = sleepstudy, family = binomial()) # 自定义GOF函数:合并默认拟合优度指标+组数信息 custom_gof <- function(x) { # 获取默认拟合优度统计量 default_gof <- get_gof(x) # 构造组数统计量 group_gof <- data.frame( term = "Number of groups:", value = summary(x)$ngrps, row.names = NULL ) # 合并后返回 out <- rbind(default_gof, group_gof) return(out) } # 生成表格,调用自定义GOF函数 modelsummary(model, output = "table.docx", title = 'Table 1', exponentiate = TRUE, stars = TRUE, gof_fun = custom_gof)
内容的提问来源于stack exchange,提问作者flxflks
相关产品推荐
相关产品推荐

