Learn R Programming

RTMBdist — AD distribution library

The RTMB package enables powerful and flexible statistical modelling with rich random effect structures using automatic differentiation (AD). However, its built-in support for probability distributions is limited to standard cases. RTMBdist fills this gap by providing a collection of non-standard, AD-compatible distributions, extending the range of models that can be implemented and estimated with RTMB. Most of the distributions implemented in RTMBdist allow for automatic simulation and residual calculation by RTMB.

The full list of distributions currently available is given in the List of distributions vignette. There are also a couple of Worked examples demonstrating how to use RTMBdist in practice.

Feel free to contribute!

Installation

You can install the development version of RTMBdist from GitHub with:

remotes::install_github("janoleko/RTMBdist")

Introductory example

library(RTMBdist)

Let’s do numerical maximum likelihood estimation with a gumbel distribution:

# simulate data
x <- rgumbel(100, location = 5, scale = 2)

# negative log-likelihood function
nll <- function(par) {
  x <- OBS(x) # mark x as the response
  loc <- par[1]; ADREPORT(loc)
  scale <- exp(par[2]); ADREPORT(scale)
  -sum(dgumbel(x, loc, scale, log = TRUE))
}

# RTMB AD object
obj <- MakeADFun(nll, c(5, log(2)), silent = TRUE)

# model fitting using AD gradient
opt <- nlminb(obj$par, obj$fn, obj$gr)

# model summary
summary(sdreport(obj))[3:4,]
#>       Estimate Std. Error
#> loc   5.001543  0.2065935
#> scale 1.960676  0.1502500

Through the magic of RTMB, we can also immediately simulate new data from the fitted model and calculate residuals:

# simulate new data
x_new <- obj$simulate()$x

# calculate residuals
osa <- oneStepPredict(obj, method = "cdf", trace = FALSE)
qqnorm(osa$res); abline(0, 1)

Copy Link

Version

Install

install.packages('RTMBdist')

Monthly Downloads

379

Version

0.1.0

License

MIT + file LICENSE

Maintainer

Jan-Ole Koslik

Last Published

October 7th, 2025

Functions in RTMBdist (0.1.0)

laplace

Laplace distribution
gumbel

Gumbel distribution
invgauss

Inverse Gaussian distribution
genpois

Generalised Poisson distribution
powerexp

Power Exponential distribution (PE and PE2)
pareto

Pareto distribution
oibeta2

Reparameterised one-inflated beta distribution
oibeta

One-inflated beta distribution
skewnorm

Skew normal distribution
dirmult

Dirichlet-multinomial distribution
skewnorm2

Reparameterised skew normal distribution
vmf2

Reparameterised von Mises-Fisher distribution
vmf

von Mises-Fisher distribution
vm

von Mises distribution
trunct2

Truncated t distribution with location and scale
nbinom2

Reparameterised negative binomial distribution
zibeta2

Reparameterised zero-inflated beta distribution
gamma2

Reparameterised gamma distribution
zibinom

Zero-inflated binomial distribution
zibeta

Zero-inflated beta distribution
mvt

Multivariate t distribution
skewt

Skewed students t distribution
t2

Student t distribution with location and scale
zinbinom

Zero-inflated negative binomial distribution
wrpcauchy

wrapped Cauchy distribution
zero_inflate

Zero-inflated density constructer
zilnorm

Zero-inflated log normal distribution
truncnorm

Truncated normal distribution
zigamma

Zero-inflated gamma distribution
ziinvgauss

Zero-inflated inverse Gaussian distribution
ztnbinom

Zero-truncated Negative Binomial distribution
ztbinom

Zero-truncated Binomial distribution
zigamma2

Zero-inflated and reparameterised gamma distribution
zinbinom2

Zero-inflated and reparameterised negative binomial distribution
zipois

Zero-inflated Poisson distribution
zoibeta

Zero- and one-inflated beta distribution
zoibeta2

Reparameterised zero- and one-inflated beta distribution
trunct

Truncated t distribution
ztnbinom2

Reparameterised zero-truncated negative binomial distribution
ztpois

Zero-truncated Poisson distribution
cclayton

Clayton copula constructor
cgumbel

Gumbel copula constructor
cfrank

Frank copula constructor
bct

Box–Cox t distribution (BCT)
bcpe

Box-Cox Power Exponential distribution (BCPE)
beta2

Reparameterised beta distribution
cgaussian

Gaussian copula constructor
bccg

Box–Cox Cole and Green distribution (BCCG)
dcopula

Joint density under a bivariate copula
betabinom

Beta-binomial distribution
erf

AD-compatible error function and complementary error function
exgauss

Exponentially modified Gaussian distribution
foldnorm

Folded normal distribution
dirichlet

Dirichlet distribution