Временная сложность 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.