[R] Error in integrate(integrand, 0, Inf) : non-finite function value

Berend Hasselman bhh at xs4all.nl
Sun Oct 21 08:36:28 CEST 2012


On 21-10-2012, at 05:01, stats12 wrote:

> Hi,
> 
> Thank you for your comment. I worked on the code again and was able to make
> it work. The only problem I am having right now is that nlm depends on the
> initial value.  
> 
> When the initial value is 1, I get the following estimates
> 0.1230414 19.6271029
> 
> when it is 2, I get the following
> 29.46874 20.01679
> 
> 
> 
> 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) 
> delta<-matrix(c(2,1,0,1,0,1,0,0,2,1,0,0,1,1,1,1,0,2,1,0),nrow=10,ncol=2) 
> 
> out<-vector("numeric",length(1:2)) 
> integ<-vector("numeric",length(1:10)) 
> 
> for (k in 1:2){ 
> ll<-function(p){ 
> cmh<-delta[,k]*(h[,k]*log(0.5))+p*log(gamma(1+1/p)) 
> 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<-integrate(integrand,0,Inf)$value 
> return(integ)
> }
> 
> lik<-sum(cmh+log(integ)) 
> -lik 
> } 
> initial<-c(1) 
> t<-nlm(ll,initial) 
> out[k]<-t$estimate 
> } 
> 
> est<-as.vector(out)

When I run this code (in TextMate 1.5; Mac OS X 10.6.8)  I get:

Error in integrate(integrand, 0, Inf) : non-finite function value
RMate stopped at line 0
Calls: nlm -> <Anonymous> -> f -> integrate
In addition: Warning messages:
1: In log(gamma(1 + 1/p)) : NaNs produced
2: In log(gamma(1 + 1/p)) : NaNs produced
Execution halted

In addition: why return(integ) in the inner loop with s? This implies an immediate return in function ll.

You initialize integ as a vector. But in the inner s loop you assign a scalar to integ.
The whole thing looks very muddled.

Your code should be indented for clarity.

Berend




More information about the R-help mailing list