【发布时间】:2014-09-05 19:26:02
【问题描述】:
我尝试估计函数 (f(x)) 的最大对数似然。很抱歉,我无法发布整个功能,因为它很长而且很痛苦。目标是根据 x 优化函数,其中 x 是一个类似 x = c(x[1],..,x[7]) 的数组,此外内部还有几个带有不同参数的循环。但是我通过使用几个输入参数来测试这个函数,它似乎工作正常。 (没有错误等)
最大化我使用的功能:
library('nloptr')
bobyqa(c(0.3, 0.3, 1,70, 0.005, 0.02,70), Log.Likelihoodsum, lower = c(0.01, 0.01, 1,4, 0.001, 0.001,4), upper = c(0.6, 0.6, 1,90, 0.01, 0.1,90),control = list(xtol_rel = 1e-7))
问题出现在输出中:
> bobyqa(c(0.3, 0.3, 1,70, 0.005, 0.02,70), Log.Likelihoodsum, lower = c(0.01, 0.01, 1,4, 0.001, 0.001,4), upper = c(0.6, 0.6, 1,90, 0.01, 0.1,90),control = list(xtol_rel = 1e-7)) #Function explodes for some values, i.e. 1000 oder mu oder sigma..
$par
[1] 0.600 0.600 1.000 4.000 0.001 0.100 4.000
$value
[1] 1.210564
$iter
[1] 113
$convergence
[1] 4
$message
[1] "NLOPT_XTOL_REACHED: Optimization stopped because xtol_rel or xtol_abs (above) was reached."
如您所见,“最佳”参数是上限和下限的混合。有谁知道我该如何进行?我是否犯了一个你可以从这个描述中看到的根本错误?
顺便说一句:我通过插入较低的上层和 sart 级别来测试该函数,并为起始数组设置一个更高的值,一个较低的值用于上层,一个较高的值用于下层数组。为什么它不只是给我起始数组作为输出? (由于数值高于实际输出)
真的很感激任何帮助..
谢谢
【问题讨论】: