Learn R Programming

VGAM (version 1.0-2)

Makeham: Makeham Distribution Family Function

Description

Maximum likelihood estimation of the 3-parameter Makeham distribution.

Usage

makeham(lscale = "loge", lshape = "loge", lepsilon = "loge", iscale = NULL, ishape = NULL, iepsilon = NULL, gscale = exp(-5:5),gshape = exp(-5:5), gepsilon = exp(-4:1), nsimEIM = 500, oim.mean = TRUE, zero = NULL, nowarning = FALSE)

Arguments

x, q
vector of quantiles.
p
vector of probabilities.
n
number of observations. Same as in runif.

log
Logical. If log = TRUE then the logarithm of the density is returned.

lower.tail, log.p
Same meaning as in pnorm or qnorm.

scale, shape
positive scale and shape parameters.
epsilon
another parameter. Must be non-negative. See below.
nowarning
Logical. Suppress a warning? Ignored for VGAM 0.9-7 and higher.

lshape, lscale, lepsilon
Parameter link functions applied to the shape parameter shape, scale parameter scale, and other parameter epsilon. All parameters are treated as positive here (cf. dmakeham allows epsilon = 0, etc.). See Links for more choices.

ishape, iscale, iepsilon
Optional initial values. A NULL means a value is computed internally. A value must be given for iepsilon currently, and this is a sensitive parameter!

gshape, gscale, gepsilon
nsimEIM, zero
See CommonVGAMffArguments. Argument probs.y is used only when imethod = 2.

oim.mean
To be currently ignored.

Value

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

Warning

A lot of care is needed because this is a rather difficult distribution for parameter estimation, especially when the shape parameter is large relative to the scale parameter. If the self-starting initial values fail then try experimenting with the initial value arguments, especially iepsilon. Successful convergence depends on having very good initial values. More improvements could be made here. Also, monitor convergence by setting trace = TRUE. A trick is to fit a gompertz distribution and use it for initial values; see below. However, this family function is currently numerically fraught.

Details

The Makeham distribution, which adds another parameter to the Gompertz distribution, has cumulative distribution function $$F(x; \alpha, \beta, \varepsilon) = 1 - \exp \left\{ -y \varepsilon + \frac {\alpha}{\beta} \left[ 1 - e^{\beta y} \right] \right\} $$ which leads to a probability density function $$f(x; \alpha, \beta, \varepsilon) = \left[ \varepsilon + \alpha e^{\beta x} \right] \; \exp \left\{ -x \varepsilon + \frac {\alpha}{\beta} \left[ 1 - e^{\beta x} \right] \right\}, $$ for $alpha > 0$, $beta > 0$, $epsilon >= 0$, $x > 0$. Here, $beta$ is called the scale parameter scale, and $alpha$ is called a shape parameter. The moments for this distribution do not appear to be available in closed form.

Simulated Fisher scoring is used and multiple responses are handled.

See Also

dmakeham, gompertz, simulate.vlm.

Examples

Run this code
## Not run:  set.seed(123)
# mdata <- data.frame(x2 = runif(nn <- 1000))
# mdata <- transform(mdata, eta1  = -1,
#                           ceta1 =  1,
#                           eeta1 = -2)
# mdata <- transform(mdata, shape1 = exp(eta1),
#                           scale1 = exp(ceta1),
#                           epsil1 = exp(eeta1))
# mdata <- transform(mdata,
#          y1 = rmakeham(nn, shape = shape1, scale = scale1, eps = epsil1))
# 
# # A trick is to fit a Gompertz distribution first
# fit0 <- vglm(y1 ~ 1, gompertz, data = mdata, trace = TRUE)
# fit1 <- vglm(y1 ~ 1, makeham, data = mdata,
#              etastart = cbind(predict(fit0), log(0.1)), trace = TRUE)
# 
# coef(fit1, matrix = TRUE)
# summary(fit1)
# ## End(Not run)

Run the code above in your browser using DataLab