gretl 2024b. Windows 10 64-bit.

Is there a way to impose a non-negativity/positivity constraint on the gmm command for an estimated parameter when using the --lbfgs option

I am trying to estimate  variance(scale) parameters of a distribution. The theoretical moment condition is 

qw^2 + qu^2 = (1/n)sum res^2     

(sum of squared residuals estimates the population variance, which is the sum of two separate variances, so we need both qw>0, qu>0). 


I wrote one of the two related orthogonality conditions as 

series eq2 = (res2 - (sqrt(qw))^4 - (sqrt(qu))^4 ) *(1/obsn)

(obsn = n) .

Without the --lbfgs option, it appears that the positivity constraint imposed implicitly through the use of the square root, is respected.

But when I include the --lbfgs option in the gmm command, the estimator does not seem to be bothered with the square root any more; I get for example (with --lbfgs)

...

Iteration    2: GMM criterion = 1.45609463344 (steplength = 0.0197114)
Parameters:      0.26238     0.26007
Gradients:      -0.87662      1.0848 (norm 5.06e-001)

Iteration    3: GMM criterion = 0.911545264969 (steplength = 13)
Parameters:     0.041548     0.51495
Gradients:     -0.019980      1.4100 (norm 6.03e-001)

Iteration    4: GMM criterion = NA (steplength = 0.6875)
Parameters:     -0.57965      1.3822
Gradients:     -0.019980      1.4100 (norm 9.90e-001)

Iteration    5: GMM criterion = NA (steplength = 0.6875)
Parameters:      -1.2008      2.2495
Gradients:     -0.019980      1.4100 (norm 1.26e+000)

Iteration    6: GMM criterion = NA (steplength = 0.6875)
Parameters:      -1.8220      3.1169
Gradients:     -0.019980      1.4100 (norm 1.49e+000)

...

--- FINAL VALUES:
GMM criterion = NA (steplength = 0.6875)
Parameters:      -51.518      72.501
Gradients:     -0.019980      1.4100 (norm 7.19e+000)


I detect that once one parameter becomes negative, the values of the gradients do not change anymore, which may say something about the inner workings of the gmm command with --lbfgs

--

A last-minute thought: in gretl's  guide (in  chapter 37 for numerical methods) we read

<< The primary case for using L-BFGS-B, however, is constrained optimization: this algorithm supports constraints on the parameters in the form of minima and/or maxima. In gretl this is implemented by the function BFGScmax (‘c’ for constrained). The syntax is basically similar to that of BFGSmax, except that the first argument must followed by specification of a “bounds” matrix. >>

So, maybe, because when lbfgs is used as an option in gmm we do not specify this "bounds" matrix, this creates the issue?

But regardless, how can it happen that it takes a negative number, puts it inside a square root, and doesn't at least abort if not move away, but keeps on trying negative candidates?

-- 
Alecos Papadopoulos PhD
Affiliate Researcher
Dpt of Economics, Athens University of Economics and Business
Foundation for Economic and Industrial Research (IOBE)
web: alecospapadopoulos.wordpress.com/
ORCID:0000-0003-2441-4550