The function HYPERPO() defines the hyper Poisson distribution, a two parameter distribution, for a gamlss.family object to be used in GAMLSS fitting using the function gamlss().

HYPERPO(mu.link = "log", sigma.link = "log")

Arguments

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

defines the sigma.link, with "log" link as the default for the sigma.

Value

Returns a gamlss.family object which can be used to fit a hyper-Poisson distribution in the gamlss() function.

Details

The hyper-Poisson distribution with parameters \(\mu\) and \(\sigma\) has a support 0, 1, 2, ... and density given by

\(f(x | \mu, \sigma) = \frac{\mu^x}{_1F_1(1;\mu;\sigma)}\frac{\Gamma(\sigma)}{\Gamma(x+\sigma)}\)

where the function \(_1F_1(a;c;z)\) is defined as

\(_1F_1(a;c;z) = \sum_{r=0}^{\infty}\frac{(a)_r}{(c)_r}\frac{z^r}{r!}\)

and \((a)_r = \frac{\gamma(a+r)}{\gamma(a)}\) for \(a>0\) and \(r\) positive integer.

Note: in this implementation we changed the original parameters \(\lambda\) and \(\gamma\) for \(\mu\) and \(\sigma\) respectively, we did it to implement this distribution within gamlss framework.

References

saez2013hyperpoDiscreteDists

See also

Author

Freddy Hernandez, fhernanb@unal.edu.co

Examples

# Example 1
# Generating some random values with
# known mu and sigma
set.seed(1234)
y <- rHYPERPO(n=200, mu=10, sigma=1.5)

# Fitting the model
library(gamlss)
mod1 <- gamlss(y~1, sigma.fo=~1, family=HYPERPO,
               control=gamlss.control(n.cyc=500, trace=FALSE))

# Extracting the fitted values for mu and sigma
# using the inverse link function
exp(coef(mod1, what="mu"))
#> (Intercept) 
#>     9.66078 
exp(coef(mod1, what="sigma"))
#> (Intercept) 
#>    1.281153 

# Example 2
# Generating random values under some model

# A function to simulate a data set with Y ~ HYPERPO
gendat <- function(n) {
  x1 <- runif(n)
  x2 <- runif(n)
  mu    <- exp(1.21 - 3 * x1) # 0.75 approximately
  sigma <- exp(1.26 - 2 * x2) # 1.30 approximately
  y <- rHYPERPO(n=n, mu=mu, sigma=sigma)
  data.frame(y=y, x1=x1, x2=x2)
}

set.seed(1235)
datos <- gendat(n=150)

mod2 <- NULL
mod2 <- gamlss(y~x1, sigma.fo=~x2, family=HYPERPO, data=datos,
                 control=gamlss.control(n.cyc=500, trace=FALSE))

summary(mod2)
#> Warning: summary: vcov has failed, option qr is used instead
#> ******************************************************************
#> Family:  c("HYPERPO", "Hyper-Poisson") 
#> 
#> Call:  gamlss(formula = y ~ x1, sigma.formula = ~x2, family = HYPERPO,  
#>     data = datos, control = gamlss.control(n.cyc = 500, trace = FALSE)) 
#> 
#> Fitting method: RS() 
#> 
#> ------------------------------------------------------------------
#> Mu link function:  log
#> Mu Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)   1.0859     0.1554   6.988 8.82e-11 ***
#> x1           -3.6229     0.4252  -8.520 1.68e-14 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> ------------------------------------------------------------------
#> Sigma link function:  log
#> Sigma Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)   0.7293     0.3288   2.218 0.028065 *  
#> x2           -2.1551     0.5807  -3.711 0.000291 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> ------------------------------------------------------------------
#> No. of observations in the fit:  150 
#> Degrees of Freedom for the fit:  4
#>       Residual Deg. of Freedom:  146 
#>                       at cycle:  66 
#>  
#> Global Deviance:     301.8221 
#>             AIC:     309.8221 
#>             SBC:     321.8646 
#> ******************************************************************