代码之家  ›  专栏  ›  技术社区  ›  Saara

移动位置数据时出错

  •  0
  • Saara  · 技术社区  · 8 年前

    我正在使用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)
    

    Output2 Vector Data Vector

    2 回复  |  直到 8 年前
        1
  •  2
  •   Théo Michelot    4 年前

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

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

    您的问题似乎来自您为步长分布选择的初始参数。数据集中的步长是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

        2
  •  1
  •   kangaroo_cliff    8 年前

    有两件事:

    您是否尝试使用 plot(data, compact=T) ? 自指定后第一次尝试 type="UTM" 在…上 prepData() ,并且您的数据为Lat/Long,这可能会影响其他函数。所以一定要把它改成 type="LL"

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

    最好的