Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <njcoxstata@gmail.com> |
To | "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |
Subject | Re: st: Two seemingly similar NL estimations give different results |
Date | Thu, 23 Jan 2014 10:47:30 +0000 |
As I read this, every time it is called, -nl- replaces parameters with values from the matrix you specified. That reduces the scope for moving away from those initial values. Nick njcoxstata@gmail.com On 23 January 2014 09:21, Michael Boehm <michael.boehm1@gmail.com> wrote: > Dear Nick, > > Thanks for your answer. I am not quite sure I understand it though. > All the parameters we estimate are free to vary in both > implementations of the -nl- command (more detailed code below), but > the estimates are different. Or do I misunderstand something? > > program nlexppremia > version 13.1 > syntax varlist(min=4 max=4) [aw fw iw] if, at(name) > > // Retrieve variables > local lhs: word 1 of `varlist' > local s: word 2 of `varlist' > local j: word 3 of `varlist' > local e: word 4 of `varlist' > > // Retrieve parameters, stored in "at" > tempname bG pi lambdaL1_0 lambdaL2_0 lambdaEL1_0 lambdaEL2_0 > lambdaL1_1 lambdaL2_1 lambdaEL1_1 lambdaEL2_1 > scalar `bG' = `at'[1,1] > scalar `pi' = `at'[1,2] > scalar `lambdaL1_0' = `at'[1,3] > scalar `lambdaL2_0' = `at'[1,4] > scalar `lambdaEL1_0' = `at'[1,5] > scalar `lambdaEL2_0' = `at'[1,6] > scalar `lambdaL1_1' = `at'[1,7] > scalar `lambdaL2_1' = `at'[1,8] > scalar `lambdaEL1_1' = `at'[1,9] > scalar `lambdaEL2_1' = `at'[1,10] > > // replace the lhs directly: > replace `lhs' = `bG'+(`lambdaL1_0'*j+`lambdaL2_0'*j^2) + > log(1+`pi'*exp(`lambdaEL1_0'*j+`lambdaEL2_0'*j^2)*`e') if `s'==0 > replace `lhs' = `bG'+(`lambdaL1_1'*j+`lambdaL2_1'*j^2) + > log(1+`pi'*exp(`lambdaEL1_1'*j+`lambdaEL2_1'*j^2)*`e') if `s'==1 > end > > nl exppremia @ lhs s j e, nparameters(10) > > ******************************************************************** > > program nlexppremia > version 13.1 > syntax varlist(min=4 max=4) [aw fw iw] if, at(name) > > // Retrieve variables > local lhs: word 1 of `varlist' > local s: word 2 of `varlist' > local j: word 3 of `varlist' > local e: word 4 of `varlist' > > // Retrieve parameters, stored in "at" > tempname bG pi lambdaL1_0 lambdaL2_0 lambdaEL1_0 lambdaEL2_0 > lambdaL1_1 lambdaL2_1 lambdaEL1_1 lambdaEL2_1 > scalar `bG' = `at'[1,1] > scalar `pi' = `at'[1,2] > scalar `lambdaL1_0' = `at'[1,3] > scalar `lambdaL2_0' = `at'[1,4] > scalar `lambdaEL1_0' = `at'[1,5] > scalar `lambdaEL2_0' = `at'[1,6] > scalar `lambdaL1_1' = `at'[1,7] > scalar `lambdaL2_1' = `at'[1,8] > scalar `lambdaEL1_1' = `at'[1,9] > scalar `lambdaEL2_1' = `at'[1,10] > > // Compute RHS of regression > tempvar RHS > qui gen `RHS'=. > replace `RHS' = `bG'+(`lambdaL1_0'*j+`lambdaL2_0'*j^2) + > log(1+`pi'*exp(`lambdaEL1_0'*j+`lambdaEL2_0'*j^2)*`e') if `s'==0 > replace `RHS' = `bG'+(`lambdaL1_1'*j+`lambdaL2_1'*j^2) + > log(1+`pi'*exp(`lambdaEL1_1'*j+`lambdaEL2_1'*j^2)*`e') if `s'==1 > > //Assign lhs=rhs > replace `lhs' = `RHS' > > end > > nl exppremia @ lhs s j e, nparameters(10) > > ******************************************************************** > * > * 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/