[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