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

问题描述

我遇到此错误Secure your Synapse workspace (preview)告诉我应该降低sigma,但这是几个月前这段代码可以正常工作的地方。不会根据数据和代码进行任何更改。我想知道为什么这个错误出人意料。

第二点,当我降低诸如13.1之类的sigma时,它看起来正在运行(但是我已经等了一个小时)。

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软件包的问题。

在线性网络上处理数据的代码仍在积极开发中。在spatstat的最新公共发行版中已对其进行了更改,并且在开发版本中也进行了更改。您需要确切指定要使用的版本。

错误报告指出算法所需的迭代次数太大。发生这种情况的原因是任一平滑带宽sigma太大,或者沿网络的采样点之间的间隔dx太小。在大多数情况下,迭代次数与(sigma/dx)^2成正比。

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

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

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

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

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

,

自上次生效以来,您是否更新了spatstat?用于确定网络间距等的内部代码可能有所更改。实际的计算是通过函数densityHeat()完成的,您可以在其帮助文件中查看如何手动设置间距等。