Create a GDF Distribution

Description

The GDF (gamlss2 Distribution Family) is a unified class with corresponding methods that represent all distributional families supported by the gamlss2 package. It enables seamless integration with the distributions3 workflow and provides a consistent interface for model fitting and distributional computations.

Usage

GDF(family, parameters)

Arguments

family character. Name of a gamlss2.family or a family provided by the gamlss.dist package, e.g, NO or BI for the normal or binomial distribution, respectively.
parameters numeric, matrix, list or data frame, see the examples.

Details

The S3 class GDF is a slightly more general implementation of the S3 class GAMLSS tailored for gamlss2. For details please see the documentation of GAMLSS

Value

A GDF object, inheriting from distribution.

References

Zeileis A, Lang MN, Hayes A (2022). “distributions3: From Basic Probability to Probabilistic Regression.” Presented at useR! 2022 - The R User Conference. Slides, video, vignette, code at https://www.zeileis.org/news/user2022/.

See Also

gamlss2.family

Examples

library("gamlss2")


## package and random seed
library("distributions3")
set.seed(6020)

## one normal distribution
X <- GDF("NO", c(mu = 1, sigma = 2))
X
[1] "GDF NO(mu = 1, sigma = 2)"
## two normal distributions
X <- GDF("NO", cbind(c(1, 1.5), c(0.6, 1.2)))
X
[1] "GDF NO(mu = 1.0, sigma = 0.6)" "GDF NO(mu = 1.5, sigma = 1.2)"
## three Weibull distributions
X <- GDF("WEI", list(mu = c(1, 1, 2), sigma = c(1, 2, 2)))
X
[1] "GDF WEI(mu = 1, sigma = 1)" "GDF WEI(mu = 1, sigma = 2)"
[3] "GDF WEI(mu = 2, sigma = 2)"
## see ?gamlss.dist::GAMLSS for the remainder of this example

## example using gamlss2
data("abdom", package = "gamlss.data")

## estimate model
b <- gamlss2(y ~ s(x) | . | . | ., data = abdom, family = GA)
GAMLSS-RS iteration  1: Global Deviance = 5038.5061 eps = 0.357098     
GAMLSS-RS iteration  2: Global Deviance = 4802.0805 eps = 0.046923     
GAMLSS-RS iteration  3: Global Deviance = 4800.3708 eps = 0.000356     
GAMLSS-RS iteration  4: Global Deviance = 4800.3517 eps = 0.000003     
## extract, also works with newdata
d <- data.frame(
  "mean" = mean(b),
  "median" = median(b),
  "q95" = quantile(b, probs = 0.95),
  "variance" = variance(b),
  "pdf" = pdf(b),
  "cdf" = cdf(b)
)
print(head(d))
      mean   median      q95 variance        pdf        cdf
1 63.03340 62.93126 70.43334 19.32029 0.06243193 0.18020447
2 63.03340 62.93126 70.43334 19.32029 0.08724146 0.59561443
3 63.03340 62.93126 70.43334 19.32029 0.02558313 0.05046225
4 64.38963 64.28559 71.93764 20.10246 0.06981519 0.22771810
5 67.18914 67.08120 75.04208 21.76233 0.02858682 0.92454713
6 67.18914 67.08120 75.04208 21.76233 0.02662616 0.05746814