Maximum likelihood estimation of the (univariate) lognormal distribution.

lognormal(lmeanlog = "identitylink", lsdlog = "loglink", zero = "sdlog")

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

Specifies which linear/additive predictor is modelled as intercept-only. For lognormal(), the values can be from the set {1,2} which correspond to mu, sigma, respectively. See CommonVGAMffArguments for more information.

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. The variance of \(Y\) is $$Var(Y) = [\exp(\sigma^2) -1] \exp(2\mu + \sigma^2).$$

Value

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

References

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

Author

T. W. Yee

Examples

ldata2 <- data.frame(x2 = runif(nn <- 1000))
ldata2 <- transform(ldata2, y1 = rlnorm(nn, 1 + 2 * x2, sd = exp(-1)),
                            y2 = rlnorm(nn, 1, sd = exp(-1 + x2)))
fit1 <- vglm(y1 ~ x2, lognormal(zero = 2), data = ldata2, trace = TRUE)
#> Iteration 1: loglikelihood = -3178.0093
#> Iteration 2: loglikelihood = -2781.5331
#> Iteration 3: loglikelihood = -2510.3115
#> Iteration 4: loglikelihood = -2403.8572
#> Iteration 5: loglikelihood = -2390.7801
#> Iteration 6: loglikelihood = -2390.6061
#> Iteration 7: loglikelihood = -2390.606
#> Iteration 8: loglikelihood = -2390.606
fit2 <- vglm(y2 ~ x2, lognormal(zero = 1), data = ldata2, trace = TRUE)
#> Iteration 1: loglikelihood = -1932.8369
#> Iteration 2: loglikelihood = -1927.9917
#> Iteration 3: loglikelihood = -1927.965
#> Iteration 4: loglikelihood = -1927.965
coef(fit1, matrix = TRUE)
#>              meanlog loglink(sdlog)
#> (Intercept) 1.009266       -1.03478
#> x2          1.971530        0.00000
coef(fit2, matrix = TRUE)
#>               meanlog loglink(sdlog)
#> (Intercept) 0.9988778     -0.9695983
#> x2          0.0000000      0.9395985