Re: [R] Symbolic Maximum Likelihood in R

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Mon 04 Jul 2005 - 19:30:39 EST

On 7/3/05, Doran, Harold <HDoran@air.org> wrote:
> Dear List:
>
> Is any one aware of a package that would extend the D() function and allow for one to maximize a likelihood function symbolically? Something akin to Solve[x==0, parameter] function in Mathematica?
>
> Clearly R has the capacity to _compute_ MLEs given a set of data. But, I'm looking for a package that would allow for me to define the likelihood function, find the 1st order partial derivative of this function (which can already be handled in D()), and then symbolically maximize this function?
>

There are a number of free symbolic mathematics packages such as Maxima and Yacas. Here is a simple example in Yacas. (Also see http://finzi.psych.upenn.edu/R/Rhelp02a/archive/31418.html for transferring functions from yacas to R).

C:\usr\yacas> yacas
[...various startup messages...]
In> f(x) := Exp(-(x-mu)^2)/Sqrt(2*Pi)
Out> True;
In> logf(x) := Ln(f(x));
Out> True;
In> loglik := logf(x1) + logf(x2) + logf(x3); Out> Ln(Exp(-(x1-mu)^2)/Sqrt(2*Pi))+Ln(Exp(-(x2-mu)^2)/Sqrt(2*Pi))+Ln(Exp(-(x3-m u)^2)/Sqrt(2*Pi));
In> score := D(mu) loglik;
Out> (-(-2)*(x2-mu)*Exp(-(x2-mu)^2)*2*Pi)/(2*Pi*Exp(-(x2-mu)^2))-((-2)*(x1-mu)*E xp(-(x1-mu)^2)*2*Pi)/(2*Pi*Exp(-(x1-mu)^2))-((-2)*(x3-mu)*Exp(-(x3-mu)^2)*2*Pi)/ (2*Pi*Exp(-(x3-mu)^2));
In> score := Simplify(score);
Out> 2*(x2+(-3)*mu+x1+x3);
In> Solve(score == 0, mu);
Out> (x2+x1+x3)/3;

R-help@stat.math.ethz.ch mailing list