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

fmincongammaloglikelihoodMATLAB

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.

Best Answer

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