不等式约束优化
我尝试在 R 中使用 optim() 来求解以下方程中的 lambda:
lambda/sigma^2 - ln(lambda/sigma^2) = 1 + 1/Q
受约束:
拉姆达>西格玛^2。
我不确定如何在 R 中设置它。
我也愿意接受替代优化例程,尽管方程看起来是凸的,因此 optim 应该是一个不错的选择。
谢谢你!
I am attempting to use optim()
in R to solve for lambda in the following equation:
lambda/sigma^2 - ln(lambda/sigma^2) = 1 + 1/Q
subject to constraint :
lambda > sigma^2.
I am not sure how one goes about setting up this in R.
I am open to alternative optimization routines as well although the equation seems convex and therefore optim
should be a fine choice.
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您正在尝试解一个方程。是否满足约束只能事后决定。
您可以使用
uniroot
如下所示
You are trying to solve an equation. Whether or not the constraint is met, can only be decided ex post.
You can use
uniroot
as followsgiving
决定这更多的是一个答案而不是评论。
optim 和 optimize 都最小化函数,因此您要做的是编写一个误差函数,该函数返回给定 lambda 的平方误差 (
se( lambda, sigma^2, Q)
,确保您的 lambda 是第一个参数)。然后调用 optim(f = se, lower = sigma^2, sigma^2, Q) ,它将返回最小化误差函数的 lambda 值。如果您有多个数据点(Q、sigma^2 对),则使您的函数成为误差平方和或尝试使用nls()
。Decided this is more an answer than a comment.
Both
optim
andoptimize
minimize functions, so what you want to do is write an error function that returns, say, the squared error for a given lambda (se(lambda, sigma^2, Q)
, make sure your lambda is the first argument). Then calloptim(f = se, lower = sigma^2, sigma^2, Q)
and it will return the value of lambda that minimizes your error function. If you have multiple data points (Q, sigma^2 pairs) then make your function a sum of squared errors or try usingnls()
.