Constraints on a set of parameter in the likelihood function with fmincon

1 view (last 30 days)
Hello to everyone, I setted a gamma loglikelihood function in Matlab, defined through a set of parameter theta, that is a 4 by 1 vector [w,a,b,eta] and variable x (a vector n by 1); by using the fmincon I would like to define some constraints. In particular, they are a>=0, b>=0 and a+b<1. The loglikelihood is a function of x and mi variables, where a is associated to x(t-1) and b to mi (t-1) but I've some difficulties in defining them. I think I can set lb=[-Inf 0 0 -Inf] but I don't know how to constrain the sum of a+b to be less than 1,or if I have to pass them in a anonymous function. The loglikood function refers to x, but I've also mi, in the specification that is created within the function by a for cycle.
Thank you in advance.

Accepted Answer

Alan Weiss
Alan Weiss on 6 Feb 2019
I don't understand whether you are optimizing over x, over theta, or over both. If theta is fixed and you are optimizing over x, then you should write
[X,FVAL,EXITFLAG,OUTPUT] = fmincon(@(x)gammamle(theta,x),x0,A,b,[],[],lb,ub,[],options);
where x0 is your initial guess for x. In this case, ensure that your lower and upper bound vectors have the same length as your x0 vector, and the A and b matrices need to expect a variable of that size, too.
If you are optimizing over theta, then you should write
[X,FVAL,EXITFLAG,OUTPUT] = fmincon(@(theta)gammamle(theta,x),theta0,A,b,[],[],lb,ub,[],options);
where theta0 is your initial value of theta.
If you are optimizing over both x and theta, then you need to rewrite your objective function to accept a vector z = [x,theta] and parse out the variables in the function, something like
function f = myfun(z)
theta = z(1:4);
x = z(5:end);
% Your code here for computing y
end
Again, in this case, your lower and upper bounds should be the same length as z, and the A and b matrices need to be adjusted as well. The function call would be
[X,FVAL,EXITFLAG,OUTPUT] = fmincon(@myfun,z0,A,b,[],[],lb,ub,[],options);
Alan Weiss
MATLAB mathematical toolbox documentation

More Answers (1)

Matt J
Matt J on 6 Feb 2019
Edited: Matt J on 6 Feb 2019
Set
lb=[-Inf 0 0 -Inf];
ub=[];
A=[0 1 1 0];
b=1;
  7 Comments
Matt J
Matt J on 6 Feb 2019
Edited: Matt J on 6 Feb 2019
You are creatively inventing your own syntax for fmincon, which of course has no hope of working. As you can see from the fmincon documentation, there is no 3rd input argument allowing you to input a "variable of interest", ind1.The 3rd and 4th arguments are meant to be your inequality data A,b.
Please clarify for us what a "variable of interest" means.
Alessandra Costa
Alessandra Costa on 6 Feb 2019
Edited: Alessandra Costa on 6 Feb 2019
No, I'm following a suggestion code from a microeconomic book, that suggests me to use this specification when I call the fmincon function. But thanks you for the answer

Sign in to comment.

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!