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: nlsur aids function evaluator program
From
"Ivica Rubil" <[email protected]>
To
<[email protected]>
Subject
RE: st: nlsur aids function evaluator program
Date
Fri, 28 Oct 2011 16:21:00 +0200
Thanks, Brian.
--
Ivica Rubil
Ekonomski institut / The Institute of Economics, Zagreb
Trg J. F. Kennedyja 7, 10 000 Zagreb, Croatia
tel. +385-1-2362-269
fax. +385-1-2335-165
[email protected]
www.eizg.hr
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Brian P. Poi
Sent: 28. listopad 2011 15:50
To: [email protected]
Subject: Re: st: nlsur aids function evaluator program
Ivica Rubil wrote:
> Dear all,
> I copied the code for -nlsur- AIDS demand system from the Stata
> reference manual. But when I run it, Stata returns:
> " nlsuraids returned 101
> verify that nlsuraids1 is a function evaluator program"
> What's the problem
>
>
> Here's the code:
>
> program nlsuraids
> version 11
>
> syntax varlist(min=8 max=8), at(name)
> tokenize `varlist'
> args w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnexp
>
> tempname a1 a2 a3 a4
> scalar `a1' = `at'[1,1]
> scalar `a2' = `at'[1,2]
> scalar `a3' = `at'[1,3]
> scalar `a4' = 1 - `a1' - `a2' - `a3'
>
> tempname b1 b2 b3
> scalar `b1' = `at'[1,4]
> scalar `b2' = `at'[1,5]
> scalar `b3' = `at'[1,6]
>
> tempname g11 g12 g13 g14
> tempname g21 g22 g23 g24
> tempname g31 g32 g33 g34
> tempname g41 g42 g43 g44
> scalar `g11' = `at'[1,7]
> scalar `g12' = `at'[1,8]
> scalar `g13' = `at'[1,9]
> scalar `g14' = - `g11' - `g12' - `g13'
> scalar `g21' = `g12'
> scalar `g22' = `at'[1,10]
> scalar `g23' = `at'[1,11]
> scalar `g24' = - `g21' - `g22' - `g23'
> scalar `g31' = `g13'
> scalar `g32' = `g23'
> scalar `g33' = `at'[1,12]
> scalar `g34' = - `g31' - `g32' - `g33'
> scalar `g41' = `g14'
> scalar `g42' = `g24'
> scalar `g43' = `g34'
> scalar `g44' = - `g41' - `g42' - `g43'
>
> quietly {
>
> tempvar lnpindex
> gen double `lnpindex' = 5 + `a1'*`lnp1' + `a2'*`lnp2' +
> `a3'*`lnp3' + `a4'*`lnp4'
> forvalues i=1/4 {
> forvalues j=1/4 {
> replace `lnpindex' = `lnpindex' +
> 0.5*`g`i'`j''*`ln`i''*`ln`j''
> }
> }
>
> replace `w1' = `a1' + `g11'*`lnp1' + `g12'*`lnp2' +
> `g13'*`lnp3' + `g14'*`lnp4' + `b1'*(`lnexp' - `lnpindex')
> replace `w2' = `a2' + `g21'*`lnp1' + `g22'*`lnp2' +
> `g23'*`lnp3' + `g24'*`lnp4' + `b2'*(`lnexp' - `lnpindex')
> replace `w3' = `a3' + `g31'*`lnp1' + `g32'*`lnp2' +
> `g33'*`lnp3' + `g34'*`lnp4' + `b3'*(`lnexp' - `lnpindex')
> }
>
> end
>
> use http://www.stata-press.com/data/r11/food, clear
>
> nlsur aids @ w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnexp, parameters(a1 a2 a3
b1
> b2 b3 g11 g12 g13 g22 g23 g33) neq(3)
>
>
Ivica,
The -syntax- statement of a function evaluator program must accept 'if'
conditions, even if you don't specify an 'if' condition in your call to
-nlsur-. Hence, the line
syntax varlist(min=8 max=8), at(name)
must read
syntax varlist(min=8 max=8) if, at(name)
Also, this line:
> replace `lnpindex' = `lnpindex' +
> 0.5*`g`i'`j''*`ln`i''*`ln`j''
should refer to `lnp`i'' and `lnp`j'', not `ln`i'' and `ln`j''.
To get the maximum-likelihood estimates, you'll need to include the
option 'ifgnls' in your -nlsur- command.
Brian P. Poi
Senior Economist
StataCorp LP
*
* 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/