给定一个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")
?
感谢您的帮助,
答案 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