Re: [R] Weibull distribution

From: Leaf Sun <>
Date: Sat 22 Jul 2006 - 07:33:07 EST

Thanks for the suggestion! I switched to optimize(), al <- optimize(f.fn, lower = 0.1, upper =100,tol=0.001); the warnings were gone and it works stably. But when I tried al <- uniroot(f.fn, lower = 0.1, upper =100,tol=0.001); error occured: f() values at end points not of opposite sign. The error seems to me like there is no root found within the interval. I was not able to solve this problem.



From: Thomas Lumley, Sent: 2006-07-21, 09:35:11
To: Valentin Dimitrov, Subject: Re: [R] Weibull distribution   

On Fri, 21 Jul 2006, Valentin Dimitrov wrote:

> Dear Leaf,
> I modified your code as follows:
> <- function(mu,sd,start=100)
> {
> f.fn <- function(alpha)
> {abs(sd^2-mu^2/(gamma(1+1/alpha))^2*(gamma(1+2/alpha)-(gamma(1+1/alpha))^2))}
> alpha <- optim(start, f.fn)
> beta <- mu/gamma(1+1/alpha$par)

> return(list=c(a=alpha$par,b=beta));
> }
> Now it works properly.
> First, I added an abs(). You tried to solve an
> equation by means of the R-function optim(), which
> finds a minimum. That's why you can find the solution
> of f(x)=a through minimization of abs(f(x)-a).
> Second, I deleted the optim-method BFGS from the
> optim() function, because it is not appropriate in
> this case.

optim() is not appropriate at all in this case -- its help page says to use optimize() for one-dimensional problems.

In fact, in one dimension there isn't any need to resort to optimization when you really want root-finding, and uniroot() is more appropriate than optimize().


        [[alternative HTML version deleted]] mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Sat Jul 22 07:39:25 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 22 Jul 2006 - 12:15:41 EST.

Mailing list information is available at Please read the posting guide before posting to the list.