如何在R语言中计算C-index

如题所述

利用Hmisc包中的rcorr.cens函数 局限: - 只能处理一个预测变量 - 对超过2分类的分类变量处理粗糙
# 加载包及生成数据框,这里生成数据框主要是为了方便大家理解,因为大家通常都是将Excel的数据读进R,存储为数据框格式
library(survival)
library(Hmisc)
age <- rnorm(200, 50, 10)
bp <- rnorm(200,120, 15)
d.time <- rexp(200)
cens <- runif(200,.5,2)
death <- d.time <= cens
os <- pmin(d.time, cens)
sample.data <- data.frame(age = age,bp = bp,os = os,death = death)
#让我们看一下生成的例子数据的前6行
head(sample.data)
## age bp os death
## 1 33.18822 114.6965 1.106501 FALSE
## 2 41.86970 123.2265 1.365944 FALSE
## 3 50.41484 124.9522 0.867119 FALSE
## 4 45.66936 127.3237 1.155765 TRUE
## 5 39.79024 134.8846 1.257501 TRUE
## 6 31.89088 140.9382 1.125504 FALSE
rcorr.cens的代码及结果,第一个值就是C指数,同时也有Dxy的值
rcorr.cens(sample.data$age, Surv(sample.data$os, sample.data$death))
## C Index Dxy S.D. n missing
## 4.528492e-01 -9.430156e-02 5.565299e-02 2.000000e+02 0.000000e+00
## uncensored Relevant Pairs Concordant Uncertain
## 1.290000e+02 3.172800e+04 1.436800e+04 8.072000e+03
rcorrcens的代码及结果,注意rcorrcens的写法是写成formula(公式)的形式,较为方便;而rcorr.cens的 写法是只能在前面写上一个自变量,并且不支持data = ...的写法,有点繁琐。较为遗憾的是这两种方法得到的C指数的标准误需要通过S.D./2间接得到。
r <- rcorrcens(Surv(os, death) ~ age + bp,data = sample.data)
r
## Somers' Rank Correlation for Censored Data Response variable:Surv(os, death)
##
## C Dxy aDxy SD Z P n
## age 0.453 -0.094 0.094 0.056 1.69 0.0902 200
## bp 0.498 -0.003 0.003 0.054 0.06 0.9517 200
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-24
这个是概率论的题目第一个答案是6X5X4X3分之一答案是360分之一,第二个答案是3X2X1除6X5X4等于20分之一
第2个回答  2017-01-18
c指数即一致性指数(index of concordance),用来评价模型的预测能力。c指数是资料所有病人对子中预测结果与实际结果一致的对子所占的比例。它估计了预测结果与实际观察到的结果相一致的概率
相似回答