R/distributions.R

#' @title Distributions
#'
#' @rdname distributions
#' @export
Exponential <- R6::R6Class("Exponential",
  cloneable = FALSE,
  public = list(
    lambda = NULL,
    initialize = function(lambda) {
      self$lambda <- lambda
    },
    simulate = function(u, X, beta, maxt) {
      beta <- c(log(self$lambda), beta)
      t <- -log(u) / exp(X %*% beta)
      .censor(t = t, maxt = maxt)
    }
  )
)

#' @rdname distributions
#' @export
Weibull <- R6::R6Class("Weibull",
  cloneable = FALSE,
  public = list(
    lambda = NULL,
    gamma = NULL,
    initialize = function(lambda, gamma) {
      self$lambda <- lambda
      self$gamma <- gamma
    },
    simulate = function(u, X, beta, maxt) {
      beta <- c(log(self$lambda), beta)
      t <- (-log(u) / exp(X %*% beta))^(1 / self$gamma)
      .censor(t = t, maxt = maxt)
    }
  )
)

#' @rdname distributions
#' @export
Gompertz <- R6::R6Class("Gompertz",
  cloneable = FALSE,
  public = list(
    lambda = NULL,
    gamma = NULL,
    initialize = function(lambda, gamma) {
      self$lambda <- lambda
      self$gamma <- gamma
    },
    simulate = function(u, X, beta, maxt) {
      beta <- c(log(self$lambda), beta)
      t <- 1 / self$gamma * log(1 - (self$gamma * log(u)) / exp(X %*% beta))
      .censor(t = t, maxt = maxt)
    }
  )
)
ellessenne/bicopula documentation built on Dec. 20, 2021, 4:19 a.m.