Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down at the end of May, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
William Pratt <williamrpratt@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: RE: Optimize for 2 unknowns looping over observations using Mata |

Date |
Tue, 6 Mar 2012 10:44:35 -0600 |

Nick thank you again for your keen eye. Problem solved with your observation and adjustment of the starting points. Again many thanks, William On Tue, Mar 6, 2012 at 2:31 AM, Nick Cox <njcoxstata@gmail.com> wrote: > The error message shows that you asked Mata to use "s", but it could > not find any such beast. So, you need to look for references to "s", > which are likely to be typos or premature references. Have a careful > look at > > optimize_init_evaluatortype(s,"v0") > > Nick > > On Mon, Mar 5, 2012 at 9:02 PM, William Pratt <williamrpratt@gmail.com> wrote: >> 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); >>> >>> >>> -- > > * > * 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 * * 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/

**References**:**st: Optimize for 2 unknowns looping over observations using Mata***From:*William Pratt <williamrpratt@gmail.com>

**st: RE: Optimize for 2 unknowns looping over observations using Mata***From:*"Mak, Timothy" <timothy.mak07@imperial.ac.uk>

**Fwd: st: RE: Optimize for 2 unknowns looping over observations using Mata***From:*William Pratt <williamrpratt@gmail.com>

**Re: st: RE: Optimize for 2 unknowns looping over observations using Mata***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**st: binary_mediation with imputed data** - Next by Date:
**Re: st: Issue with hazard function generated by sts graph** - Previous by thread:
**Re: st: RE: Optimize for 2 unknowns looping over observations using Mata** - Next by thread:
**st: Use of aweights command in xtivreg2** - Index(es):