Using FIND |
FIND is the “catch-all” optimization instruction. If you can’t do it any other way, you can probably do it with FIND. Its great advantage is that it can optimize an expression that takes several RATS instructions to calculate and doesn’t fall into one of the forms treated by the existing optimization instructions. For instance, we have used it to estimate “hyperparameters” in Kalman filter problems.
FIND works quite differently from the other estimation instructions. The FIND instruction itself controls a set of other instructions, which are the ones which actually compute the function value. The syntax is
find(options) maximum/minimum/root expression
statement block: instruction or block of instructions used in computing expression
end find
Like the other non-linear estimation instructions, the options include METHOD, ITERS and CVCRIT. The default estimation method, however, is SIMPLEX.
Just as with the other estimation instructions, you need to put your free parameters into a PARMSET using NONLIN and give them initial guess values. The main difference, though, is that the function being optimized is supplied by you, through the expression on FIND and an instruction or set of instructions which are used to compute it. Typically, expression will just be a real variable which will be set by those instructions. If so, you also need to DECLARE that variable, since RATS won’t see the instruction that sets it until after the FIND.
The program NONLINEAR.RPF shows several ways to estimate the parameters in a non-standard production function, with FIND used to estimate the one parameter that makes it non-linear (concentrating out the remaining parameters with a simple linear regression).
Copyright © 2025 Thomas A. Doan