Learn R Programming

VGAM (version 1.1-14)

gengamma.stacy: Generalized Gamma distribution family function

Description

Estimation of the 3-parameter generalized gamma distribution proposed by Stacy (1962).

Usage

gengamma.stacy(lscale = "loglink", ld = "loglink", lk = "loglink",
    iscale = NULL, id = NULL, ik = NULL, imethod = 1,
    gscale.mux = exp((-4:4)/2), gshape1.d = exp((-5:5)/2),
    gshape2.k = exp((-5:5)/2), probs.y = 0.3, zero = c("d", "k"))

Arguments

Value

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

Details

The probability density function can be written $$f(y;b,d,k) = d b^{-d k} y^{d k-1} \exp[-(y/b)^d] / \Gamma(k)$$ for scale parameter \(b > 0\), and Weibull-type shape parameter \(d > 0\), gamma-type shape parameter \(k > 0\), and \(y > 0\). The mean of \(Y\) is \(b \times \Gamma(k+1/d) / \Gamma(k)\) (returned as the fitted values), which equals \(bk\) if \(d=1\).

There are many special cases, as given in Table 1 of Stacey and Mihram (1965). In the following, the parameters are in the order \(b,d,k\). The special cases are: Exponential \(f(y;b,1,1)\), Gamma \(f(y;b,1,k)\), Weibull \(f(y;b,d,1)\), Chi Squared \(f(y;2,1,a/2)\) with \(a\) degrees of freedom, Chi \(f(y;\sqrt{2},2,a/2)\) with \(a\) degrees of freedom, Half-normal \(f(y;\sqrt{2},2,1/2)\), Circular normal \(f(y;\sqrt{2},2,1)\), Spherical normal \(f(y;\sqrt{2},2,3/2)\), Rayleigh \(f(y;c\sqrt{2},2,1)\) where \(c>0\). Also the log-normal distribution corresponds to when k = Inf.

References

Stacy, E. W. (1962). A generalization of the gamma distribution. Annals of Mathematical Statistics, 33(3), 1187--1192.

Stacy, E. W. and Mihram, G. A. (1965). Parameter estimation for a generalized gamma distribution. Technometrics, 7, 349--358.

Prentice, R. L. (1974). A log gamma model and its maximum likelihood estimation. Biometrika, 61, 539--544.

See Also

rgengamma.stacy, gamma1, gamma2, prentice74, simulate.vlm, chisq, lognormal, rayleigh, weibullR.

Examples

Run this code
if (FALSE) {
k <- exp(-1); Scale <- exp(1); dd <- exp(0.5); set.seed(1)
gdata <- data.frame(y = rgamma(2000, shape = k, scale = Scale))
gfit <- vglm(y ~ 1, gengamma.stacy, data = gdata, trace = TRUE)
coef(gfit, matrix = TRUE)
}

Run the code above in your browser using DataLab