我正在使用optim
来估算自定义函数的参数。此自定义函数包括在无效参数输入的情况下生成错误消息的函数(它包含多个分布,但假设例如,如果发生正态分布的负标准偏差则会产生错误。因此与{{1}不同NaN
函数的值和警告,此函数停止并返回错误消息。)
现在,如果我在dnorm
中使用BFGS
选项,那么optim
可能会在某些时候尝试无效的参数输入,这会在评估自定义函数时导致错误并停止优化程序。如果我使用optim
选项,这不是问题。
所以,我的问题是:有没有办法将Nelder-Mead
函数与optim
选项一起使用,以便在发生优化的自定义函数出错时它不会停止?
当然,理论上我可以重新编写自定义函数,但这不是一个选项,因为它是更大的包的一部分,在其他情况下需要错误消息。我也知道BFGS
选项,但是,在许多情况下,选择合适的参数边界并不简单(导致错误的实际值可能是训练数据的复杂变换)。
这是一个例子(标准正态分布的参数的最大似然估计)
L-BFGS-B