使用gtsummary提取lme随机截距模型p值报错求助
解决gtsummary中添加lme随机截距模型p值的报错问题
错误原因
- 自定义统计函数参数不符合gtsummary的
add_p接口要求,group并非默认传递的参数 - 直接使用
variable ~ by无法正确解析为公式,需动态生成 - 未从模型tidy结果中提取符合要求的单一p值,返回结构不符合gtsummary预期
修正后的代码
自定义lme统计函数
lme_stat_function <- function(data, variable, by, ...) { # 动态构建模型公式:因变量 ~ 分组变量 formula <- reformulate(termlabels = by, response = variable) # 拟合随机截距模型 model <- nlme::lme(formula, random = ~1|ID, na.action = na.omit, data = data) # 提取并返回分组变量对应的p值 broom.mixed::tidy(model) %>% dplyr::filter(term == by) %>% dplyr::pull(p.value) }
完整表格生成代码
# 指定连续变量使用自定义lme检验 lme_stat_render <- list( all_continuous() ~ "lme_stat_function" ) study_dat %>% select(ID, Study_Group, Variable1) %>% tbl_summary( by = Study_Group, type = list(where(is.numeric) ~ "continuous2") ) %>% bold_labels() %>% italicize_levels() %>% add_p(test = lme_stat_render)
关键修正点
- 移除无效的
group参数,直接在模型中指定ID作为重复测量的分组标识 - 用
reformulate动态生成公式,解决变量名解析问题 - 从tidy结果中筛选出分组变量的p值并返回单一数值,匹配
add_p对自定义检验的输出要求
内容的提问来源于stack exchange,提问作者Carson Keeter
相关产品推荐
相关产品推荐

