## ----abalone------------------------------------------------------------------
library("univariateML")
head(abalone)

## ----make_data, fig.width = 6, fig.height = 5---------------------------------
data <- dplyr::filter(abalone, height < 0.5)
data$age <- data$rings + 1.5
data <- data[c("diameter", "height", "shell_weight", "age")]
hist(data$height, main = "Abalone height", xlab = "Height in mm")

## ----models-------------------------------------------------------------------
models <- c(
  "gumbel", "laplace", "logis", "norm", "exp", "gamma",
  "invgamma", "invgauss", "invweibull", "llogis", "lnorm",
  "rayleigh", "weibull", "lgamma", "pareto", "beta", "kumar",
  "logitnorm"
)
length(models)

## ----all_models---------------------------------------------------------------
univariateML_models

## ----margin_select------------------------------------------------------------
margin_fits <- lapply(data, model_select, models = models, criterion = "aic")

## ----AIC_copula, warning = FALSE, cache = TRUE--------------------------------
# Transform the marginals to the unit interval.
y <- sapply(seq_along(data), function(j) pml(data[[j]], margin_fits[[j]]))

# The copulas described above.
copulas <- list(
  normal = copula::normalCopula(dim = 4, dispstr = "un"),
  t = copula::tCopula(dim = 4, dispstr = "un"),
  joe = copula::joeCopula(dim = 4),
  clayton = copula::claytonCopula(dim = 4),
  gumbel = copula::gumbelCopula(dim = 4)
)

fits <- sapply(
  copulas,
  function(x) copula::fitCopula(x, data = y, method = "mpl")
)

sapply(fits, AIC)