位置数据的 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。
我正在使用 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。