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

使用tbl_summary()函数时卡方检验报错的原因及解决方案

错误含义及解决方法

错误拆解与含义

  1. 卡方检验近似警告
    卡方检验的核心前提是列联表中每个单元格的期望频数≥5,你的Mar变量(婚姻状态)在exposure分组下,存在至少一个单元格的期望频数远小于5,导致卡方分布的近似结果不可靠,因此抛出该警告。

  2. s$close()非函数错误
    这个错误大概率是gt包在生成或保存表格时的兼容性/对象异常问题:可能是gt版本过低导致的方法bug,也可能是前面的tbl_summary生成的表格对象存在异常,或者目标保存路径不存在、文件名有问题。

解决步骤

处理卡方检验警告

针对Mar变量的稀疏单元格问题,有三种可行方案:

  • 方案1:改用Fisher精确检验
    在add_p中为Mar单独指定检验方法,替代默认的卡方检验:
    add_p(test = list(all_continuous() ~ "kruskal.test",
                      all_categorical() ~ "chisq.test",
                      Mar ~ "fisher.test"))
    
  • 方案2:合并低频数类别
    把样本量极少的类别(比如Widowed、Other)合并,减少稀疏单元格:
    analytical <- analytical %>%
      mutate(Mar = fct_collapse(Mar,
                                "Other/Non-married" = c("Widowed", "Other")))
    
  • 方案3:先检查频数分布
    先确认每个单元格的实际频数,再决定处理方式:
    table(analytical$Mar, analytical$exposure)
    

处理$close()非函数错误

  • 更新gt包
    运行以下命令更新到最新版本:
    install.packages("gt")
    
  • 分步运行保存代码
    把表格生成和保存拆分,避免链式调用的潜在异常:
    # 先生成gt对象
    gt_table <- analytical %>%
      tbl_summary(
        include = -id,
        by = exposure,
        statistic = list(all_continuous() ~ "{mean} ({sd})",
                         all_categorical() ~ "{n} ({p}%)"),
        label = list(SexF ~ "Sex",
                     Race ~ "Race",
                     Mar ~ "Marital Status",
                     AGE ~ "Age",
                     PROBLEMUse ~ "Substance Problem Use",
                     EDUCATION ~ "Education Level",
                     EMPLOYMENT ~ "Employment"),
      ) %>%
      add_overall() %>%
      bold_labels() %>%
      add_p(test = list(all_continuous() ~ "kruskal.test",
                        all_categorical() ~ "chisq.test",
                        Mar ~ "fisher.test")) %>%
      bold_p() %>%
      as_gt()
    
    # 确保保存目录存在
    dir.create("~/tables/", recursive = TRUE)
    # 单独保存
    gtsave(gt_table, filename = "~/tables/Table_X.png")
    
  • 尝试更换保存格式
    如果png保存仍有问题,可先保存为html再转图片:
    gtsave(gt_table, filename = "~/tables/Table_X.html")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:20:20