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: Error 198 in function evaluator program with nl
From
Sergiy Radyakin <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: Error 198 in function evaluator program with nl
Date
Thu, 14 Nov 2013 14:44:35 -0500
Well, the curly brackets are quite confusing. Are you using them to
highlight something in the posting which is not in your code? This is
exactly where I had 198 and it disappeared once {} were removed. How
comes -if- is not optional?
198 is a syntax error, so trace should reveal exactly the line where
the error occurs. What does it show?
Best, Sergiy
On Thu, Nov 14, 2013 at 1:20 PM, Manuel Flores <[email protected]> wrote:
> Thanks Nick for your reply.
>
> I made the change Nick suggests, but I keep getting the same error message.
>
> I really need to run the program. Thanks in advance for any other help.
>
> Manuel Flores
> [email protected]
>
>
> 2013/11/11 Nick Cox <[email protected]>:
>> The lines
>>
>> scalar `delta' = `at'[1,17]
>>
>> gen double `wterm' = ln(exp(exp({`delta'})*`v16')-1) `if'
>>
>> look problematic to me. The problems start because `delta' is a
>> tempname. You may want something more like
>>
>> gen double `wterm' = ln(exp(exp({delta=`delta'})*`v16')-1) `if'
>>
>> although my wild guess is that other fixes are needed.
>> Nick
>> [email protected]
>>
>>
>> On 11 November 2013 19:11, Manuel Flores <[email protected]> wrote:
>>> Dear statalist users,
>>> I'm trying to estimate a LS nonlinear model with the nl command in
>>> Stata MP/12.1. I have a gravity model of trade, with almost 300
>>> variables (including country fixed effects), so I need to do it
>>> running a FEP. As I'm having troubles with the program I started with
>>> a shorter version of the model without the dummies, keeping just 17
>>> independent variables and 18 parameters.
>>> However, I keep getting a 198 error code, and I can't realize where
>>> the bugs are.
>>> Thanks in advance for any help!
>>>
>>> Here is the program:
>>> ------------------------------
>>> capture program drop nlgrav
>>> set trace on
>>> program nlgrav
>>> version 12
>>> syntax varlist (min=18 max=18) [aw fw iw] if, at(name)
>>> local lexp: word 1 of `varlist'
>>> local v1: word 2 of `varlist'
>>> local v2: word 3 of `varlist'
>>> local v3: word 4 of `varlist'
>>> local v4: word 5 of `varlist'
>>> local v5: word 6 of `varlist'
>>> local v6: word 7 of `varlist'
>>> local v7: word 8 of `varlist'
>>> local v8: word 9 of `varlist'
>>> local v9: word 10 of `varlist'
>>> local v10: word 11 of `varlist'
>>> local v11: word 12 of `varlist'
>>> local v12: word 13 of `varlist'
>>> local v13: word 14 of `varlist'
>>> local v14: word 15 of `varlist'
>>> local v15: word 16 of `varlist'
>>> local v16: word 17 of `varlist'
>>> local v17: word 18 of `varlist'
>>> // Retrieve parameters out of at matrix
>>> tempname b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 delta bun
>>> scalar `b0' = `at'[1,1]
>>> scalar `b1' = `at'[1,2]
>>> scalar `b2' = `at'[1,3]
>>> scalar `b3' = `at'[1,4]
>>> scalar `b4' = `at'[1,5]
>>> scalar `b5' = `at'[1,6]
>>> scalar `b6' = `at'[1,7]
>>> scalar `b7' = `at'[1,8]
>>> scalar `b8' = `at'[1,9]
>>> scalar `b9' = `at'[1,10]
>>> scalar `b10' = `at'[1,11]
>>> scalar `b11' = `at'[1,12]
>>> scalar `b12' = `at'[1,13]
>>> scalar `b13' = `at'[1,14]
>>> scalar `b14' = `at'[1,15]
>>> scalar `b15' = `at'[1,16]
>>> scalar `delta' = `at'[1,17]
>>> scalar `bun' = `at'[1,18]
>>> // Some temporary variables
>>> tempvar linterm1 linterm2 linterm3 wterm heckterm
>>> gen double `linterm1' = (`b0' + `b1'*`v1' + `b2'*`v2' +
>>> `b3'*`v3' + `b4'*`v4' + `b5'*`v5') `if'
>>> summarize `linterm1'
>>> gen double `linterm2' = (`b6'*`v6' + `b7'*`v7' + `b8'*`v8' +
>>> `b9'*`v9' + `b10'*`v10') `if'
>>> gen double `linterm3' = (`b11'*`v11' + `b12'*`v12' + `b13'*`v13' +
>>> `b14'*`v14' + `b15'*`v15') `if'
>>> gen double `wterm' = ln(exp(exp({`delta'})*`v16')-1) `if'
>>> gen double `heckterm' = (`bun'*`v17') `if'
>>> // Compute the first part of the function
>>> replace `lexp' = (`linterm1' + `linterm2' + `linterm3' + `wterm' +
>>> `heckterm') `if'
>>> end
>>>
>>> -------------------------------
>>> I'm creating a matrix with initial values:
>>>
>>> matrix A = J(1, 18, 0)
>>> matrix A[1,1]=10
>>> matrix A[1,2]=1
>>> matrix A[1,17]=1
>>> matrix A[1,18]=1
>>>
>>> And running the program with the following syntax:
>>>
>>> nl grav @ lexp_posit ///
>>> ldistcap ///
>>> border ///
>>> island_both ///
>>> island_to_nonisl ///
>>> island_fr_nonisl ///
>>> landlock_both ///
>>> landl_to_nonldlk ///
>>> landl_fr_nonldlk ///
>>> comleg ///
>>> comlang_off ///
>>> from_heg_to_col ///
>>> from_col_to_heg ///
>>> comcur ///
>>> rta ///
>>> rel_coinc ///
>>> z_bar_hat ///
>>> eta_hat2 ///
>>> , parameters(b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15
>>> delta bun) at(A)
>>>
>>>
>>> Best,
>>> Manuel Flores
>>> *
>>> * For searches and help try:
>>> * http://www.stata.com/help.cgi?search
>>> * http://www.stata.com/support/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/