OLL-G.Gamma {ollggamma}R Documentation

Odd Log-Logistic Generalized Gamma Probability Distribution

Description

Density, distribution function, quantile function and random generation for the Odd Log-Logistic Generalized Gamma probability distribution.

Fast implementation of density, distribution function, quantile function and random generation for the Odd Log-Logistic Generalized Gamma probability distribution.

Usage

dollggamma(x, a, b, k, lambda, log = F)

pollggamma(q, a, b, k, lambda, lower.tail = TRUE, log.p = FALSE)

qollggamma(p, a, b, k, lambda, lower.tail = TRUE, log.p = FALSE)

rollggamma(n, a, b, k, lambda)

Arguments

x, q

vector of quantiles.

a, b, k, lambda

Parameters of the distribution, all of which must be positive.

log, log.p

logical; if TRUE, probabilities p are given as log(p).

lower.tail

logical; if TRUE (default), probabilities are P[X \le x] otherwise, P[X > x].

p

vector of probabilities.

n

number of observations. If length(n) > 1, the length is taken to be the number required.

Details

This package follows naming convention that is consistent with base R, where density (or probability mass) functions, distribution functions, quantile functions and random generation functions names are followed by d, p, q, and r prefixes.

Behaviour of the functions is consistent with base R, where for not valid parameters values NaN's are returned, while for values beyond function support 0's are returned (e.g. for non-integers in discrete distributions, or for negative values in functions with non-negative support).

The Odd Log-Logistic Generalized Gamma (OLL-GG) (Pratavieira et al, 2017) distribution is generated by applying a transformation upon the GG cumulative distribution, thus defining a new cdf F(t) as follows:

F(t) = \frac{G(t)^\lambda}{G(t)^\lambda - (1 - G(t))^\lambda }

where G(t) is the cdf for the GG distribution (which is given later), and \lambda is the new parameter introduced by this transformation.

The probability density function is then:

f(t) = \frac{ \lambda g(t) \{ G(t) (1 - G(t)) \}^{\lambda - 1} }{ \{ G(t)^\lambda + [ 1 + G(t) ]^\lambda \}^2 }

where g(t) is the pdf for the GG distribution.

The quantile function is:

F^{-1}(q) = G^{-1}\bigg( \frac{ q^{1/\lambda} }{ (1 - q)^{1/\lambda} + q^{1/\lambda} } \bigg)

where G^{-1} is the GG quantile function.

The generalized gamma distribution proposed by Stacy (1962) has parameters a, d, p, but here we adopt the reparametrization

a = a

b = p

k = \frac{d}{p}

as is used by the R package *ggamma*.

Probability density function

f(x) = \frac{b x^{bk-1} \exp[-(x/a)^b]}{a^{bk} \Gamma(k)}

Cumulative density function

F(x) = \frac{\gamma(k, (x/a)^b)}{\Gamma(k)}

The above function can be written in terms of a Gamma(\alpha, \beta). Let T \sim Gamma(k, 1) and its cumulative distribution be denoted as F_T(t), then the cumulative density function of the generalized gamma distribution can be written as

F(x) = F_T( (x/a)^b )

which allows us to write the quantile function of the generalized gamma in terms of the gamma one (Q_T(u) is the quantile function of T)

Q(u) = (Q_T(u) \cdot a)^{1/b}

from which random numbers can be drawn.

Value

‘dollggamma’ gives the density, ‘pollggamma’ gives the distribution function, ‘qollggamma’ gives the quantile function, and ‘rollggamma’ generates random samples.

The length of the result is determined by ‘n’ for ‘rollggamma’, and is the maximum of the lengths of the numerical arguments for the other functions.

The distribution support is x > 0 and any value out of this range will lead to ’dollggamma’ returning 0.

References

Prataviera, F., Cordeiro, G. M., Suzuki, A. K., & Ortega, E. M. M. (2017). The odd log-logistic generalized gamma model: properties, applications, classical and bayesian approach. Biom Biostat Int J, 6(4), 00174.

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

Examples


x = seq(0.001, 5, length=1000);
plot(x, dollggamma(x, 0.5, 1.2, 5, 0.3), col=2, type="l", lwd=4, ylim=c(0, 1));
lines(x, pollggamma(x, 0.5, 1.2, 5, 0.3), col=4, type="l", lwd=4, ylim=c(0, 1));
legend("right", c("PDF", "CDF"), col=c(2, 4), lwd=4);

r = rgamma(n = 100, 2, 2);
lik = function(params) -sum(dollggamma(r, params[1], params[2], params[3], params[4], log=TRUE));
optPar = optim(lik, par=c(1, 1, 1, 1), method="L-BFGS", lower=0.00001, upper=Inf)$par;
x = seq(0.001, 5, length=1000);
plot(x, dgamma(x, 2, 2), type="l", col=2, lwd=4, ylim=c(0, 1));
lines(x, dollggamma(x, optPar[1], optPar[2], optPar[3], optPar[4]), col=4, lwd=4);
legend("topright", c("Gamma(shape=2, rate=2)", "MLE OLL-Gen.Gamma"), col=c(2, 4), lwd=4);


[Package ollggamma version 1.0.2 Index]