Simulation of Lognormal distribution

This post is a try about how yo simulate lognormal distribution in R. Lognormal distribution is used a lot in cumulative data (e.x. counting), which is very similar with normal distribution except x should be larger than 0. For instance, the number of schools, the number of students. But I always have no idea about how to parameterized this distribution. I’ll update this post as I learn more about lognormal distribution…

Simulate lognomal distibution

Simulation Study 1

This study is to simulate lognormal density distribution based on mean and sd of depedent variable (Y). My simulated mean of y is 891, and sd is 490, N (sample size) is 200000. Then use the formular below:

mu  = log(m^2/phi) # log mean
sigma = sqrt(log(1+v/m^2)) # log sd

It could calculate the log mean and log standard deviation for lognormal distribution.


#### Give Y mean and Y sd, simluate lognormal distribution data.
m = 891 # geometric mean
sd = 490 # geometric sd
v = sd ^ 2
phi = sqrt(v + m^2) 

mu    = log(m^2/phi) # log mean
sigma = sqrt(log(1+v/m^2)) # log sd

y <- rlnorm(n = 200000, mu, sigma) %>% round(0)
m.sim <- mean(y) # should be close to 891
sd.sim <- sd(y) # should be close to 490

row1 <- c(m, mu,m.sim)
row2 <- c(sd, sigma,sd.sim)
table <- rbind(row1, row2)
colnames(table) <- c("Original", "Log", "Simulated")
rownames(table)  <- c("Mean", "SD")

This is the original, log and simulated mean and sd. It could be easily found that simulated ones are very closed to original.


From the density plot below, we can see the mean of X is also close to 891.

Jihong Zhang, PhD
Jihong Zhang, PhD
Postdoctoral Research Fellow

My research interests focus on the Bayesian Diagnostic Classification Models (DCMs) and other psychometric modeling, as applied in the psychological, educational, and social sciences. I seek to improve the utility of advanced psychometric modeling and provide easy-to-use tools or software for researchers.