Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: RE: Optimize for 2 unknowns looping over observations using Mata
From
William Pratt <[email protected]>
To
[email protected]
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 <[email protected]> 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 <[email protected]> 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
>> <[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.
>>>
>>> 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/
--
[email protected]
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/