如何在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
相关产品推荐
相关产品推荐

