The zero adjusted Gamma distribution for fitting a GAMLSS model

Share:

Description

The function ZAGA() defines the zero adjusted Gamma distribution, a three parameter distribution, for a gamlss.family object to be used in GAMLSS fitting using the function gamlss(). The zero adjusted Gamma distribution is similar to the Gamma distribution but allows zeros as y values. The extra parameter nu models the probabilities at zero. The functions dZAGA, pZAGA, qZAGA and rZAGA define the density, distribution function, quartile function and random generation for the ZAGA parameterization of the zero adjusted Gamma distribution. plotZAGA can be used to plot the distribution. meanZAGA calculates the expected value of the response for a fitted model.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
ZAGA(mu.link = "log", sigma.link = "log", nu.link = "logit")
dZAGA(x, mu = 1, sigma = 1, nu = 0.1, log = FALSE)
pZAGA(q, mu = 1, sigma = 1, nu = 0.1, lower.tail = TRUE, 
      log.p = FALSE)
qZAGA(p, mu = 1, sigma = 1, nu = 0.1, lower.tail = TRUE, 
       log.p = FALSE, 
       upper.limit = mu + 10 * sqrt(sigma^2 * mu^2))
rZAGA(n, mu = 1, sigma = 1, nu = 0.1, ...)
plotZAGA(mu = 5, sigma = 1, nu = 0.1, from = 0, to = 10, 
          n = 101,  main=NULL, ...)
meanZAGA(obj)

Arguments

mu.link

Defines the mu.link, with "log" link as the default for the mu parameter

sigma.link

Defines the sigma.link, with "log" link as the default for the sigma parameter

nu.link

Defines the nu.link, with "logit" link as the default for the sigma parameter

x,q

vector of quantiles

mu

vector of location parameter values

sigma

vector of scale parameter values

nu

vector of probability at zero parameter values

log, log.p

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

lower.tail

logical; if TRUE (default), probabilities are P[X <= x], otherwise, P[X > x]

upper.limit

the argument upper.limit sets the upper limit in the golden section search for q, the default is 10 time its standard deviation

p

vector of probabilities.

n

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

from

where to start plotting the distribution from

to

up to where to plot the distribution

obj

a fitted gamlss object

main

for title in the plot

...

... can be used to pass the uppr.limit argument to qIG

Details

The Zero adjusted GA distribution is given as

f(y|mu,sigma,nu)=nu

if (y=0)

f(y|mu,sigma,nu)=(1-nu)*(y^((1/sigma^2)-1)*exp[-y/((sigma^2)*mu)])/((sigma^2*mu)^(1/sigma^2) Gamma(1/sigma^2))

otherwise

for y=(0,Inf), mu>0, sigma>0 and 0<nu<1. E(y)=(1-nu)*mu and Var(y)=(1-nu)*mu^2*(nu+sigma^2).

Value

The function ZAGA returns a gamlss.family object which can be used to fit a zero adjusted Gamma distribution in the gamlss() function.

Author(s)

Bob Rigby and Mikis Stasinopoulos

References

Rigby, R. A. and Stasinopoulos D. M. (2005). Generalized additive models for location, scale and shape,(with discussion), Appl. Statist., 54, part 3, pp 507-554.

Stasinopoulos D. M., Rigby R.A. and Akantziliotou C. (2006) Instructions on how to use the GAMLSS package in R. Accompanying documentation in the current GAMLSS help files, (see also http://www.gamlss.org/).

Stasinopoulos D. M. Rigby R.A. (2007) Generalized additive models for location scale and shape (GAMLSS) in R. Journal of Statistical Software, Vol. 23, Issue 7, Dec 2007, http://www.jstatsoft.org/v23/i07.

See Also

gamlss.family, GA, ZAIG

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
ZAGA()# gives information about the default links for the ZAGA distribution
# plotting the function
PPP <- par(mfrow=c(2,2))
plotZAGA(mu=1, sigma=.5, nu=.2, from=0,to=3)
#curve(dZAGA(x,mu=1, sigma=.5, nu=.2), 0,3) # pdf
curve(pZAGA(x,mu=1, sigma=.5, nu=.2), 0,3,  ylim=c(0,1)) # cdf
curve(qZAGA(x,mu=1, sigma=.5, nu=.2), 0,.99) # inverse cdf
y<-rZAGA(100, mu=1, sigma=.5, nu=.2) # randomly generated values
hist(y)
par(PPP)
# check that the  positive part sums up to .8 (since nu=0.2)  
integrate(function(x) dZAGA(x,mu=1, sigma=.5, nu=.2), 0,Inf)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.