Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | William Pratt <williamrpratt@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
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, Thank you for your comments, I greatly appreciate your suggestions. Defining i, changing (optimize_init_argument), and moving the location within the loop did produce what I would consider an improvement (less error responses), however I still receive "3499 s not found". Any additional ideas?, thank you again. William On Mon, Mar 5, 2012 at 10:56 AM, Mak, Timothy <timothy.mak07@imperial.ac.uk> 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. > > Thanks for your consideration, > > 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] > <istmt>: 3499 x not found > 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 > <istmt>: 3499 f1 not found > 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) > > } > <istmt>: 3499 s not found > r(3499); > > > -- > wrpratt@utpa.edu > University of Texas-Pan American > College of Business Administration > 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/ -- wrpratt@utpa.edu University of Texas-Pan American College of Business Administration Department of Finance and Economics South Texas Border Health Disparities Center o - 956.665.7937 f - 956.665.7310 -- wrpratt@utpa.edu University of Texas-Pan American College of Business Administration 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/