Временная сложность nlm-пакета в R?

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

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

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

1 ответ

Решение

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

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

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

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

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

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

Другие вопросы по тегам