Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Yuliya Romanenko <romanenko.yulja@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | st: External variable does not change within a user-defined program |
Date | Wed, 26 Mar 2014 13:23:10 +0100 |
Dear all, I am running Maximum Likelihood and I am interested in saving the contribution of each observation to the log-likelihood. I am using the suggestion to define the external variable -lnLL- before my likelihood code and change the code of my program to include replacement of -lnLL- with an internally computed value of log-likelihood. However, after defining the model and running the -ml maximize- I see no change in my -lnLL- variable despite the fact that the value of the log-likelihood does change. To be more clear, I include a simple example below: . sysuse auto, clear . program define mynorm_lf 1. args lnf xb ln_sigma 2. qui replace `lnf' = lnnormalden($ML_y1, `xb', exp(`ln_sigma')) 3. qui replace lnLL=`lnf' . end . gen double lnLL=. . ml model lf mynorm_lf (xb: mpg = foreign rep78 displacement) (ln_sigma:) . ml max initial: log likelihood = -16870.907 alternative: log likelihood = -6014.006 rescale: log likelihood = -343.25904 rescale eq: log likelihood = -240.51981 Iteration 0: log likelihood = -240.51981 (not concave) ... Iteration 4: log likelihood = -190.26779 Iteration 5: log likelihood = -190.26779 Number of obs = 69 Wald chi2(3) = 91.91 Log likelihood = -190.26779 Prob > chi2 = 0.00 ------------------------------------------------------------------------------ mpg | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- xb | ... ... -------------+---------------------------------------------------------------- ln_sigma | ... ... ------------------------------------------------------------------------------ . tabstat lnLL, stat(sum) variable | sum -------------+---------- lnLL | 0 ------------------------ After running this all in Stata 13 I see that -lnLL- is still a variable of missing values, though the log-likelihood does change (= -190.26779 after 5 iterations) and I would expect the -tabstat lnLL, stat(sum)- to give me exactly -190.26779. So I am wondering why aren't all those changes saved in my external -lnLL-? Is not the -qui replace lnLL=`lnf'- line executed? I would be very grateful for any advice on this. Kind regards, Yuliya * * 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/