From: Valentin Dimitrov <vsdimitrov_at_yahoo.com>

Date: Sat 22 Jul 2006 - 10:39:14 EST

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

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