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: Maximum likelihood estimation
From
Joseph Monte <[email protected]>
To
[email protected]
Subject
Re: st: Maximum likelihood estimation
Date
Wed, 13 Feb 2013 22:40:28 +0000
Thanks Brian. Sorry for the reposts. I'll try to be clearer next time.
Joe
On Wed, Feb 13, 2013 at 10:00 PM, Brian P. Poi <[email protected]> wrote:
> On 02/13/2013 03:27 PM, Joseph Monte wrote:
>>
>> Dear Statalisters,
>>
>> I'll try again with a little more info since I did not get any
>> responses. Here is the code I have so far (based on previous Statalist
>> posts and "Maximum Likelihood estimation with Stata" by
>> Gould, Pitbaldo and Poi, 4th ed.). The paper I cited in my first email
>> below models the log of the variance of the regression error in
>> equation 2 while I believe I have modelled the log of sigma. I would
>> preferably like to model the log of the variance as in the paper cited
>> but am not sure how.
>>
>> cscript
>> program mynormal_lf1
>> version 12
>> args todo b lnfj g1 g2
>> tempvar mu lnsigma sigma
>> mleval `mu' = `b', eq(1)
>> mleval `lnsigma' = `b', eq(2)
>> quietly {
>> gen double `sigma' = exp(`lnsigma')
>> replace `lnfj' =
>> ln(normalden($ML_y1,`mu',`sigma'))
>> if (`todo'==0) exit
>> tempvar z
>> tempname dmu dlnsigma
>> gen double `z' = ($ML_y1-`mu')/`sigma'
>> replace `g1' = `z'/`sigma'
>> replace `g2' = `z'*`z'-1
>> }
>> end
>>
>>
>> ml model lf1 mynormal_lf1 (mu: y = x1 x2 x3 x4 x5 x6 x7 x8 x9)
>> (lnsigma: y = x1 x2 x3 x4 x5 x6 x7 x8 x9)
>> ml max
>>
>> Thanks,
>>
>> Joe
>>
>>
>
> Joe,
>
> Letting Stata do the work of computing numerical derivatives, here is the
> equivalent program that models the log variance rather than the log standard
> deviation:
>
> -------------
> cscript
>
> program mynormal_lf0
> version 12
> args todo b lnfj
> tempvar mu lnvar var
> mleval `mu' = `b', eq(1)
> mleval `lnvar' = `b', eq(2)
> quietly {
> gen double `var' = exp(`lnvar')
> replace `lnfj' = ln(normalden($ML_y1,`mu',sqrt(`var')))
> }
> end
>
> ml model lf0 mynormal_lf0 (mu: y = x1 x2 x3 x4 x5 x6 x7 x8 x9) ///
> (lnvar: y = x1 x2 x3 x4 x5 x6 x7 x8 x9)
> ml max
> -------------
>
> The only real change is that since the normalden() function's third argument
> is the standard deviation, not the variance, we need to take the square root
> of the variance. By construction, the variance variable `var' will be
> non-negative, so taking the square root is not a problem here.
>
> -- Brian Poi
> -- [email protected]
>
>
> *
> * 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/