【问题标题】:R - differences between cindex function from pec package and coxphR - pec 包和 coxph 中的 cindex 函数之间的区别
【发布时间】:2014-07-16 15:03:23
【问题描述】:

我将 pec 包中的 cindex 函数与 coxph(生存包)中的结果一致性索引进行比较。

1) 首先这两个函数的结果不同

library(pec)
library(survival)
library(prodlim)

# Simulate survival data
set.seed(12)
dat <- SimSurv(1000)

# C-index from coxph    
mod1 <- coxph(Surv(time,status)~X1+X2, data=dat)
summary(mod1)$concordance[1]

0.846249

# C-index from cindex    
cindex(mod1,formula=Surv(time,status)~X1+X2,data=dat)

           AppCindex  Pairs Concordant
coxph.model        83 915194     759712

2) 如果我使用计数过程格式,cindex 函数会报错

data(Melanoma)
# Calculate age at entry
Melanoma$age_entry <- Melanoma$age-(Melanoma$time/365.25)
# Use just one outcome (no competing risk scenario)
Melanoma$out <- ifelse(Melanoma$status==1,1,0) 

mod1 <- coxph(Surv(age_entry,age,out)~ulcer+thick, data=Melanoma)
summary(mod1)$concordance[1]

0.7661805 

cindex(mod1,formula=Surv(age_entry,age,out)~ulcer+thick,data=Melanoma)

Error: is.null(entry) | all(entry <= time) is not TRUE

有谁知道为什么 1)两个 C 索引不同,以及 2)是否可以在 cindex 函数中使用计数过程格式?

谢谢!

【问题讨论】:

    标签: r survival-analysis roc


    【解决方案1】:

    Re: 1) coxph::concordance 与 pec::cindex 不同

    在计算 这两者之间的 C 索引。

    coxph 中的公式(参见?survConcordance()):

    (agree + tied/2)/(agree + disagree + tied).
    

    pec::cindex中的公式:

    agree/(agree + disagree)
    

    尝试从pec::cindex 的输出中手动计算这些。对于coxph, 用这个公式获得同意/不同意的数字(通过?survConcordance):

    fit <- coxph(Surv(time, status) ~ x1, data=df)
    survConcordance(Surv(time, status) ~predict(fit), df)
    

    参考

    ?coxph.object 有:

    concordance:一致性,由 survConcordance 计算得出。

    ?survConcordance 有:

    最后的一致性是(同意 + 捆绑/2)/(同意 + 不同意 + 捆绑)。

    注意:阅读完整的帮助文件以获取有关这些关系的重要说明

    我通过手动检查数字得到了 pec 的公式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多