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
来衡量你的似然值。
我一直在尝试使用 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
来衡量你的似然值。