# Re: [R] Weibull distribution

From: Valentin Dimitrov <vsdimitrov_at_yahoo.com>
Date: Sat 22 Jul 2006 - 10:39:14 EST

It seems to me that not for all values of mu and sd there is a Weibull distribution with mean=mu and variance=sd^2.
the programm with optimize(f.fn) finds always a solution, but this is not necessarily what we need, because the minimum of (abs(f(x)) is not always 0. Suppose f(x)=2+x^2, then optimize(x) finds x=0, but x=0 is not a root of f(x)=0.
That's why I agree with Thomas Lumley, that uniroot() could be more appropriate than optim and optimize.

Best regards,
Valentin

• Leaf Sun <leaflovesun@yahoo.ca> wrote:

> 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.
>
> Thanks!
>
> Leaf
>
>
>
>
>
> ----- Original Message -----
>
> From: Thomas Lumley, tlumley@u.washington.edu
> Sent: 2006-07-21, 09:35:11
> To: Valentin Dimitrov, vsdimitrov@yahoo.com
> Subject: Re: [R] Weibull distribution
>
> On Fri, 21 Jul 2006, Valentin Dimitrov wrote:
>
> > Dear Leaf,
> >
> > I modified your code as follows:
> >
> > gamma.fun <- 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().
>
>
> -thomas
>

R-help@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 and provide commented, minimal, self-contained, reproducible code. Received on Sat Jul 22 10:43:21 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:42 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.