2015-02-06 3 views
0

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

библиотека (RMS)

surv.obj = с (main_dat, Surv (выживание, surv_cens)) ## для использования с rcorr.cens

phmodel = CPH (surv.obj ~ sex + age + treatment, x = TRUE, y = TRUE, surv = T, time.inc = 10, data = main_dat, se.fit = T)

оценки = выживать (phmodel, newdata = test_dat, times = 10)

rcorr.cens (x = оценки, S = surv.obj)

ошибок в rcorr.cens (х = оценки, S = surv.obj): у должны иметь такую ​​же длину, как х

ш = val.surv (phmodel, NewData = test_dat, и = 10)

Ошибка в val.surv (phmodel, NewData = test_dat, и = 10): тускнеет [продукт 1000] не соответствует длине объекта [5421] в дополнение : предупреждение: в ЭСТа .surv + S [, 1]: длина длинного объекта не кратная короткой длине объекта

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

Любая помощь будет принята с благодарностью.

ответ

0

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

Обратите внимание, что размеры выборки недостаточно велики для проверки сплит-выборки, т. Е. Если вы повторно разделите образец несколько раз, вы получите разногласия в результате. Строгая внутренняя проверка бутстрепа (с использованием пакета rmsvalidate и calibrate) обычно более точная.