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.