Learn R Programming

VGAM (version 0.9-1)

lognormal: Lognormal Distribution

Description

Maximum likelihood estimation of the (univariate) lognormal distribution.

Usage

lognormal(lmeanlog = "identity", lsdlog = "loge", zero = 2)
lognormal3(lmeanlog = "identity", lsdlog = "loge",
           powers.try = (-3):3, delta = NULL, zero = 2)

Arguments

lmeanlog, lsdlog
Parameter link functions applied to the mean and (positive) $\sigma$ (standard deviation) parameter. Both of these are on the log scale. See Links for more choices.
zero
An integer-valued vector specifying which linear/additive predictors are modelled as intercepts only. For lognormal(), the values must be from the set {1,2} which correspond to mu, sigma, respectively. For
powers.try
Numerical vector. The initial $lambda$ is chosen as the best value from min(y) - 10^powers.try where y is the response.
delta
Numerical vector. An alternative method for obtaining an initial $lambda$. Here, delta = min(y)-lambda. If given, this supersedes the powers.try argument. The value must be positive.

Value

  • An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm, and vgam.

Details

A random variable $Y$ has a 2-parameter lognormal distribution if $\log(Y)$ is distributed $N(\mu, \sigma^2)$. The expected value of $Y$, which is $$E(Y) = \exp(\mu + 0.5 \sigma^2)$$ and not $\mu$, make up the fitted values.

A random variable $Y$ has a 3-parameter lognormal distribution if $\log(Y-\lambda)$ is distributed $N(\mu, \sigma^2)$. Here, $\lambda < Y$. The expected value of $Y$, which is $$E(Y) = \lambda + \exp(\mu + 0.5 \sigma^2)$$ and not $\mu$, make up the fitted values.

lognormal() and lognormal3() fit the 2- and 3-parameter lognormal distribution respectively. Clearly, if the location parameter $\lambda=0$ then both distributions coincide.

References

Kleiber, C. and Kotz, S. (2003) Statistical Size Distributions in Economics and Actuarial Sciences, Hoboken, NJ, USA: Wiley-Interscience.

See Also

rlnorm, normal1, CommonVGAMffArguments.

Examples

Run this code
ldat <- data.frame(y = rlnorm(nn <- 1000, meanlog = 1.5, sdlog = exp(-0.8)))
fit <- vglm(y ~ 1, lognormal, ldat, trace = TRUE)
coef(fit, matrix = TRUE)
Coef(fit)

ldat2 <- data.frame(x2 = runif(nn <- 1000))
ldat2 <- transform(ldat2, y = rlnorm(nn, mean = 0.5, sd = exp(x2)))
fit <- vglm(y ~ x2, lognormal(zero = 1), ldat2, trace = TRUE, crit = "c")
coef(fit, matrix = TRUE)
Coef(fit)

lambda <- 4
ldat3 <- data.frame(y = lambda + rlnorm(n = 1000, mean = 1.5, sd = exp(-0.8)))
fit <- vglm(y ~ 1, lognormal3, ldat3, trace = TRUE, crit = "c")
coef(fit, matrix = TRUE)
summary(fit)

Run the code above in your browser using DataLab