Ok, I feel kinda silly for not having thought of that before...
Anyway, thanks, Peter. ________________________________ De: Peter Ehlers <ehl...@ucalgary.ca> Cc: "r-help@r-project.org" <r-help@r-project.org> Enviadas: Quarta-feira, 23 de Maio de 2012 19:22 Assunto: Re: [R] Error message from optim On 2012-05-23 09:39, Rubem Kaipper Ceratti wrote: > Dear list, > > When running the script below, the optim function returns the message 'Error > in function (par) : could not find function "fn"'. I've re-read the code a > few times and just can't figure out why it's happening. Any help/suggestion > is appreciated. > > > Regards, > Rubem > > > > ## R script > > library(tweedie) > > > period<-factor(1:4) > herd<-factor(1:10) > > dat<-expand.grid(period=period,herd=herd) > > beta<-c(-.3,1.7,2.5,3.4) > x<-model.matrix(~period,dat) > > b<-rnorm(length(levels(dat$herd)),sd=.3) > z<-model.matrix(~-1+herd,dat) > > mu<-as.vector(exp(x%*%beta+z%*%b)) > phi<-.8; p<-1.6 > > dat$resp<-rtweedie(nrow(dat),p,mu,phi) > y<-dat$resp > > > th<-c(rep(0,ncol(x)),1,1,1.5) > > beta<-th[1:ncol(x)] > sig<-th[ncol(x)+1] > phi<-th[ncol(x)+2] > p<-th[ncol(x)+3] > > z.ast<-sig*z > > l.u<-function(u,y,z,x,beta,phi,p){ > eta.u<-as.vector(x%*%beta+z%*%u) > f.y<-log(dtweedie(y,p,exp(eta.u),phi)) > l.yu<-sum(f.y)+sum(dnorm(u,log=T)) > return(-l.yu) > } > > uhat<-optim(rep(0,ncol(z)),l.u,method="BFGS",hessian=T, > y=y,z=z.ast,x=x,beta=beta,phi=phi,p=p) Try naming the 'par' and 'fn' arguments: optim(par=...., fn=l.u, ....) Peter Ehlers [[alternative HTML version deleted]]
______________________________________________ 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.