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

如何用R制作多变量AUC及95%置信区间表格

多变量AUC及95%CI表格制作方案

问题背景

你需要制作一个多行表格,每行对应一个变量的AUC值和95%置信区间,目前已实现单变量表格生成,想扩展到多变量并寻求更简便的实现方法。

多变量表格实现方法

方法一:循环批量处理(基础实现)

如果数据中有多个需计算ROC的变量,可通过循环避免重复编写单变量代码:

假设你的数据框为df,二分类结局变量是y,待分析变量列表为vars <- c("Average Diastolic BP", "Age", "BMI"),代码如下:

# 加载依赖包
library(pROC)
library(dplyr)
library(gt)

# 定义待分析变量列表
vars <- c("Average Diastolic BP", "Age", "BMI")
# 初始化空列表存储结果
auc_results <- list()

# 循环计算每个变量的AUC和95%CI
for (var in vars) {
  roc_obj <- roc(df$y, df[[var]])
  auc_val <- round(auc(roc_obj), 2)
  ci_vals <- round(ci.auc(roc_obj), 2)
  ci_str <- paste(ci_vals[1], ci_vals[3], collapse = " - ")
  
  auc_results[[var]] <- data.frame(
    Characteristic = var,
    "Area under curve" = auc_val,
    "Confidence interval" = ci_str,
    check.names = FALSE
  )
}

# 合并结果并生成gt表格
Table_AUC <- bind_rows(auc_results) %>% gt()
Table_AUC

方法二:用purrr简化迭代(更简洁)

借助purrr::map_dfr可一行完成结果合并,代码更紧凑:

library(pROC)
library(dplyr)
library(purrr)
library(gt)

vars <- c("Average Diastolic BP", "Age", "BMI")

Table_AUC <- map_dfr(vars, function(var) {
  roc_obj <- roc(df$y, df[[var]])
  tibble(
    Characteristic = var,
    "Area under curve" = round(auc(roc_obj), 2),
    "Confidence interval" = paste(round(ci.auc(roc_obj), 2)[c(1,3)], collapse = " - ")
  )
}) %>% gt()

Table_AUC

方法三:专用工具包(新手推荐)

如果想快速生成标准化表格,推荐使用finalfit包,它专为临床研究表格设计,可自动完成ROC计算与结果整理:

library(finalfit)
library(dplyr)
library(gt)

# 定义结局变量和待分析变量
explanatory <- c("Average Diastolic BP", "Age", "BMI")
dependent <- "y"

# 直接生成包含AUC的表格
auc_table <- finalfit(dependent, explanatory, data = df, metrics = TRUE) %>%
  select(Characteristic, `Area under the curve`, `95% CI`) %>%
  gt()

auc_table

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:20:06