Временная сложность nlm-пакета в R? - PullRequest
1 голос
/ 13 февраля 2020

Я оцениваю нелинейную систему (через, казалось бы, не связанные регрессии - SUR), используя пакет systemfit (nlsystemfit() функция) с 4 уравнениями, 32 параметрами для оценки (!) И 412 наблюдениями. Но мой код работает вечно (мой ноутбук не очень мощный). Пока процесс длился 13 часов. Я не эксперт в вычислительных вещах, но кто-то когда-то объяснил мне go концепцию сложности времени алгоритмов (или биг-о), тогда в зависимости от этой концепции время для вычисления определенного алгоритма могло бы положиться конкретное c функциональное отношение к числу наблюдений и / или коэффициентов.

Следовательно, я думаю о том, чтобы просто остановить свой процесс и попытаться упростить модель (временно) и попытаться запустить что-то более простое, только для проверки, если расчетные параметры были чувствительными до сих пор. А затем запустите всю модель.

Но все это имеет смысл, если я могу изменить ключевые элементы в моей модели, что может значительно сократить время обработки. Вот почему я искал в Google информацию о временной сложности nlm -package (функция nlsystemfit() зависит от nlm), но безуспешно. Итак, это мой вопрос: кто-нибудь знает, где я могу найти эту информацию, или, по крайней мере, дайте мне совет о том, как тестировать нелинейные системы перед запуском всей модели?

1 Ответ

0 голосов
/ 13 февраля 2020

Поскольку вы не предоставили какой-либо существенной информации относительно вашей модели или какого-либо кода для нее, трудно express улучшить ситуацию.

Из того, что вы сказали:

Следовательно, я думаю о том, чтобы просто остановить свой процесс и попытаться упростить модель (временно) и попытаться запустить что-то более простое, только чтобы проверить, были ли оцененные параметры разумными. А затем запустите всю модель.

Кажется, вам требуется сравнительный анализ или получение измеренного времени, необходимого для выполнения, как в вашем случае. (хотя это может касаться использования памяти или некоторых других показателей производительности c)

Существует довольно много способов для сравнения кода в R, которые включают использование Sys.time() или system.time() просто до и сразу после выполнения вашего алгоритма / функции или таких библиотек, как rbenchmark (которая является простой оболочкой для функции system.time), tictoc, bench и microbenchmark.

Среди них последние два являются предпочтительными вариантами, поскольку bench::mark включает system_time(), более высокоточная альтернатива system.time() и microbenchmark, как известно, является надежным источником для точного измерения и сравнения выполнения. время R выражений / алгоритмов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...