Skip to content

Repository files navigation

tweedieDistr: fast evaluation of the Tweedie distribution

R-CMD-check Codecov test coverage CRAN status Lifecycle: experimental License: LGPL v3

tweedieDistr provides density, distribution function, quantile function, and random generation for the Tweedie distribution under the compound Poisson-Gamma parameterisation with power parameter $p \in (1, 2)$. The Tweedie family naturally combines a point mass at zero with a continuous positive component, making it well suited to intermittent demand data and any setting where exact zeros occur alongside strictly positive observations.

Exported functions

We provide four stats-like functions:

  • dtweedie(): probability density function via the series expansion of Dunn & Smyth (2005).
  • ptweedie(): cumulative distribution function using a truncated compound Poisson-Gamma summation.
  • qtweedie(): quantile function via Newton-Raphson algorithm, with a fallback to bisection.
  • rtweedie(): random generation via the exact compound Poisson–Gamma representation.

Installation

You can install the stable version from CRAN:

install.packages("tweedieDistr")

You can install the development version from GitHub:

# install.packages("devtools")
devtools::install_github("StefanoDamato/tweedieDistr")

Usage

Standard stats-style interface

The four dtweedie / ptweedie / qtweedie / rtweedie functions mirror the conventions of base R distribution functions and support vectorised arguments.

library(tweedieDistr)

# density at a few points
dtweedie(c(0, 1, 2, 3), mean = 1, dispersion = 2, power = 1.2)
#> [1] 0.53526143 0.18138057 0.14514878 0.07404391

# cumulative probabilities
ptweedie(c(0, 1, 2, 3), mean = 1, dispersion = 2, power = 1.2)
#> [1] 0.5352614 0.6168058 0.7952006 0.9014508

# quantiles
qtweedie(c(0.25, 0.5, 0.75, 0.9), mean = 1, dispersion = 2, power = 1.2)
#> [1] 0.000000 0.000000 1.713588 2.980538

# random samples
rtweedie(4, mean = 1, dispersion = 2, power = 1.2)
#> [1] 0.6454074 0.0000000 1.0381130 0.0000000

Mathematical background

The Tweedie distribution $$Y \sim \mathrm{Tw}(\mu, \phi, \rho)$$ with power $p \in (1, 2)$ is a compound Poisson-Gamma variable: $Y = \sum_{i=1}^{N} G_i$, where

$$N \sim \mathrm{Poisson}(\lambda), \qquad G_i \sim \mathrm{Gamma}(\alpha, \beta),$$

with

$$\lambda = \frac{\mu^{2-p}}{\phi(2-p)}, \quad \alpha = \frac{2-p}{p-1}, \quad \beta = \frac{1}{\phi(p-1)\mu^{p-1}}.$$

The distribution has mean $\mu$ and variance $\phi\mu^p$. When $N = 0$ the sum is conventionally defined as zero, giving a point mass $P(X = 0) = e^{-\lambda}$. The density for $x > 0$ is evaluated via the series expansion of Dunn & Smyth (2005), implemented in C++ through Rcpp and RcppArmadillo.

Contributors

Stefano Damato
Stefano Damato

(Maintainer)
Email

Getting help

If you encounter a bug, please file a minimal reproducible example on GitHub.

References

Dunn, P. K., & Smyth, G. K. (2005). Series evaluation of Tweedie exponential dispersion model densities. Statistics and Computing, 15(4), 267–280. https://doi.org/10.1007/s11222-005-4070-y.

About

Fast implementation of the Tweedie distribution

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages