我有两个独立的数据集,一个是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]中: 较长的物体长度不是较短物体长度的倍数
我做错了什么,或者两个数据集必须有相同数量的观察结果?
任何帮助将不胜感激。
答案 0 :(得分:0)
我没有看到test_dat
定义surv.obj
的位置。您需要将其添加到test_dat
或拥有调用中使用的独立对象surv.obj
。
请注意,您的样本量不足以进行拆分样本验证,即,如果您多次重新拆分样本,则会在结果中产生分歧。严格的引导程序内部验证(使用rms
包validate
和calibrate
函数)通常更精确。