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 ______________________________________________ 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.