R msm包冻结

时间:2015-01-08 04:15:36

标签: r markov-chains

我一直在尝试使用msm软件包来建模8状态,多状态马尔可夫链。我的数据总共包含大约11,000个科目,总观察量略高于10万。

我尝试在几个数据子集上运行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资源限制(&lt;服务器上96GB的1%)。

我有两个问题 - )为什么函数(任意?)挂在数据的某些子集上 2)如何估计此功能的运行时间?上次我让它运行,它持续了2天多。奇怪的是,许多运行的计算时间似乎是次线性的,但是一旦我越过一个阈值,它就会缩放......?

1 个答案:

答案 0 :(得分:1)

你在运行msm 1.5吗?

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

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

还尝试使用fnscale=100000缩放可能性值。