Statalist


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

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


From   jjc.li@utoronto.ca
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: RE: Return r(111) this time
Date   Sun, 15 Mar 2009 18:53:58 -0400

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 <eva.poen@gmail.com>:

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  <jjc.li@utoronto.ca>:
Sorry but could you take a example?



Quoting Nick Cox <n.j.cox@durham.ac.uk>:

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
n.j.cox@durham.ac.uk

jjc.li@utoronto.ca

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 <eva.poen@gmail.com>:

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/





*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index