Try:

mlogl_out <- nlm(mlogl, mean(vsamples), vsamples)

or

mlogl_out <- nlm(mlogl, mean(vsamples), x=vsamples)

The argument vsamples=vsamples is passed to mlogl, since nlm does not recognize it. But mlogl doesn't have a vsamples argument, only alpha and x arguments. So you have to either leave mean(vsamples) and vsamples unnamed, or else name them alpha and x respectively, as you told mlogl. Or change the argument names in mlogl.

Haris Skiadas
Department of Mathematics and Computer Science
Hanover College

On May 21, 2008, at 10:05 PM, Edward Wijaya wrote:

Hi,

I tried to compute maximum likelihood under gamma distribution,
using nlm function. The code is this:

__BEGIN__

vsamples<- c(103.9, 88.5, 242.9, 206.6, 175.7, 164.4)

mlogl <- function(alpha, x) {
    if (length(alpha) > 1) stop("alpha must be scalar")
    if (alpha <= 0) stop("alpha must be positive")
    return(- sum(dgamma(x, shape = alpha, log = TRUE)))
 }

mlogl_out <- nlm(mlogl, mean(vsamples),vsamples=vsamples)
print(mlogl_out)

__END__

However, it gives the following error:

Error in f(x, ...) :
unused argument(s) (vsamples = c(103.9, 88.5, 242.9, 206.6, 175.7, 164.4))
Calls: nlm -> <Anonymous> -> f
Execution halted


What's wrong in my way of calling 'nlm" function?
Please advice.

- Edward


______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to