R msm 包冻结

R msm package freezing

我一直在尝试使用 msm 包来模拟 8 状态、多状态马尔可夫链。我的数据集总共包含大约 11,000 个主题,总共有略超过 100k 个观察值。

我尝试在数据的几个子集上运行 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 值输出负值时函数冻结。例如,这是前 10k 行数据的运行

initial  value 19017.328402  
iter   2 value 17808.111677 
iter   3 value 17707.483305 
iter   4 value -346782.085429 (freeze)

但它适用于前 20k 行

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

但不是 50k 行

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 cpu 已达到最大值,但我离我的 RAM 资源限制还差得很远(< 服务器上 96GB 的 1%)。

我有两个问题 - ) 为什么函数(任意地?)挂在数据的某些子集上并且 2)如何估计这个函数的运行时间?上次我让它运行,它运行了 2 天多。奇怪的是,许多运行的计算时间似乎呈次线性扩展,但一旦我超过阈值,它就会扩展...?

你是 运行 msm 1.5 吗?

在变更日志 (http://cran.r-project.org/web/packages/msm/ChangeLog) 中提到已修复导致 windows 无限循环的错误。

如果您的时间序列有几个短跳跃,您可能会遇到对数似然下溢。您可以在 msm 调用中使用 fixedpars = TRUE 来研究它(然后获取对数似然并查找 underflow/overflow)。 如果出现问题,您将得到很长 运行 次(很难预测)。

也尝试使用 fnscale=100000 来衡量你的似然值。