# Auxiliary functions for Survival Analysis #' Density, distribution function, and quantile function of the reverse Gumbel #' distribution. #' #' Arguments: #' @param x, q numeric vector of quantiles. #' @param p vector of probabilities. #' @param location location parameter. #' @param scale scale parameter. #' @param lower.tail logical; if TRUE (default), probabilities are #' $P[X \leq x]$, otherwise $P[X > x]$. #' #' @author Alain Hauser drgumbel <- function(x, location = 0, scale = 1) { if (min(scale) <= 0) { stop("Invalid scale.") } t <- exp((x - location) / scale) return(t * exp(-t) / scale) } prgumbel <- function(q, location = 0, scale = 1, lower.tail = TRUE) { if (min(scale) < 0) { stop("Invalid scale.") } p <- 1 - exp(-exp((q - location) / scale)) if (lower.tail) { return(p) } else { return(1 - p) } } qrgumbel <- function(p, location = 0, scale = 1, lower.tail = TRUE) { if (min(p, na.rm = TRUE) <= 0 || max(p, na.rm = TRUE) >= 1) { stop("`p' must contain probabilities in (0, 1).") } if (min(scale) < 0) { stop("Invalid scale.") } if (!lower.tail) { p <- 1 - p } return(location + scale * log(-log1p(-p))) }