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

如何用cmprsk提取多协变量单因素竞争风险分析的HR、95%CI及P值

解决cmprsk单因素竞争风险分析结果提取与表格生成问题

问题原因

tbl_regression()目前不直接支持cmprsk包的crr()模型输出,无法直接调用生成标准化表格,需要手动提取模型结果并整理格式。

修正代码与结果提取步骤

1. 修正数据预处理与模型构建

注意crr()要求status为数值型(0=删失,1/2=竞争事件),无需转换为因子:

library(MASS)
library(cmprsk)
library(dplyr)
library(purrr)

data(Melanoma)
Melanoma <- Melanoma %>%
  mutate(
    status = recode(status, `2` = 0, `1` = 1, `3` = 2) # 0=存活,1=黑色素瘤死亡,2=其他原因死亡
  )

covariates <- c("sex", "age", "ulcer","thickness")

# 构建单因素分析公式
univ_formulas <- sapply(covariates, function(x) {
  as.formula(paste('Surv(time, status) ~', x))
})

# 循环拟合竞争风险模型
univ_models <- lapply(univ_formulas, function(x){
  crr(formula = x, data = Melanoma)
})

2. 编写结果提取函数

创建函数从单个crr模型中提取HR、95%CI和P值:

extract_crr_results <- function(model, cov_name) {
  # 提取系数与标准误
  coefs <- model$coef
  se <- model$se
  
  # 计算HR(指数化系数)及95%置信区间
  hr <- exp(coefs)
  ci_low <- exp(coefs - 1.96 * se)
  ci_high <- exp(coefs + 1.96 * se)
  
  # Wald检验计算P值
  z_score <- coefs / se
  p_val <- 2 * pnorm(abs(z_score), lower.tail = FALSE)
  
  # 整理为数据框
  tibble(
    协变量 = cov_name,
    HR = round(hr, 3),
    `95%CI` = paste0(round(ci_low, 3), " - ", round(ci_high, 3)),
    P值 = round(p_val, 3)
  )
}

3. 批量提取所有模型结果

# 遍历所有模型,合并结果
all_results <- map2_df(univ_models, covariates, extract_crr_results)

# 查看整理后的结果
print(all_results)

4. 生成可导出的标准化表格

使用gt包生成美观表格,并支持导出至Excel/Word:

library(gt)

# 构建表格
result_table <- all_results %>%
  gt() %>%
  tab_header(title = "单因素竞争风险分析结果") %>%
  fmt_number(columns = c(HR, P值), decimals = 3) %>%
  cols_label(
    协变量 = "协变量",
    HR = "风险比(HR)",
    `95%CI` = "95%置信区间",
    P值 = "P值"
  )

# 导出为Excel文件
gtsave(result_table, "crr_univ_results.xlsx")

# 导出为Word文件
gtsave(result_table, "crr_univ_results.docx")

补充说明

  • 如果需要区分不同竞争事件的结果(比如黑色素瘤死亡/其他原因死亡的单独HR),可修改提取函数,循环提取crr模型中对应每个事件的系数结果。
  • 若偏好gtsummary风格输出,也可使用tbl_custom()函数自定义映射规则,但手动提取结果的灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:33:19