2013-11-21 93 views
0

Matlab中有相当于nlminb在R?在Matlab中最接近R的nlminb的近似值是什么?

我意识到lsqcurvefit在Matlab中可用,但我特别需要一个使用基于派生方法的函数,理想情况下,它与nlminb使用的方法完全相同。

nlminbthis Stats.StackExhange.com answer中描述。

我不想使用由lsqcurvefit强加的'trust-region-refelective'方法来处理受限制的问题。

+0

您是否真的在链接的Stats.StackExhange.com问题/答案中执行最大似然估计? – horchler

+0

不,我正在执行最小二乘法拟合,但我想测试一个新的优化器对基于衍生的一个。 – Bazman

回答

1

如果指定了合适的'Algorithm'选项,则Matlab的fmincon将使用带有约束的Quasi-Newton methods。显然R的nlminb是基于L-BFGS-B code。使用'interior-point'算法逼近黑森州can be specified的这种方法:

options = optimoptions('fmincon','Algorithm','interior-point','Hessian','lbfgs'); 

除非你正在运行的内存,使用'lbfgs'在默认'bfgs'的价值是值得怀疑的。尝试一切。

+0

在levenberg-marquardt算法中使用lsqcurvefit(即,我放弃了约束条件,但要确保最初的猜测完全在期望的边界内)也能很好地逼近nlminb?或者fmincon更接近? – Bazman

+1

不知道。 Levenberg-Marquardt不是一种准牛顿方法。它是[Gauss-Newton](http://en.wikipedia.org/wiki/Gauss-Newton_algorithm)和梯度下降的组合。它非常强大。 'lsqcurvefit'是为数据拟合而设计的,所以如果这是你的应用程序的话。我不明白你为什么可以使用默认的''trust-region-reflective''',除非其中一个[必需的条件不被使用] [http://www.mathworks.com/help/optim /ug/lsqcurvefit.html#f192109),该函数会警告你。 – horchler

+0

嘿,当我尝试与fminunc运行此我得到:???错误使用==> optimset at 223 OPTIONS参数的无效值算法: 必须是'活动集','信赖区域反射','内部点','内部点凸面', 'levenberg 'marquardt','trust-region-dogleg','lm-line-search'或'sqp'。 错误在==> Optimal_Lambda_fmin在64 options = optimset('Algorithm','quasi-newton','HessUpdate','bfgs','MaxFunEvals',10000,'TolFun',1e-16,'MaxIter' ,10000);虽然“准牛顿”被显示为2013b版的可用算法,但我正在使用2011a! – Bazman

相关问题