位置数据的 MoveHMM 期间出错

Error during MoveHMM for location data

我正在使用 MoveHMM 包 (https://cran.r-project.org/web/packages/moveHMM/vignettes/moveHMM-guide.pdf) 进行 HMM 分析,但我在绘图时遇到了下面提到的错误。

      Error in if (max(stepDensities[[state]][, 2]) > maxdens) maxdens <- 
      max(stepDensities[[state]][,  : 
      missing value where TRUE/FALSE needed

代码:

data <- prepData(output2,type="UTM",coordNames=c("Longitudes","Latitudes"));
 ## initial parameters for gamma and von Mises distributions
 mu0 <- c(0.1,1) # step mean (two parameters: one for each state)
 sigma0 <- c(0.1,1) # step SD
 zeromass0 <- c(0.1,0.05) # step zero-mass
 stepPar0 <- c(mu0,sigma0,zeromass0)
 angleMean0 <- c(pi,0) # angle mean
 kappa0 <- c(1,1) # angle concentration
 anglePar0 <- c(angleMean0,kappa0)
 ## call to fitting function
 m <- fitHMM(data=data,nbStates=2,stepPar0=stepPar0,
        anglePar0=anglePar0,formula=~1)
 plot(m)

两件事:

您是否尝试过使用 plot(data, compact=T) 绘制您的数据? 首先尝试,因为在 prepData() 上指定了 type="UTM",并且您的数据是 Lat/Long,这可能会对其他功能产生影响。所以请务必将其更改为 type="LL".

你没有指定错误弹出的位置,但它似乎是 moveHMM 包中唯一使用 if max(stepDensities[[state]][, 2]) > maxdens) maxdens <- max(stepDensities[[state]][, : 的函数 是 plotHist 函数,在 plot.moveHMM 函数中,由 plot(m) 调用。假设您在拟合模型后遇到错误:您尝试过 print(m) 了吗?

最佳。

这个错误通常出现在优化器无法收敛,并返回极端参数估计(例如Inf)时。如果您打印拟合模型对象,您可以看到这一点。

此类数值问题的解决方案通常是尝试不同的初始参数值(fitHMM 中的“stepPar0”和“anglePar0”;参见 package vignette 的第 3.2.2 节)。

您的问题似乎来自您为步长分布选择的初始参数。数据集中的步长是 1e-4 数量级的值,因此您的初始步长参数应该反映这一点。除了使用小插图中给出的值,您还可以尝试类似的方法:

mu0 <- c(5e-5,5e-4) # step length mean
sigma0 <- c(5e-5,5e-4) # step length SD

想法是根据观察到的步长和转角选择“合理的”参数值。如果观察到的步长都短于一米,您就不会期望一公里的平均步长。

编辑: 现在有一个小插图为选择初始参数值提供了一些指导:A short guide to choosing initial parameter values for the estimation in moveHMM