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

如何让tbl_regression输出II型平方和并自定义输出参数?

问题

尝试通过II型和III型平方和两种方式获取回归分析结果,发现tbl_regression()仅输出III型平方和的估计结果。请问能否手动设置type = "II"参数并指定car::Anova函数?同时需要示例代码,学习如何手动设置tbl_regression的输出参数。

附原始测试代码:

n <- 50
set.seed(42)
df <- data.frame(
  id = c(1:n*2,
         1:n*2),
  time = c(rep("t_0", n*2),
            rep("t_6", n*2)),
  group = c(rep("trt", n),
                rep("ctrl", n),
                rep("trt", n),
                rep("ctrl", n)),
  value = c(rnorm(n,20,5),
            rnorm(n,20,5),
            rnorm(n,50,5),
            rnorm(n,30,5))
)
fit <- lm (value ~ group*time, df)
tbl_regression(fit,
               pvalue_fun = label_style_pvalue(digits = 3),
               show_single_row = everything(),
               method.args = list(type = "II")) %>%
  bold_p(t = 0.05, q = FALSE) %>%
  bold_labels() %>%
  as_gt() %>%
  tab_options(row.striping.include_table_body = TRUE)
解答

可以通过tbl_regression()的anova_fun参数指定使用car::Anova函数,并结合method.args传递type = "II"参数来输出II型平方和结果。关键修改点如下:

  • 添加anova_fun = car::Anova:明确指定用car包的Anova函数计算平方和(默认函数不识别type参数)
  • 保留method.args = list(type = "II"):向指定的Anova函数传递II型平方和的计算参数

修改后的完整示例代码:

library(gtsummary)
library(car)
library(gt)

n <- 50
set.seed(42)
df <- data.frame(
  id = c(1:n*2,
         1:n*2),
  time = c(rep("t_0", n*2),
            rep("t_6", n*2)),
  group = c(rep("trt", n),
                rep("ctrl", n),
                rep("trt", n),
                rep("ctrl", n)),
  value = c(rnorm(n,20,5),
            rnorm(n,20,5),
            rnorm(n,50,5),
            rnorm(n,30,5))
)
fit <- lm(value ~ group*time, df)

# 输出II型平方和结果
tbl_regression(fit,
               pvalue_fun = label_style_pvalue(digits = 3),
               show_single_row = everything(),
               anova_fun = car::Anova,  # 指定car包的Anova函数
               method.args = list(type = "II")) %>%  # 设置II型平方和
  bold_p(t = 0.05, q = FALSE) %>%
  bold_labels() %>%
  as_gt() %>%
  tab_options(row.striping.include_table_body = TRUE)

# 若需切换回III型平方和,仅修改type参数即可
# tbl_regression(fit,
#                pvalue_fun = label_style_pvalue(digits = 3),
#                show_single_row = everything(),
#                anova_fun = car::Anova,
#                method.args = list(type = "III")) %>%
#   bold_p(t = 0.05, q = FALSE) %>%
#   bold_labels() %>%
#   as_gt() %>%
#   tab_options(row.striping.include_table_body = TRUE)

关键参数说明

  • anova_fun:用于自定义计算方差分析统计量的函数,这里指定car::Anova以支持II/III型平方和的计算
  • method.args:传递给anova_fun的额外参数,通过list(type = "II")指定计算II型平方和
  • 其他参数(如pvalue_fun、bold_p等)保持原逻辑,用于调整表格的显示样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:46:00