On Wed, 26 Oct 2011, Giuseppe Vittucci wrote:

> The following code (adapted from the manual):
>
> mle logl = check ? - ln(pstr_cssr(y,X,q,gamma,c,m,Z) : NA
> scalar check = (gamma > zeros(r,1)) && (c >= c_min) && (c <=c_max)
> params gamma c
> end mle
>
> simply checks that the unconstrained maximum is in the parameter space
> and returns an error if it is not so.
> But is there a way to find such a constrained maximum in gretl?
>
> If there is not, what is the best way to circumvent the problem?

There isn't. The idea is to check whether the parameters are admissible 
when the loglik is computed, just like you're doing.

A couple of tips:

1) I suppose gamma is a vector; you can achieve the same result as what 
I think you're tryng to do by writing (gamma > 0) (cool, huh?)

2) if you have constrained parameters, you're probably much better off if 
you use some 1-to-1 transformation to some unbounded parameter. In your 
example, assuming you really mean to use <= and >= rather than strict 
inequalities, you may use

mle logl = ln(pstr_cssr(y,X,q,gamma,c,m,Z)
        matrix gamma = exp(lg)
        scalar c = c_min + 0.5*(sin(ac) + 1)*c_max
        params lg ac
end mle

and then retrieve the $vcv for your original parametrisation by the delta 
method. Otherwise, if what you mean is really c_min < c < cmax (more 
customary in ml problems), then a nicer alternative is

        scalar c = c_min + 0.5*(tanh(ac) + 1)*c_max

or perhaps

        scalar c = c_min + cnorm(ac)*c_max

HTH,

Riccardo (Jack) Lucchetti
Dipartimento di Economia
Università Politecnica delle Marche

r.lucchetti(a)univpm.it
http://www.econ.univpm.it/lucchetti

Reply via email to