Я пытался использовать пакет msm для моделирования цепи Маркова с 8 состояниями и несколькими состояниями. В общей сложности мой набор данных содержит около 11 000 субъектов с общим количеством наблюдений чуть более 100 000.
Я пытаюсь запустить функцию msm для нескольких подмножеств данных, взяв заголовок данных, например:
mm2myTrajectoryMSM<-msm(role ~ year, subject=authId, data=head(mm2myMarkovRoles[,1:3,with=FALSE],7000), qmatrix=trajectory.qmatrix,death=1,control=list(trace=1,REPORT=1))
До сих пор мне не удалось преодолеть ~ 7000 строк. Глядя на вывод отчета, я заметил, что функция зависает, когда значение iter выводит отрицательное значение. Например, вот запуск с первыми 10 000 строк данных
initial value 19017.328402
iter 2 value 17808.111677
iter 3 value 17707.483305
iter 4 value -346782.085429 (freeze)
Но он работает с первыми 20 тыс. строк
initial value 38101.266287
iter 2 value 35871.849676
iter 3 value 35796.410415
iter 4 value -721867.559664
iter 4 value -721867.559664
final value -721867.559664
converged
Но не с 50 тыс. строк
initial value 92846.642840
iter 2 value 88466.007605
iter 3 value 88310.215979
iter 4 value 88276.433502
iter 5 value 88247.381022
iter 6 value -983685.709474
Но работает на 60010,80007 (снимаю полные записи испытуемых), и после этого не могу сказать то ли система зависает, то ли анализ идет очень долго. 1 ЦП, назначенный задаче, максимален, но я далеко не ограничиваю свои ресурсы ОЗУ (‹ 1% от 96 ГБ на сервере).
У меня два вопроса - ) Почему функция (произвольно?) зависает на определенных подмножествах данных и 2) Как можно оценить время выполнения этой функции? В прошлый раз я дал ему поработать, и это продолжалось более 2 дней. Как ни странно, время вычислений для многих прогонов, казалось, масштабировалось сублинейно, но как только я пересек порог, оно масштабируется...?