[R] likelihood function involving integration, error in nlm

Berend Hasselman bhh at xs4all.nl
Fri Oct 19 11:19:06 CEST 2012


On 19-10-2012, at 04:40, stats12 wrote:

> Dear R users,
> 
> I am trying to find the mle that involves integration. 
> 
> I am using the following code and get an error when I use the nlm function
> 
> d<-matrix(c(1,1,0,0,0,0,0,0,2,1,0,0,1,1,0,1,2,2,1,0),nrow=10,ncol=2)
> h<-matrix(runif(20,0,1),10)
> 
> integ<-matrix(c(0),nrow=10, ncol=2)
> ll<-function(p){
> for (k in 1:2){
> for(s in 1:10){
> integrand<-function(x)
> x^d[s,k]*exp(-x*gamma(1+1/p))^p*p*x^(p-1)*exp(-x*h[s,k]) 
> integ[s,k]<-integrate(integrand,0,Inf)$value
> }
> }
> lik<-colSums(integ)
> -lik
> }
> initial<-c(1)
> t<-nlm(ll,initial)
> Error in nlm(ll, initial) : invalid function value in 'nlm' optimizer

Before the call of nlm you should insert

ll(initial)

to check. You'll see that your function returns a vector and not a scalar as it should.
I guess that ll() should return sum(-lik) or better -sum(integ)

Berend




More information about the R-help mailing list