我正在使用systemfit
(nlsystemfit()
函数)程序包使用4个方程式,32个参数来估计(!)和412个观测值(通过看似无关的回归-SUR来估计非线性系统)。但是我的代码将永远占用我的笔记本电脑(这不是一个超级强大的功能)。到目前为止,该过程运行了13个小时。我不是计算专家,但有人在一段时间前向我解释了算法(或big-o)的时间复杂度的概念,然后根据此概念,计算特定算法的时间可能取决于特定的功能关系关于观测值和/或系数的数量。
因此,我正在考虑只是停止我的过程,并尝试(暂时)简化模型并尝试运行更简单的方法,只是检查估计的参数是否到目前为止。然后,运行整个模型。
但是如果我可以更改模型中的关键元素,那么所有这些都可以理解,这可以大大减少处理时间。这就是为什么我在Google上搜索nlm
-package(nlsystemfit()
函数依赖于nlm
)的时间复杂性但未成功的原因。所以,这是我的问题:有人知道我在哪里可以找到该信息,或者至少在运行整个模型之前就如何测试非线性系统向我提供建议?
由于您没有提供有关模型或代码的任何实质性信息,因此很难表达出对您的情况的改善。
根据您的发言:
因此,我正在考虑只是停止我的过程,并尝试(暂时)简化模型并尝试运行更简单的方法,只是检查估计的参数是否到目前为止。然后,运行整个模型。
似乎您需要基准测试或获得所需的时间来执行您的案例。 (尽管它也可以处理内存使用情况或其他一些性能指标)
[有很多方法可以在R中对代码进行基准测试,包括在执行算法Sys.time()
之前和之后立即使用system.time()
或rbenchmark
(这是system.time
函数的简单包装) ),tictoc
,bench::mark
和microbenchmark
。
[在后两个中是更好的选择,因为bench::mark
包括system_time()
,所以system.time()
和microbenchmark
的更高精度的替代品是准确测量和比较R表达式执行时间的可靠来源。 /算法。