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.
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.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")
install.packages("tweedieDistr", repos = c('https://stefanodamato.r-universe.dev', 'https://cloud.r-project.org'))
stats-style interfaceThe 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.0000000 2.4970908 0.9598658 0.0000000
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.
Work on this package was supported by the Swiss National Science Foundation (SNSF) under grant number 200021_212164 (“Probabilistic Forecasting: Global Models, Gaussian Processes and Hierarchies”).
![]() Stefano Damato (Maintainer) |
If you encounter a bug, please file a minimal reproducible example on GitHub.
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.