Learn R Programming

VGAM (version 1.1-9)

exponential: Exponential Distribution

Description

Maximum likelihood estimation for the exponential distribution.

Usage

exponential(link = "loglink", location = 0, expected = TRUE,
            type.fitted = c("mean", "percentiles", "Qlink"),
            percentiles = 50,
            ishrinkage = 0.95, parallel = FALSE, zero = NULL)

Value

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

Arguments

link

Parameter link function applied to the positive parameter \(rate\). See Links for more choices.

location

Numeric of length 1, the known location parameter, \(A\), say.

expected

Logical. If TRUE Fisher scoring is used, otherwise Newton-Raphson. The latter is usually faster.

ishrinkage, parallel, zero

See CommonVGAMffArguments for information.

type.fitted, percentiles

See CommonVGAMffArguments for information.

Author

T. W. Yee

Details

The family function assumes the response \(Y\) has density $$f(y) = \lambda \exp(-\lambda (y-A))$$ for \(y > A\), where \(A\) is the known location parameter. By default, \(A=0\). Then \(E(Y) = A + 1/ \lambda\) and \(Var(Y) = 1/ \lambda^2\).

References

Forbes, C., Evans, M., Hastings, N. and Peacock, B. (2011). Statistical Distributions, Hoboken, NJ, USA: John Wiley and Sons, Fourth edition.

See Also

amlexponential, gpd, laplace, expgeometric, explogff, poissonff, mix2exp, freund61, simulate.vlm, Exponential.

Examples

Run this code
edata <- data.frame(x2 = runif(nn <- 100) - 0.5)
edata <- transform(edata, x3 = runif(nn) - 0.5)
edata <- transform(edata, eta = 0.2 - 0.7 * x2 + 1.9 * x3)
edata <- transform(edata, rate = exp(eta))
edata <- transform(edata, y = rexp(nn, rate = rate))
with(edata, stem(y))

fit.slow <- vglm(y ~ x2 + x3, exponential, data = edata, trace = TRUE)
fit.fast <- vglm(y ~ x2 + x3, exponential(exp = FALSE), data = edata,
                 trace = TRUE, crit = "coef")
coef(fit.slow, mat = TRUE)
summary(fit.slow)


# Compare results with a GPD. Has a threshold.
threshold <- 0.5
gdata <- data.frame(y1 = threshold + rexp(n = 3000, rate = exp(1.5)))

fit.exp <- vglm(y1 ~ 1, exponential(location = threshold), data = gdata)
coef(fit.exp, matrix = TRUE)
Coef(fit.exp)
logLik(fit.exp)

fit.gpd <- vglm(y1 ~ 1, gpd(threshold =  threshold), data = gdata)
coef(fit.gpd, matrix = TRUE)
Coef(fit.gpd)
logLik(fit.gpd)

Run the code above in your browser using DataLab