使用rcorr.cens()和val.surv对Cox模型进行外部验证

时间:2015-02-06 10:28:17

标签: r validation cross-validation cox-regression

我有两个独立的数据集,一个是5421,另外是1000个主题。我想要做的是使用外部数据集(test_dat,n = 1000)验证从主数据集(main_dat,n = 5421)获得的Cox模型。但是,我使用Hmisc包中的rcorr.cens()和rms中的val.surv得到错误消息。这是我一直在做的事情:

library(rms)
surv.obj=with(main_dat,Surv(survival,surv_cens))  ## to use with rcorr.cens
phmodel=cph(surv.obj~sex+age+treatment, x=TRUE, y=TRUE, surv=T, time.inc=10, data=main_dat, se.fit=T)

estimates=survest(phmodel, newdata=test_dat, times=10)

rcorr.cens(x=estimates, S=surv.obj)
  

rcorr.cens出错(x =估计,S = surv.obj):     y必须与x

具有相同的长度
w=val.surv(phmodel ,newdata=test_dat, u=10)
  

val.surv中的错误(phmodel,newdata = test_dat,u = 10):     dims [product 1000]与对象的长度不匹配[5421]   另外:警告信息:   在est.surv + S [,1]中:     较长的物体长度不是较短物体长度的倍数

我做错了什么,或者两个数据集必须有相同数量的观察结果?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我没有看到test_dat定义surv.obj的位置。您需要将其添加到test_dat或拥有调用中使用的独立对象surv.obj

请注意,您的样本量不足以进行拆分样本验证,即,如果您多次重新拆分样本,则会在结果中产生分歧。严格的引导程序内部验证(使用rmsvalidatecalibrate函数)通常更精确。