R Survival Analysis: ошибка в survreg с использованием Weibull

Я пытаюсь воспроизвести некоторый анализ выживания, используя дистрибутив Weibull, который я ранее создал в SAS - теперь я работаю с нелицензионной машины, поэтому использую R (оба из Windows). Мои входные данные (с цензурой справа) выглядят так:

> head(mydata)
  ID         Key  Time  Score    Event    Censor
1 1231231    ZXC   28   182.34   0      1
2 4564564    ASD   28   320.04   0      1
3 7897897    QWE   28   306.32   0      1
4 9879879    QWE   28   211.92   0      1
5 6546546    ASD   28   276.14   0      1
6 3213213    ZXC   28   331.50   0      1

где Event и Censor являются двоичными, Score варьируется от 150 до 450, а Time — от 1 до 28. Во входном наборе данных около 30 000 строк.

Когда я пытаюсь:

mydatasr <- survreg(Surv(Time, Censor) ~ Score, dist = "w")

Я получаю предупреждающее сообщение:

В survreg.fit(X, Y, weights, offset, init = init, controlvals = control, : исчерпаны итерации и не сходятся,

И никакого выхода.

Я искал это сообщение в Интернете (и на этом сайте), но мне не удалось найти ничего, что указывало бы на то, в чем может быть проблема. У меня не было проблем с конвергенцией при передаче одних и тех же данных через (процесс логистики и) lifereg в SAS.


person Zephyr    schedule 25.08.2015    source источник
comment
Вы не ожидаете никакого вывода, пока не наберете имя этого объекта для вызова функции print.survreg. Присваивание не обязательно приводит к выполнению print-методов.   -  person IRTFM    schedule 25.08.2015
comment
Очень поздно к этому, но столкнувшись с той же проблемой, я пришел сюда. Мне интересно, связано ли это с ресурсами (например, ОЗУ)? В настоящее время устраняю неполадки, поэтому сообщу   -  person daRknight    schedule 08.05.2019


Ответы (2)


Трудно сказать при отсутствии данных. Вы можете удвоить (или, как показано ниже, утроить) количество итераций, которое по умолчанию равно 30:

(mydatasr <- survreg(Surv(Time, Censor) ~ Score , dist = "w", control = list(maxiter=90) )

Дополнительные параметры см. в ?survreg.control. Я также предполагаю, что вы, возможно, пропустили, что объект Surv имеет закрывающую скобку перед формулой-~

person IRTFM    schedule 25.08.2015
comment
Ой, я думаю, что закрывающая скобка потерялась, пока я маскировал свои данные! Я делал попытку увеличить количество итераций, но по-прежнему не получил каких-либо значимых результатов, даже когда я сократил длину входных данных до ~ 70 строк. Думаю, мне просто придется вернуться в SAS. - person Zephyr; 26.08.2015
comment
В списке рассылки Rhelp довольно часто встречается, что, когда SAS выдает результат, а R нет, и данные также предоставляются для анализа, можно показать, что SAS выдает неверный ответ. Вы должны проверить результат, нанеся на график непараметрические опасности, чтобы увидеть, действительно ли модель Вейбулла имеет смысл. - person IRTFM; 26.08.2015
comment
Спасибо за наводку! К сожалению, в моей компании предпочтительным инструментом является SAS - я просто жду лицензию. Тем не менее, мы делаем перекрестную проверку наших результатов :) - person Zephyr; 27.08.2015

Попробуй это:

   survreg(Surv(Time, Censor) ~ Score, data=mydata, dist = "w", scale=1)
person Yong    schedule 25.08.2015
comment
Спасибо, но разве это не просто приближает распределение Вейбулла к экспоненциальному? - person Zephyr; 25.08.2015