Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Fwd: st: RE: Optimize for 2 unknowns looping over observations using Mata

 From William Pratt <[email protected]> To [email protected] Subject Fwd: st: RE: Optimize for 2 unknowns looping over observations using Mata Date Mon, 5 Mar 2012 15:02:44 -0600

```Nick and Tim,
Defining i, changing (optimize_init_argument), and moving the location
within the loop did produce what I would consider an improvement (less

William

On Mon, Mar 5, 2012 at 10:56 AM, Mak, Timothy
<[email protected]> wrote:
>
> Hi,
>
> I think it may be that you've mis-written your arguments for your function:
>
> Instead of (todo, p, x, lnf, g, H)
>
> it should be (todo, p, i, lnf, g, H)
>
> Still, I think a better way of writing your function would be to take your line:
>
>      x = st_data( i,("sige", "Ix", "divrate", "rf", "time", "ve", "sqrtT"))
>
> out of your function, and put it in your loop. And replace:
>
>        optimize_init_argument(S,1,i)
>
> with
>
>        optimize_init_argument(S,1,x)
>
> Hope that helps.
>
> Tim
>
> **time and sqrtT are constant
> **sige, Ix, divrate, rf, ve
>
>
> gen double a = .
> gen double b = .
> mata
> void bsmp0(todo, p, x, lnf, g, H)
>  {
>      a = p[1]
>      b = p[2]
>      x = st_data( i,("sige", "Ix", "divrate", "rf", "time", "ve", "sqrtT"))
>
>        f1= a * exp(-x[3]*x[5])*(normal(ln(a/x[2])+x[5]*(x[4]-x[3]+(b^2/2)))/(b*x[7]))
>        f2= x[2]*exp(-x[4]*x[5])*(normal(ln(a/x[2])+x[5]*(x[4]-x[3]+(b^2/2)))/(b*x[7]))
>
>        f3= (1-exp(-x[3]*x[5]))*a-x[6]
>        f4=  ((a*b*exp(-x[3]*x[5]))/x[6])*normal(ln(a/x[2])+
> x[5]*(x[4]-x[3]+(b^2/2)))/(b*x[7]))-x[1]
>        lnf = (f1-f2)^2+(f3-f4)^2
> }
>  for(i=1;i<=st_nobs();i++) {
>   S = optimize_init()
>   optimize_init_evaluator(S, &bsmp0())
>   optimize_init_evaluatortype(s,"v0")
>   optimize_init_params(S,(0,0))
>   optimize_init_argument(S,1,i)
>  p = optimize(S)
>  st_store(i,"va", a)
>  st_store(i,"siga", b)
>   }
> end
>
>
> After trying numerous combinations based on help, the mata manual and
> online guides, I am not sure how to proceed.
>
>
> William
>
>
> . mata
> ------------------------------------------------- mata (type end to
> exit) ----------------------------------------
>
> : void bsmp0(todo, p, x, lnf, g, H)
> >  {
> >       a = p[1]
> >       b = p[2]
> >       x = st_data( i,("sige", "x", "divrate", "r", "time", "ve", "sqrtT"))
> >
> > f1= a * exp(-x[3]*x[5])*normal(ln(a/x[2])+x[5]*(x[4]-x[3]+(b^2/2)))/(b*x[7]))
> too many ')'
> r(3000);
> :
> : f2= x[2]*exp(-x[4]*x[5])*normal(ln(a/x[2])+x[5]*(x[4]-x[3]+(b^2/2)))/(b*x[7]))
> too many ')'
> r(3000);
> :
> : f3= (1-exp(-x[3]*x[5]))*a-x[6]
> r(3499);
> :
> : f4=  ((a*b*exp(-x[3]*x[5]))/x[6])*normal(ln(a/x[2])+
> x[5]*(x[4]-x[3]+(b^2/2)))/(b*x[7]))-x[1]
> too many ')'
> r(3000);
> :
> : lnf = (f1-f2)^2+(f3-f4)^2
> r(3499);
> :
> : }
> expression invalid
> r(3000);
> :
> :   for(i=1;i<=st_nobs();i++) {
> >    S = optimize_init()
> >    optimize_init_evaluator(S, &bsmp0())
> >    optimize_init_evaluatortype(s,"v0")
> >    optimize_init_params(S,(0,0))
> >    optimize_init_argument(S,1,i)
> >   p = optimize(S)
> >   st_store(i,"va", a)
> >   st_store(i,"siga", b)
> >    }
> r(3499);
>
>
> --
> [email protected]
> University of Texas-Pan American
> Department of Finance and Economics
> South Texas Border Health Disparities Center
> o - 956.665.7937
> f - 956.665.7310
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/

--
[email protected]
University of Texas-Pan American
Department of Finance and Economics
South Texas Border Health Disparities Center
o - 956.665.7937
f - 956.665.7310

--
[email protected]
University of Texas-Pan American
Department of Finance and Economics
South Texas Border Health Disparities Center
o - 956.665.7937
f - 956.665.7310

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```

• Follow-Ups: