Statalist


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

Re: st: RE: Return r(111) this time


From   Eva Poen <[email protected]>
To   [email protected]
Subject   Re: st: RE: Return r(111) this time
Date   Mon, 16 Mar 2009 08:45:01 +0000

Almost there. Lose the quotes, and call your program directly.


nlsurwellbehav copy_lnc copy_sl copy_sk copy_sm lnpl lnpk lnpm lnpe
lnq t d1 d2 d3 d4 d5 d6, at (a)

Eva

2009/3/15  <[email protected]>:
> Thank you Eva for not giving me up. I typed
>
>
> matrix a = J(1,62,0)
>
> gen copy_lnc = lnc
>
> gen copy_sl = sl
>
> gen copy_sm = sm
>
> gen copy_se = se
>
> set trace on
>
> nlsur wellbehav "copy_lnc copy_sl copy_sk copy_sm' "lnpl lnpk lnpm lnpe lnq
> t d1 d2 d3 d4 d5 d6", at (a)
>
> Is it right? Here's the return:
>
>  ------------------------------------------------------------- end
> _on_colon_parse ---
>  - local ZERO `"`s(before)'"'
>  = local ZERO `"nlsur, jkopts(eclass) noeqlist"'
>  - local 0 `"`s(after)'"'
>  = local 0 `" wellbehav "copy_lnc copy_sl copy_sk copy_sm' "lnpl lnpk lnpm
> lnpe lnq t d1
>>
>>  d2 d3 d4 d5 d6", at (a)"'
>
>  - quietly syntax [anything(equalok)] [if] [in] [fw aw pw iw] [, VCE(string
> asis) VCE1(s
>>
>> tring asis) * ]
>
> invalid something: quotes do not match
>
>  ----------------------------------------------------------------- end
> _vce_parserun ---
> ---------------------------------------------------------------------------
> end nlsur ---
> r(198);
>
>
>
>
> Quoting Eva Poen <[email protected]>:
>
>> Jingjing,
>>
>> As Nick pointed out, you know the names of your own variables. We
>> don't. So, when I said "right hand side variables" I meant the list of
>> right hand side variables in your equations, in the order that your
>> program needs them. Your program reads something like
>>
>> args lnc sl sk sm lnpl lnpk lnpm lnpe lnq t d1 d2 d3 d4 d5 d6
>>
>> , and only you know what these names stand for. All we know is that
>> the first four are left hand side variables, and the rest are right
>> hand side variables in your equations.
>>
>> So, besides
>>
>> matrix a = J(1,62,0)
>>
>> you need to create copies of your left hand side variables, which  you can
>> do by
>>
>> gen copy_var1 = var1
>>
>> assuming that var1 is the name of your variable. Do this for all your
>> left hand side variables, and then call your program with the list of
>> all 16 variables that you need for your equations, in the order
>>
>> lnc sl sk sm lnpl lnpk lnpm lnpe lnq t d1 d2 d3 d4 d5 d6
>>
>> because this is what your program asks for. Just make sure that,
>> instead of providing the names of your left hand side variables, you
>> provide the names of their _copies_.  -set trace on- and see what
>> happens.
>>
>>
>> As a general remark, you might find it useful to attend a NetCourse by
>> Statacorp, especially NC151.
>>
>>
>> Eva
>>
>>
>>
>> 2009/3/15  <[email protected]>:
>>>
>>> Sorry but could you take a example?
>>>
>>>
>>>
>>> Quoting Nick Cox <[email protected]>:
>>>
>>>> Eva's text was not meant to be taken literally!
>>>>
>>>> Your own syntax commits you to supplying 16 variable names and the  name
>>>> of a matrix in an option.
>>>>
>>>> Nick
>>>> [email protected]
>>>>
>>>> [email protected]
>>>>
>>>> Here's the return:
>>>>
>>>>
>>>> . matrix a = J(1,62,0)
>>>>
>>>> . set trace on
>>>>
>>>> .
>>>> . nlsurwellbehav "copies of dep. variables" "right hand side
>>>> variables" , at(a)
>>>> ---------------------------------------------------------------- begin
>>>> nlsurwellbehav ---
>>>> - version 10.1
>>>> - syntax varlist(min=16 max=16) [if], at(name)
>>>> time-series operators not allowed
>>>> ------------------------------------------------------------------ end
>>>> nlsurwellbehav ---
>>>> r(101);
>>>>
>>>> Quoting Eva Poen <[email protected]>:
>>>>
>>>>> I'm not sure I understand you here. Are you referring to the line
>>>>>
>>>>>> replace `lnc' = 5+`aq'*`lnq' ...
>>>>>
>>>>> where there is a hard coded 5 (not a starting value! This is a set
>>>>> value.), and did you replace this value of 5 by another parameter,
>>>>> e.g. `a0'? In terms of the program, that is not a problem as long as
>>>>> you adjust your code. It would be easiest if you put this parameter
>>>>> last, since this saves you the pain of changing all your `at'[1,x]
>>>>> statements to `at'[1,x+1]. Therefore, my suggestion would be to code
>>>>>
>>>>>       scalar `dmm'=`at'[1,61]
>>>>>       tempname a0
>>>>>       scalar `a0'    =`at'[1,62]
>>>>>
>>>>>
>>>>>       quietly {
>>>>>          replace `lnc' = `a0'+ ....
>>>>>       }
>>>>>
>>>>> Now, for the debugging, just follow my suggestions earlier, and invoke
>>>>> your program directly. You need to create a matrix of initial values,
>>>>> e.g. zeros for all coefficients. If you have 62 parameters, you do
>>>>>
>>>>> matrix a = J(1,62,0)
>>>>>
>>>>> which gives you a row vector of 62 zeros. Next create copies of all
>>>>> your dependent variables, and invoke your program:
>>>>>
>>>>> set trace on
>>>>> nlsurwellbehav "copies of dep. variables" "right hand side  variables"
>>>>> ,
>>>>> at(a)
>>>>>
>>>>> and see where the problem lies.

*
*   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/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index