[R] Maximum Likelihood Estimation

Ben Bolker bolker at ufl.edu
Wed Jun 18 21:13:34 CEST 2008


Todd Brauer <toddbrauer <at> yahoo.com> writes:

> 
> Using R, I would like to calculate algorithms to estimate coefficients á and â
within the gamma function:
> f(costij)=((costij)^á)*exp(â*costij).  I have its logarithmic diminishing line
data
> (Logarithmic Diminishing Line Data Table) and have installed R¢s Maximum
Likelihood Estimation
> package; however, I am unsure which method to apply in order to calculate the
algorisms (i.e.,
> Newton-Raphson Maximization, Nelder-Mead Maximization, etc.)  Any guidance you
all could provide
> would be appreciated.

  For a simple, well-behaved problem (like this one) it doesn't
really matter that much what algorithm you pick. optim()'s default
is Nelder-Mead (typically slightly more robust and less efficient).
Here's some sample code to do a least-squares fit:

x <- read.table("gammafit.txt")
names(x) <- c("x","y")
plot(x)
sum(x)
gfun <- function(p) {
    a <- p[1]
    b <- p[2]
    exp.y <- x$x^b*exp(-a*x$x)
    sum((exp.y-x$y)^2)
}
opt1 <- optim(gfun,par=c(a=0.1,b=1))
v <- opt1$par
curve(x^v["b"]*exp(-v["a"]*x),add=TRUE,col=2)

  However, if you really want to do MLE you may need to specify
your problem a little more carefully -- sum of squares will
find a reasonable answer but likelihood-based inference won't
be right.  Is this a survival problem (in which case you
might want to use the survival package)?  If you construct
your own likelihood function, you might need
to use pgamma(...,lower.tail=FALSE).

  Ben Bolker



More information about the R-help mailing list