G'day Phil, On Sun, 4 May 2008 14:05:09 +1000 phil colbourn <[EMAIL PROTECTED]> wrote:
> rlnorm takes two 'shaping' parameters: meanlog and sdlog. > > meanlog would appear from the documentation to be the log of the > mean. eg if the desired mean is 1 then meanlog=0. These to parameters are the mean and the sd on the log scale of the variate, i.e. if you take the logarithm of the produced numbers then those values will have the given mean and sd. If X has an N(mu, sd^2) distribution, then Y=exp(X) has a log-normal distribution with parameters mu and sd. R> set.seed(1) R> y <- rlnorm(10000, mean=3, sd=2) R> summary(log(y)) Min. 1st Qu. Median Mean 3rd Qu. Max. -4.343 1.653 2.968 2.987 4.355 10.620 R> mean(log(y)) [1] 2.986926 R> sd(log(y)) [1] 2.024713 > I noticed on wikipedia lognormal page that the median is exp(mu) and > that the mean is exp(mu + sigma^2/2) > > http://en.wikipedia.org/wiki/Log-normal_distribution Where mu and sigma are the mean and standard deviation of a normal variate which is exponentiated to obtain a log normal variate. And this holds for the above example (upto sampling variation): R> mean(y) [1] 143.1624 R> exp(3+2^2/2) [1] 148.4132 > So, does this mean that if i want a mean of 100 that the meanlog > value needs to be log(100) - log(sd)^2/2? A mean of 100 for the log-normal variate? In this case any set of mu and sd for which exp(mu+sd^2/2)=100 (or mu+sd^2/2=log(100)) would do the trick: R> mu <- 2 R> sd <- sqrt(2*(log(100)-mu)) R> summary(rlnorm(10000, mean=mu, sd=sd)) Min. 1st Qu. Median Mean 3rd Qu. Max. 4.010e-04 1.551e+00 7.075e+00 1.006e+02 3.344e+01 3.666e+04 R> mu <- 4 R> sd <- sqrt(2*(log(100)-mu)) R> summary(rlnorm(10000, mean=mu, sd=sd)) Min. 1st Qu. Median Mean 3rd Qu. Max. 0.9965 25.9400 56.0200 101.2000 115.5000 3030.0000 R> mu <- 1 R> sd <- sqrt(2*(log(100)-mu)) R> summary(rlnorm(10000, mean=mu, sd=sd)) Min. 1st Qu. Median Mean 3rd Qu. Max. 9.408e-05 4.218e-01 2.797e+00 8.845e+01 1.591e+01 7.538e+04 Note that given the variation we would expect in the mean in the last example, the mean is actually "close enough" to the theoretical value of 100: R> sqrt((exp(sd^2)-1)*exp(2*mu + sd^2)/10000) [1] 36.77435 HTH. Cheers, Berwin =========================== Full address ============================= Berwin A Turlach Tel.: +65 6515 4416 (secr) Dept of Statistics and Applied Probability +65 6515 6650 (self) Faculty of Science FAX : +65 6872 3919 National University of Singapore 6 Science Drive 2, Blk S16, Level 7 e-mail: [EMAIL PROTECTED] Singapore 117546 http://www.stat.nus.edu.sg/~statba ______________________________________________ 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.