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: Could someone help me with my nl evaluation program? I update my program.
From
Nick Cox <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: Could someone help me with my nl evaluation program? I update my program.
Date
Fri, 31 Jan 2014 14:37:23 +0000
"did not work" is difficult to evaluate here. You don't show the code
you used or explain how it did not work, so hoping for good advice is
optimistic. Macro length is unlikely to be an issue providing that you
define your macros appropriately.
What you may be experiencing is just that more complicated models with
more adjustable parameters are typically (much) more difficult to fit.
Nonlinear least squares is beautifully attractive when it works
directly, but it may need very good guesses at parameter values to
converge well even when the model is suitable.
Nick
[email protected]
On 31 January 2014 13:37, 张志强 <[email protected]> wrote:
> Thanks Scott.
> My program is working well if the dyadic of individual distance is
> smaller than 20. is there a limitation for local macro number in nl
> command in stata ?
> I mean if the dist variables is larger than 20, my nl command did not work.
> I sincerely hope that you can help me!
>
>
>
> 2014-01-30 Scott Merryman <[email protected]>:
>> It looks like the -`if'- is on a different line following the -gen
>> double...- statement.
>>
>> The example below works:
>>
>>
>> sysuse auto,clear
>> gen lnprice = ln(price)
>> gen lowweight = (weight < 3000)
>> gen lowgear = (gear < 3)
>>
>> capture program drop nlwage1
>> program nlwage1
>> version 12
>> syntax varlist(min=5 max=5) if, at(name)
>> local lnwage : word 1 of `varlist'
>> local income : word 2 of `varlist'
>> local dist1: word 3 of `varlist'
>> local dist2: word 4 of `varlist'
>> local dist3:word 5 of `varlist'
>> tempname k0 k1 k2
>> scalar `k0' = `at'[1, 1]
>> scalar `k1' = `at'[1, 2]
>> scalar `k2' = `at'[1, 3]
>> tempvar eterm
>> gen double `eterm'=`income'*exp(`k2'*`dist1') ///
>> +`income'*exp(`k2'*`dist2') ///
>> +`income'*exp(`k2'*`dist3') `if'
>> replace `lnwage' = `k0' +`k1'*ln(`eterm') `if'
>> end
>>
>> nl wage1 @ lnprice mpg foreign lowweight lowgear, ///
>> parameters(k0 k1 k2 ) initial(k0 0.05 k1 0.02 k2 0.03)
*
* 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/