VGAM (version 1.0-4)

perks: Perks Distribution Family Function


Maximum likelihood estimation of the 2-parameter Perks distribution.


perks(lscale = "loge", lshape = "loge",
      iscale = NULL,   ishape = NULL,
      gscale = exp(-5:5), gshape = exp(-5:5),
      nsimEIM = 500, oim.mean = FALSE, zero = NULL, nowarning = FALSE)



Logical. Suppress a warning? Ignored for VGAM 0.9-7 and higher.

lscale, lshape

Parameter link functions applied to the shape parameter shape, scale parameter scale. All parameters are treated as positive here See Links for more choices.

iscale, ishape

Optional initial values. A NULL means a value is computed internally.

gscale, gshape
nsimEIM, zero

To be currently ignored.


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


A lot of care is needed because this is a rather difficult distribution for parameter estimation. If the self-starting initial values fail then try experimenting with the initial value arguments, especially iscale. Successful convergence depends on having very good initial values. Also, monitor convergence by setting trace = TRUE.


The Perks distribution has cumulative distribution function $$F(y; \alpha, \beta) = 1 - \left\{ \frac{1 + \alpha}{1 + \alpha e^{\beta y}} \right\}^{1 / \beta} $$ which leads to a probability density function $$f(y; \alpha, \beta) = \left[ 1 + \alpha \right]^{1 / \beta} \alpha e^{\beta y} / (1 + \alpha e^{\beta y})^{1 + 1 / \beta} $$ for \(\alpha > 0\), \(\beta > 0\), \(y > 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.


Perks, W. (1932) On some experiments in the graduation of mortality statistics. Journal of the Institute of Actuaries, 63, 12--40.

Richards, S. J. (2012) A handbook of parametric survival models for actuarial use. Scandinavian Actuarial Journal. 1--25.

See Also

dperks, simulate.vlm.


Run this code
pdata <- data.frame(x2 = runif(nn <- 1000))  # x2 unused
pdata <- transform(pdata, eta1  = -1,
                          ceta1 =  1)
pdata <- transform(pdata, shape1 = exp(eta1),
                          scale1 = exp(ceta1))
pdata <- transform(pdata, y1 = rperks(nn, shape = shape1, scale = scale1))
fit1 <- vglm(y1 ~ 1, perks, data = pdata, trace = TRUE)
coef(fit1, matrix = TRUE)
# }

Run the code above in your browser using DataCamp Workspace