我估计一个非线性系统(通过看似不相关的回归- SUR),使用systemfit (nlsystemfit()函数)软件包,包含4个方程,32个参数来估计(!)和412项观察。但是我的代码需要花费很长时间(我的笔记本电脑,它不是超级强大的)。到目前为止,这一过程持续了13个小时。我不是计算方面的专家,但不久前有人解释了算法时间复杂性的概念(或大o),然后根据这个概念,计算某一算法的时间可以依赖于观察到的数目和/或系数的特定函数关系。
因此,我正在考虑停止我的过程,试图简化模型(暂时),并尝试运行一些更简单的东西,只是检查估计的参数到目前为止是否有感觉。然后运行一个完整的模型。
但是,如果我能够更改模型中的关键元素,那么所有这些都是有意义的,这可以大大减少处理时间。这就是为什么我关注谷歌( nlm-package,nlsystemfit()函数依赖于nlm)的时间复杂性,但没有成功。所以,这是我的问题:在运行整个模型之前,有人知道我在哪里可以找到这些信息,或者至少给我一些关于如何测试非线性系统的建议?
发布于 2020-02-13 16:12:13
由于您没有提供关于您的模型的任何实质性信息,也没有提供相应的代码,因此很难对您的情况进行改进。
从你说的:
因此,我正在考虑停止我的过程,尝试简化模型(暂时),并尝试运行一些更简单的东西,但是如果估计的参数到目前为止已经确定了,我只想检查一下。然后运行一个完整的模型。
您似乎需要基准测试或获得执行所需的测量时间,就像在您的情况下一样。(尽管它还可以处理内存使用或其他性能指标)
在R中对代码进行基准测试有很多种方法,包括在执行算法/函数之前和之后使用Sys.time()或system.time(),或者库,例如rbenchmark (它是system.time函数的简单包装器)、tictoc、bench和microbenchmark。
最后两个选项是较好的选择,因为bench::mark包括system_time(),一个较高精度的替代system.time()和microbenchmark是准确测量和比较R表达式/算法执行时间的可靠来源。
https://stackoverflow.com/questions/60210469
复制相似问题