模型评价——C-index

 

 

二、C-index计算

    在很多临床文章中经常看见统计方法里面描述模型的区分能力(Discrimination ability)用C-Statistics来度量,下面我们就用R语言为大家演示这个所谓的C-Statistics如何计算?本文先讲解Cox回归中的C-Statistics (一般称为C-index)的计算,Logistic回归C-Statistics计算将在后续文章中介绍。严格说来C-index包括以下几种,我们仅介绍临床上较为常用的第一种。

1.Harrell’s C

2.C-statistic by Begg et al.(survAUC::BeggC)

3.C-statistic by Uno et al.(survC1::Inf.Cval; survAUC::UnoC)

4.Gonen and Heller Concordance Index forCox models (survAUC::GHCI, CPE::phcpe, clinfun::coxphCPE)

 

方法1: 直接从survival包的函数coxph结果中输出,需要R的版本高于2.15.需要提前安装survival包可以看出这种方法输出了C-index (对应模型参数C),也输出了标准误,95%可信区间就可以通过C加减1.96*se得到。并且这种方法也适用于很多指标联合。

方法2: 利用rms包中的cph函数和validate函数,可提供un-adjusted和bias adjusted C指数两种。

 

代码及代码解读,结果解读如下:

> # 模拟一组数据并设置为数据框结构

> age

> bp

> d.time

> cens

> death

> os

> sample.data

> head(sample.data) # 展示数据框sample.data的前6行

 

> # 方法1. {survival}包

> library(survival) # 载入survival包

> fit

> sum.surv

> c_index

> c_index

         C      se(C) 

0.53318557 0.02741619 


> #方法2. {rms}包

> library(rms)

> set.seed(1)  # 这里设置种子,目的是为了能重复最后的结果,因为validate函数的校正结果是随机的。

> dd

> options(datadist='dd')

> fit.cph

> fit.cph  # 模型参数 Dxy*0.5+0.5 即是c-index

 

> # Get the Dxy

> v

> Dxy = v[rownames(v)=="Dxy", colnames(v)=="index.corrected"]

> orig_Dxy = v[rownames(v)=="Dxy", colnames(v)=="index.orig"]

> # The c-statistic according to Dxy = 2(c-0.5)

> bias_corrected_c_index  

> orig_c_index

> bias_corrected_c_index

[1] 0.5152632

> orig_c_index

[1] 0.5331856

 

来源:http://www.jintiankansha.me/t/iBEg0ZCeDU

 

posted @ 2019-04-09 10:28  辉姑娘~  阅读(5960)  评论(0编辑  收藏  举报