美文网首页
在R中求一致性指数( Harrell'concordance i

在R中求一致性指数( Harrell'concordance i

作者: oncology咕噜 | 来源:发表于2024-01-23 05:18 被阅读0次

C-index,英文名全称concordance index,中文里有人翻译成一致性指数,最早是由范德堡大学(Vanderbilt University)生物统计教教授Frank E Harrell Jr 1996年提出,主要用于计算生存分析中的COX模型预测值与真实之间的区分度(discrimination),和大家熟悉的AUC其实是差不多的

什么是一致性指数?

C-index,英文名全称concordance index,中文里有人翻译成一致性指数,最早是由范德堡大学(Vanderbilt University)生物统计教教授Frank E Harrell Jr1996年提出,主要用于计算生存分析中的COX模型预测值与真实之间的区分度(discrimination),和大家熟悉的AUC其实是差不多的;在评价肿瘤患者预后模型的预测精度中用的比较多。一般评价模型的好坏主要有两个方面,一是模型的拟合优度(Goodness of Fit),常见的评价指标主要有R方、-2logL、AIC、BIC等;另外一个是模型的预测精度,顾名思义就是模型的真实值与预测值之间差别大小,均方误差,相对误差等。在临床应用上更注重预测精度,建模的主要目的是用于预测,而C-index它就属于模型评价指标中的预测精度。

C-index的计算方法是把所研究的资料中的所有研究对象随机地两两组成对子,以生存分析为例,两个病人如果生存时间较长的一位其预测生存时间长于另一位,或预测的生存概率高的一位的生存时间长于另一位,则称之为预测结果与实际结果相符,称之为一致。

C-index的计算步骤为:

一、所有样本互相配对,共有N*(N-1)/2对,其中N为样本数

二、去除配对中两个病人都没有达到事件终点(比如死亡),或者其中的一个病人A的生存时间短于另一个病人B,然而病人A还没有到达事件终点(死亡)~ps:这种配对无法判断出谁先死的。此时剩下的配对数记为:M

三、计算剩下的配对中,预测结果和实际相一致的配对数记为K,即(两个病人如果生存时间较长的一位其预测生存时间长于另一位,或预测的生存概率高的一位的生存时间长于另一位,则称之为预测结果与实际结果相符,称之为一致)

(4)计算C-index=K/M。

从上述计算方法可以看出C-index在0.5-1之间(任意配对随机情况下一致与不一致刚好是0.5的概率)。0.5为完全不一致,说明该模型没有预测作用,1为完全一致,说明该模型预测结果与实际完全一致。一般情况下C-index在0.50-0.70为准确度较低:在0.71-0.90之间为准确度中等;而高于0.90则为高准确度,跟相关系数有点类似。

光从C-index一个数字上还是很难以衡量到底是准确度高还是低,所以人们就想着用一个统计学检验来说服证明这个高低,正如筛选基因差异是光看差异倍数来判断表达差异还过于武断,此时引入重抽样技术(Bootstrap)来检验预测模型的准确度。Bootstrap是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。

Bootstrap方法核心思想和基本步骤如下:

(1)采用重抽样技术从原始样本中抽取一定数量的样本,此过程允许重复抽样。

(2)根据抽出的样本计算给定的统计量T。

(3)重复上述N次(一般大于1000),得到N个统计量T。

(4)计算上述N个统计量T的样木方差,得到统计量的方差。

另如果数据集很大的话可以按照不同的比例将数据集拆分,一部分用于建模一部分用于验证。关于交叉验证(Cross-validation),如5-fold、10-fold等。

虽然看起来很复杂,但是事实上已经有人做了这些事情,在R中有包可以直接计算一致性指数:Hmisc 、compareC,两个包都可以计算c-index

今天就用一个例子来说明一下,数据准备:

表达谱矩阵:

生存时间和死亡事件

具体代码如下:

利用R软件计算临床预测模型评价指标-C指数

#先将命名为dev的EXCEL表格放到D盘的R work文件夹

library(rms)

library(foreign)

library(survival)

setwd("D:/R work")

dev<-read.csv("dev.csv")

head(dev)

str(dev)

dev$Depth.of.invasion<-factor(dev$Depth.of.invasion,labels=c('mucosa/submucosa','proper muscle','subserosa','serosa'))

dev$Location<-factor(dev$Location,labels=c('lower','upper','middle','whole'))

dev$Age<-factor(dev$Age,labels=c('<40','40-49','50-59','60-69','>=70'))

dev$LN.dissection<-factor(dev$LN.dissection,labels=c('D2','D1 plus'))

dev$tumor.size<-factor(dev$tumor.size,labels=c('<5.0','5.0-9.9','>=10.0'))

dev$metastatic.lymph.nodes<-factor(dev$metastatic.lymph.nodes,labels=c('<0','1-2','3-6','>=7'))

dev$Lymphovascular.invasion<-factor(dev$Lymphovascular.invasion,labels=c('NO','Yes'))

str(dev)

ddist <- datadist(dev)

options(datadist='ddist')

units(dev$follow) <- "Month"

fcox <- cph(Surv(follow,death) ~ Age + tumor.size + Location + Lymphovascular.invasion + Depth.of.invasion + metastatic.lymph.nodes + LN.dissection,surv=T,x=T, y=T,data=dev)

#先计算建模人群的C指数

f2 <- cph(Surv(follow,death) ~ predict(fcox, newdata=dev), x=T, y=T, surv=T, data=dev)

validate(f2, method="boot", B=500, dxy=T)

rcorrcens(Surv(follow,death) ~ predict(fcox, newdata=dev), data = dev)

#C-index=1-C=1-0.199=0.801

--------------------

#计算外部验证人群的C指数

#导入外部验证人群数据

vad<-read.csv("vad.csv")

vad$Depth.of.invasion<-factor(vad$Depth.of.invasion,labels=c('mucosa/submucosa','proper muscle','subserosa','serosa'))

vad$Location<-factor(vad$Location,labels=c('lower','upper','middle','whole'))

vad$Age<-factor(vad$Age,labels=c('<40','40-49','50-59','60-69','>=70'))

vad$LN.dissection<-factor(vad$LN.dissection,labels=c('D2','D1 plus'))

vad$tumor.size<-factor(vad$tumor.size,labels=c('<5.0','5.0-9.9','>=10.0'))

vad$metastatic.lymph.nodes<-factor(vad$metastatic.lymph.nodes,labels=c('<0','1-2','3-6','>=7'))

vad$Lymphovascular.invasion<-factor(vad$Lymphovascular.invasion,labels=c('NO','Yes'))

str(vad)

#计算外部验证人群C指数

fvad <-cph(Surv(follow, death) ~ predict(fcox,newdata=vad),x=T, y=T,surv=T, data=vad)

validate(fvad, method="boot", B=500, dxy=T)

rcorrcens(Surv(follow, death) ~ predict(fcox, newdata=vad), data = vad)

#C-index=1-C=1-0.178=0.822

相关文章

  • 一致性指数:Harrell’concordance index:

    什么是一致性指数? C-index,英文名全称concordance index,中文里有人翻译成一致性指数,最早...

  • 2021-04-09:一致性指数C-index

    什么是一致性指数? C-index,英文名全称concordance index,中文里有人翻译成一致性指数,最早...

  • R数据分析:临床预测模型的样本量探讨及R实现

    文本的大部分内容来自下面的文献: Riley R D, Ensor J, Snell K I E, Harrell...

  • BoxFilter的Matlab实现方法

    Boxfilter假如图像中存在I(x, y)这样一个像素点,那么 I(x-r, y-r),I(x, y+r), ...

  • 一致性设计的思考

    一致性指数据的多个副本内容保持相同。一致性的处理在日常的开发中无处不在,为了适当的处理,需要想明白不一致是怎么产生...

  • 咨询师语言特点

    R:重复 I:生动形象 S:简炼 S:柔软 S:缓慢 C:来访者语言 人本主义:真诚,无条件支持,一致性。 分析案...

  • 最终一致性实现的一种方式

    一、什么是最终一致性 在分布式系统中,一致性是指数据在多个副本之间能否保持一致的特性。当系统在数据一致的状态执行更...

  • 数据管理数据质量检测

    完整性,一致性,准确性,及时性 完整性指数据信息是否缺失。 一致性指数据是否遵循统一的规范。 准确性指数据记录的信...

  • 2018-07-18

    今天学习了四个音标 [ɑː] [r] [ɑr] [ɪ] [iː] 在第一天的学习中,对于report这个词中的ar...

  • [ a:][ r ][ i: ][ i ]

    M: Cardio-Pulmonary resuscitation or CPR can save the lif...

网友评论

      本文标题:在R中求一致性指数( Harrell'concordance i

      本文链接:https://www.haomeiwen.com/subject/xiqkodtx.html