Learn R Programming

VGAM (version 0.7-1)

lognormal: Lognormal Distribution

Description

Maximum likelihood estimation of the (univariate) lognormal distribution.

Usage

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

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: Wiley-Interscience.

See Also

rlnorm, normal1.

Examples

Run this code
y = rlnorm(n <- 1000, meanlog=1.5, sdlog=exp(-0.8))
fit = vglm(y ~ 1, lognormal, trace=TRUE)
coef(fit, mat=TRUE)
Coef(fit)

x = runif(n <- 1000)
y = rlnorm(n, mean=0.5, sd=exp(x))
fit = vglm(y ~ x, lognormal(zero=1), trace=TRUE, crit="c")
coef(fit, mat=TRUE)
Coef(fit)

n = 1000
lambda = 4
y = lambda + rlnorm(n, mean=1.5, sd=exp(-0.8))
fit = vglm(y ~ 1, lognormal3, trace=TRUE)
fit = vglm(y ~ 1, lognormal3, trace=TRUE, crit="c")
coef(fit, mat=TRUE)
Coef(fit)
summary(fit)

Run the code above in your browser using DataLab