[R] Computing Maximum Loglikelihood With "nlm" Problem
Charilaos Skiadas
cskiadas at gmail.com
Thu May 22 04:17:44 CEST 2008
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
>
More information about the R-help
mailing list