Внешняя проверка модели Кокса с использованием rcorr.cens() и val.surv

У меня есть два независимых набора данных: один с 5421, а другой с 1000 субъектами. Что я хотел бы сделать, так это проверить модель Кокса, полученную из основного набора данных (main_dat, n = 5421), используя внешний набор данных (test_dat, n = 1000). Однако я получаю сообщение об ошибке, используя как rcorr.cens() в пакете Hmisc, так и val.surv в rms. Вот что я делал:

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) : размеры [продукт 1000] не соответствуют длине объекта [5421] Дополнительно: Предупреждающее сообщение: In est.surv + S[, 1] : дольше длина объекта не кратна меньшей длине объекта

Я делаю что-то не так или два набора данных должны иметь одинаковое количество наблюдений?

Любая помощь будет оценена.


person Community    schedule 06.02.2015    source источник


Ответы (1)


Я не вижу, где test_dat определено surv.obj. Вам нужно либо добавить это к test_dat, либо иметь отдельно стоящий объект surv.obj, который используется в вызовах.

Обратите внимание, что размеры вашей выборки недостаточно велики для проверки с разделением выборки, т. е. если вы повторно разделите выборку несколько раз, вы получите расхождения в результатах. Строгая внутренняя проверка начальной загрузки (с использованием функций rms пакета validate и calibrate) обычно более точна.

person Frank Harrell    schedule 06.02.2015