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

使用add_global_p的anova_fun参数遇错,需适配clm模型ANOVA方法

问题描述

在使用gtsummary::tbl_uvregression()或tbl_regression()生成统计表格时,尝试通过add_global_p()的anova_fun参数传入car::Anova()或RVAideMemoire::Anova.clm()计算ANOVA全局p值,却报错提示“mod(模型)参数未指定且无默认值”。即使直接传入car::Anova()也会触发该错误,同时需要找到为clmm模型的tbl_uvregression对象添加ANOVA全局p值的简便方法。

解决方案

1. 解决glm模型的car::Anova()报错问题

add_global_p()要求anova_fun返回的结果必须包含p.value列,且函数需仅接收模型作为参数。直接传入car::Anova()会因参数传递方式不符合要求报错,需用匿名函数包装,同时指定ANOVA类型(如type="III",可根据需求调整):

# 加载依赖包
library(survival)
library(gtsummary)
library(car)

# 构建tbl_uvregression表格
tab <- trial %>% 
  select(response, age, trt) %>%
  tbl_uvregression(method = glm,
                   method.args = list(family = binomial),
                   y = response,
                   exponentiate = TRUE) 

# 添加全局p值:用匿名函数包装car::Anova
tab %>%
  add_global_p(anova_fun = function(x) car::Anova(x, type = "III"))

# tbl_regression示例
trial %>% 
  glm(response ~ age + trt, data = ., family = binomial("logit")) %>%
  tbl_regression(exponentiate = TRUE) %>%
  add_global_p(anova_fun = function(x) car::Anova(x, type = "III"))

2. 为clmm模型的tbl_uvregression添加ANOVA全局p值

针对ordinal::clmm模型,使用RVAideMemoire::Anova.clm()时,同样用匿名函数包装,确保函数仅接收模型参数并返回符合要求的结果:

# 加载依赖包
library(gtsummary)
library(ordinal)
library(RVAideMemoire)

# 构建clmm模型的tbl_uvregression表格
clmm_tab <- trial %>% 
  # 将因变量转为有序因子(clmm模型要求)
  mutate(response = factor(response, ordered = TRUE)) %>%
  select(response, age, trt) %>%
  tbl_uvregression(method = clmm,
                   y = response,
                   exponentiate = TRUE) 

# 添加全局p值:用匿名函数包装Anova.clm
clmm_tab %>%
  add_global_p(anova_fun = function(x) RVAideMemoire::Anova.clm(x))

原理说明

匿名函数的作用是统一参数传递逻辑:让anova_fun仅接收模型作为唯一输入参数,同时为car::Anova()或Anova.clm()传递必要的额外参数,确保返回结果包含add_global_p()所需的p.value列,避免参数不匹配的报错。

内容的提问来源于stack exchange,提问作者Clément Mertens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:25:47