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

如何在R中直接基于风险分数计算C-index?

在R中基于风险分数计算C-index的方法

下面介绍两种常用且易上手的方法,直接用你提供的风险分数、生存时间和结局状态计算C-index:

方法一:使用survival包(基础生存分析包)

survival包是R中生存分析的核心工具,其中的concordance()函数可直接计算C-index,天然支持处理删失数据。

代码示例:

# 加载包
library(survival)

# 你的数据
risk_scores <- c(0.4995992, 0.5475576, 0.4896132, 0.5176351, 0.5111408, 0.5035943, 0.4995992, 0.4995992, 0.4935940, 0.4879983, 0.5176351, 0.4966655, 0.4995992, 0.4995920, 0.4896132, 0.5779451)
status <- c(1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
time <- c(455, 210, 1022, 310, 361, 218, 166, 170, 567, 613, 707,  61, 301,  81, 371, 520)

# 创建生存分析对象
surv_obj <- Surv(time, status)

# 计算C-index
c_index_result <- concordance(surv_obj ~ risk_scores)

# 查看结果,concordance字段即为C-index值
print(c_index_result)

结果解释:

输出中的concordance字段就是所求的C-index,同时会附带标准误等辅助统计量。


方法二:使用Hmisc包(输出更丰富的一致性统计)

Hmisc包的rcorr.cens()函数能输出更全面的一致性分析结果,除C-index外,还包含灵敏度、删失比例等信息。

代码示例:

# 加载包
library(Hmisc)

# 计算C-index
c_index_hmisc <- rcorr.cens(-risk_scores, Surv(time, status))

# 查看结果,C index字段即为目标值
print(c_index_hmisc)

注意:

这里传入-risk_scores是因为rcorr.cens()默认认为预测值越大,生存时间越长;而我们的风险分数是数值越高,事件发生风险越高,取反后才能匹配函数的逻辑设定。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:22