预报.coxph()和survC1 :: Est.Cval-类型为预报()

时间:2019-07-11 14:14:54

标签: r survival-analysis cox-regression

给定一个coxph()模型,我想使用predict()来预测危险,然后使用survC1::Est.Cval( . . . nofit=TRUE)获得该模型的c值。

Est.Cval()文档非常简洁,但是说“ nofit = TRUE:如果为TRUE,则mydata的第3列将直接用作C的风险分数。”

为简单起见,我要根据建立模型的相同数据进行预测。对于

  • coxModel来自coxph()的Cox回归模型;
  • time是时间向量(正实数),与coxModel建立的时间相同;和
  • event一个0/1向量,具有相同的长度的事件/检查指示符,与coxModel所基于的事件相同-

这是否表明我想要

predictions <- predict(coxModel, type="risk")

dd <- cbind(time, event, pred)

Est.Cval(mydata=dd, tau=tau, nofit=TRUE)

或者第一行应该是

predictions <- predict(coxModel, type="lp")

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

答案是 没关系

基本上,对于所有可比较的时间对(事件和检查对象),一致性值都在测试,以后的时间风险较低(对于一个非常好的模型,几乎总是这样)。但是,由于e ^ u是实数u的单调函数,并且c值仅是测试比较,因此提供危险比e ^(sum {\ beta_i x_i})还是线性预测变量都无关紧要,总和{\ beta_i x_i}。

由于@ 42激励我提出一个最小的工作示例,因此我们可以对其进行测试。我们将比较Est.Cval()使用一个输入与使用另一个输入提供的值;我们可以将两者与从coxph()获得的值进行比较。

(最后一个值将不完全匹配,因为Est.Cval()使用Uno等人的方法。2011 (Uno,H.,Cai,T.,Pencina,MJ,D'Agostino, RB&Wei,LJ。关于使用审查后的生存数据评估风险预测程序的总体充分性的C统计量,《统计学》,第30卷,1105–1117(2011),https://onlinelibrary.wiley.com/doi/full/10.1002/sim.4154,但可以使用作为健全性检查,因为值应该接近。)

以下内容基于Joseph Rickert https://rviews.rstudio.com/2017/09/25/survival-analysis-with-r/通过R进行的生存分析(2017年9月25日)中使用的示例。

library("survival")
library("survC1")

# Load dataset included with survival package
data("veteran")
# The variable `time` records survival time; `status` indicates whether the 
# patient’s death was observed (status=1) or that survival time was censored 
# (status = 0). 

# The model they build in the example:
coxModel <- coxph(Surv(time, status) ~ trt + celltype + karno + diagtime + 
    age + prior, data=veteran)

# The results
summary(coxModel)

请注意它给我们的c分数:

Concordance= 0.736  (se = 0.021 )

现在,我们针对两种类型的值计算Est.Cval()给出的c分数:

# The value from Est.Cval(), using a risk input
cvalByRisk <- Est.Cval(mydata=cbind(time=veteran$time, event=veteran$status, 
  predictions=predict(object=coxModel, newdata=veteran, type="risk")), 
  tau=2000, nofit=TRUE)

# The value from Est.Cval(), using a linear predictor input
cvalByLp <- Est.Cval(mydata=cbind(time=veteran$time, event=veteran$status, 
  predictions=predict(object=coxModel, newdata=veteran, type="lp")), 
  tau=2000, nofit=TRUE)

我们比较结果:

cvalByRisk$Dhat
[1] 0.7282348
cvalByLp$Dhat
[1] 0.7282348