我创建了一些 Cox 回归模型,我想看看这些模型的性能如何,我认为 ROC 曲线或 c 统计量可能与本文使用的类似:
Armitage 使用了逻辑回归,但我想知道是否可以使用生存包中的模型,survivalROC暗示这是可能的,但我不知道如何让它与常规 Cox 回归一起使用。
如果有人能告诉我如何对这个例子进行 ROC 分析,我将不胜感激:
library(survival)
data(veteran)
attach(veteran)
surv <- Surv(time, status)
fit <- coxph(surv ~ trt + age + prior, data=veteran)
summary(fit)
如果可能的话,我会欣赏原始的 c-statics 输出和漂亮的图表
谢谢!
更新
非常感谢您的回答。@Dwin:我只是想确保在选择您的答案之前我已经理解了它。
根据DWin的建议,我理解的计算:
library(survival)
library(rms)
data(veteran)
fit.cph <- cph(surv ~ trt + age + prior, data=veteran, x=TRUE, y=TRUE, surv=TRUE)
# Summary fails!?
#summary(fit.cph)
# Get the Dxy
v <- validate(fit.cph, dxy=TRUE, B=100)
# Is this the correct value?
Dxy = v[rownames(v)=="Dxy", colnames(v)=="index.corrected"]
# The c-statistic according to the Dxy=2(c-0.5)
Dxy/2+0.5
我不熟悉验证功能和引导,但在看过 prof. Frank Harrel在 R-help 上的回答我认为这可能是获得 Dxy 的方法。验证状态的帮助:
...要在每次重新采样时计算 Somers 的 Dxy 等级相关性(这比基于似然的统计数据需要更长的时间)。对应于 Dxy 行的值等于 2 * (C - 0.5),其中 C 是 C 索引或一致性概率。
我想我主要是被这些列弄糊涂了。我认为更正的值是我应该使用的值,但我还没有真正理解验证输出:
index.orig training test optimism index.corrected n
Dxy -0.0137 -0.0715 -0.0071 -0.0644 0.0507 100
R2 0.0079 0.0278 0.0037 0.0242 -0.0162 100
Slope 1.0000 1.0000 0.2939 0.7061 0.2939 100
...
在R-help 问题中,我了解到如果我有分层,我应该在 cph 中有“surv=TRUE”,但我不确定验证函数中“u=60”参数的目的是什么。如果您能帮助我理解这些并检查我没有犯任何错误,我将不胜感激。