[R] R: optim
Clark Allan
Allan at STATS.uct.ac.za
Wed Sep 7 08:16:57 CEST 2005
thanx for the reply. i understood that the function found a maximum. i
was just a bit worried about the message. i assumed that it was an
ERROR message.
i see now that it is some sort of stopping rule. does this make sense?
/
allan
Douglas Bates wrote:
>
> On 9/6/05, Clark Allan <Allan at stats.uct.ac.za> wrote:
> > hi all
> >
> > i dont understand the error message that is produced by the optim
> > function. can anybody help???
> >
> > ie:
> > [[1]]$message
> > [1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"
> >
> > can anyone help?
>
> That code indicates that the optimizer has declared convergence
> because the relative reduction in the objective function in successive
> iterates is below a tolerance. As documented in ?optim, a convergence
> code of 0 indicates success
>
> ...
> convergence: An integer code. '0' indicates successful convergence.
> Error codes are
> ...
>
> This may be counter-intuitive but it does make sense to shell
> programmers. The idea is that there is only one way you can succeed
> but there are many different ways of failing so you use the nonzero
> codes to indicate the types of failure and the zero code, which we
> usually read as FALSE in a logical context, to indicate success.
>
> >
> >
> >
> > ###########################################################################
> >
> > SK.FIT(XDATA=a,XDATAname="a",PHI1=1,v=5,vlo=2,vhi=300,phi2lo=.01)
> > [[1]]
> > [[1]]$par
> > [1] -0.01377906 0.83859445 0.34675230 300.00000000
> >
> > [[1]]$value
> > [1] 90.59185
> >
> > [[1]]$counts
> > function gradient
> > 53 53
> >
> > [[1]]$convergence
> > [1] 0
> >
> > [[1]]$message
> > [1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"
> >
> > #################################################################################
> >
> >
> >
> > i ghave included the function used in the optim call:
> >
> > SKEWMLE=function(l,DATA=XDATA,...)
> > {
> > #alpha = l[1]
> > #beta = l[2]
> > #phi2 = l[3]
> > #v= l[4]
> > phi1=PHI1
> >
> > DATA<-as.matrix(DATA)
> >
> > fnew<-function(x,y,l,...)
> > {
> > #when we do not estimate phi1
> > t1=(1+((y-l[1]-l[2]*x)^2)/(l[4]*l[3]^2))^(-0.5*(1+l[4]))
> > t2=(1+(x^2)/l[4])^(-0.5*(1+l[4]))
> > t3=2*((gamma(0.5*(1+l[4]))/(gamma(0.5*l[4])*sqrt(l[4]*pi)))^2)/l[3]
> >
> > t1*t2*t3
> > }
> >
> > a<-double(length(DATA))
> > y=DATA
> > a=apply(y,1,function(q)
> > log(integrate(fnew,lower=0,upper=Inf,y=q,l=l)$value))
> > -sum(a)
> > }
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> >
> >
More information about the R-help
mailing list