Learn R Programming

VGAM (version 0.8-1)

gengamma: Generalized Gamma distribution family function

Description

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

Usage

gengamma(lscale="loge", ld="loge", lk="loge",
       escale=list(), ed=list(), ek=list(),
       iscale=NULL, id=NULL, ik=NULL, zero=NULL)

Arguments

lscale, ld, lk
Parameter link function applied to each of the positive parameters $b$, $d$ and $k$, respectively. See Links for more choices.
escale, ed, ek
List. Extra argument for each of the links. See earg in Links for general information.
iscale, id, ik
Initial value for $b$, $d$ and $k$, respectively. The defaults mean an initial value is determined internally for each.
zero
An integer-valued vector specifying which linear/additive predictors are modelled as intercepts only. The values must be from the set {1,2,3}. The default value means none are modelled as intercept-only terms.

Value

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

Warning

Several authors have considered maximum likelihood estimation for the generalized gamma distribution and have found that the Newton-Raphson algorithm does not work very well and that the existence of solutions to the log-likelihood equations is sometimes in doubt. Although Fisher scoring is used here, it is likely that the same problems will be encountered. It appears that large samples are required, for example, the estimator of $k$ became asymptotically normal only with 400 or more observations. It is not uncommon for maximum likelihood estimates to fail to converge even with two or three hundred observations. With covariates, even more observations are needed to increase the chances of convergence.

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 $d > 0$, $k > 0$, and $y > 0$. The mean of $Y$ is $bk$ (returned as the fitted values).

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$.

References

Stacy, E. W. (1962) A generalization of the gamma distribution. Annals of Mathematical Statistics, 33, 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, gamma1, gamma2, prentice74.

Examples

Run this code
k = exp(-1); Scale = exp(1)
gdata = data.frame(y = rgamma(1000, shape = k, scale = Scale))
fit = vglm(y ~ 1, gengamma, gdata, trace = TRUE)
coef(fit, matrix = TRUE)

# Another example
gdata = data.frame(x = runif(nn <- 5000))
gdata = transform(gdata, Scale = exp(1), d = exp(0 + 1.2*x),
                         k = exp(-1 + 2*x))
gdata = transform(gdata, y = rgengamma(nn, scale = Scale, d = d, k = k))
fit = vglm(y ~ x, gengamma(zero = 1, iscal = 6), gdata, trace = TRUE)
fit = vglm(y ~ x, gengamma(zero = 1), gdata, trace = TRUE, maxit = 50)
coef(fit, matrix = TRUE)

Run the code above in your browser using DataLab