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 = 5039.2922 eps = 0.356998     
GAMLSS-RS iteration  2: Global Deviance = 4802.238 eps = 0.047041     
GAMLSS-RS iteration  3: Global Deviance = 4800.5126 eps = 0.000359     
GAMLSS-RS iteration  4: Global Deviance = 4800.4943 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.03104 62.92909 70.42364 19.28276 0.06246974 0.18010635
2 63.03104 62.92909 70.42364 19.28276 0.08730887 0.59589436
3 63.03104 62.92909 70.42364 19.28276 0.02556281 0.05035205
4 64.38740 64.28355 71.92811 20.06443 0.06986751 0.22764748
5 67.18717 67.07943 75.03293 21.72338 0.02854450 0.92478019
6 67.18717 67.07943 75.03293 21.72338 0.02660748 0.05735297