Ошибка: Требуемое количество итераций = 1087633109 превышает iterMax = 1e+06 ; либо увеличить iterMax, dx, dt, либо уменьшить сигму

Я получаю эту ошибку и это сообщение, говорящее мне, что я должен уменьшить сигма, но вот в чем дело, этот код работал нормально пару месяцев назад. Ничего не меняется на основе данных и кода. Мне было интересно, почему эта ошибка из синего.

И второй момент, когда я опускаю сигму типа 13.1, он выглядит запущенным (но я уже час жду).

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

О сети

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, либо уменьшить сигму


person iHermes    schedule 25.09.2020    source источник


Ответы (2)


Это вопрос о пакете spatstat.

Код для обработки данных в линейной сети все еще находится в стадии активной разработки. Он изменился в последних общедоступных выпусках spatstat и снова изменился в разрабатываемой версии. Вам нужно точно указать, какую версию вы используете.

В отчете об ошибке сказано, что требуемое количество итераций алгоритма слишком велико. Это происходит из-за того, что либо полоса пропускания сглаживания sigma слишком велика, или расстояние dx между точками выборки в сети слишком мало. Количество итераций в большинстве случаев пропорционально (sigma/dx)^2.

Во-первых, убедитесь, что значение sigma физически разумно.

Обычно вам не нужно беспокоиться о параметре алгоритма dx, поскольку он определяется автоматически по умолчанию. Однако возможно, что ваши данные заставляют код выбирать очень маленькое значение dx.

Внутренний код, который автоматически определяет интервал dx точек выборки вдоль сети, был недавно изменен, чтобы исправить несколько ошибок.

Я предлагаю вам указать параметры алгоритма вручную. См. файл справки для densityHeat для получения информации о том, как управлять интервалами. Установка параметров вручную также обеспечит большую согласованность результатов между различными версиями программного обеспечения.

Самое быстрое решение — установить finespacing=FALSE. Это не лучшее решение, потому что оно по-прежнему использует некоторые автоматические правила, которые могут создавать проблемы. Пожалуйста, прочтите файл справки, чтобы понять, что он делает.

person Adrian Baddeley    schedule 27.09.2020

Обновляли ли вы спатстат с тех пор, как это сработало в последний раз? Возможно немного изменился внутренний код для определения интервала в сети и т.п. Фактические вычисления выполняются функцией densityHeat(), и вы можете увидеть, как вручную установить интервалы и т. д., в ее файле справки.

person Ege Rubak    schedule 25.09.2020
comment
да все в курсе. похоже нам нужно поставить finespacing=FALSE - person iHermes; 25.09.2020