Error: Required number of iterations = 1087633109 exceeds iterMax = 1e+06 ; either increase iterMax, dx, dt or reduce sigma

Error: Required number of iterations = 1087633109 exceeds iterMax = 1e+06 ; either increase iterMax, dx, dt or reduce sigma

我收到此错误, 告诉我应该减少 sigma,但几个月前此代码运行良好。基于数据和代码没有任何变化。我想知道为什么会出现这个错误。

还有第二点,当我降低sigma如13.1时,它看起来运行(但我已经等了一个小时)

sigma=203.9057
dimyx1=1024
A22den=density(Lnetwork,sigma,distance="path",continuous=TRUE,dimyx=dimyx1)   # 

关于Lnetwork

Point pattern on linear network
69436 points
Linear network with 8417 vertices and 8563 lines
Enclosing window: rectangle = [143516.42, 213981.05] x [3353367, 3399153] units

错误:所需的迭代次数 = 1087633109 超过 iterMax = 1e+06 ;增加 iterMax、dx、dt 或减少 sigma

自上次运行以来,您是否更新了 spatstat?可能用于确定网络等间距的内部代码发生了一些变化。实际的计算是由函数densityHeat()完成的,你可以在它的帮助文件中看到如何手动设置间距等。

这是关于 spatstat 包的问题。

在线性网络上处理数据的代码仍在积极开发中。它在 spatstat 的最近 public 版本中发生了变化,并且在开发版本中再次发生了变化。您需要准确指定您使用的版本。

报错说要求的算法迭代次数太大。发生这种情况是因为 平滑带宽 sigma 太大, 沿网络的采样点之间的间距 dx太小。在大多数情况下,迭代次数与 (sigma/dx)^2 成正比。

首先,检查 sigma 的值在物理上是否合理。

通常您不必担心算法参数 dx,因为它是默认自动确定的。但是,您的数据可能会导致代码选择非常小的值 dx

最近更改了自动确定沿网络的采样点间距 dx 的内部代码,以修复几个错误。

我建议您手动指定算法参数。有关如何控制间距的信息,请参阅 densityHeat 的帮助文件。手动设置参数也将确保不同版本软件之间的结果具有更大的一致性。

最快的解决办法是设置finespacing=FALSE。这不是最好的解决方案,因为它仍然使用一些可能会产生问题的自动规则。请阅读帮助文件以了解其作用。