R/probabilities.R

Defines functions dc_P_d_pos dc_P_M_only dc_P_WT_only dc_P_d_neg db_P_d_pos db_P_M_only db_P_WT_only db_P_d_neg da_P_d_pos da_P_M_only da_P_WT_only da_P_d_neg dl_P_d_pos dl_P_M_only dl_P_WT_only dl_P_d_neg dr_P_d_pos dr_P_M_only dr_P_WT_only dr_P_d_neg P_d_pos P_M_only P_WT_only P_d_neg

# Probability function ----------------------------------------------------

P_d_neg <- function(l, a, c, r) {
  p <- exp(-l * (1 + c) - a - r)
  return(pmin(pmax(0, p), 1))
}

P_WT_only <- function(l, a, b, c, r) {
  p <- exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) - 1)
  return(pmin(pmax(0, p), 1))
}

P_M_only <- function(l, a, c, r) {
  p <- exp(-l) * (1 - exp(-r - a - l * c))
  return(pmin(pmax(0, p), 1))
}

P_d_pos <- function(l, a, b, c, r) {
  p <- 1 - exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) - 1) - exp(-l)
  return(pmin(pmax(0, p), 1))
}

# Derivatives of probability functions ------------------------------------

# d/dr

dr_P_d_neg <- function(l, a, c, r) {
  return(-exp(-l * (1 + c) - a - r))
}

dr_P_WT_only <- function(l, a, b, c, r) {
  return(-(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) - 1)))
}

dr_P_M_only <- function(l, a, c, r) {
  return(exp(-l) * exp(-r - a - l * c))
}

dr_P_d_pos <- function(l, a, b, c, r) {
  return(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) - 1))
}

# d/dl

dl_P_d_neg <- function(l, a, c, r) {
  return(-(exp(-l * (1 + c) - a - r) * (1 + c)))
}

dl_P_WT_only <- function(l, a, b, c, r) {
  return(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) * exp(-b)) -
           exp(-l * (1 + c) - a - r) * (1 + c) * (exp(l * exp(-b)) - 1))
}

dl_P_M_only <- function(l, a, c, r) {
  return(exp(-l) * (exp(-r - a - l * c) * c) - exp(-l) * (1 - exp(-r - a - l * c)))
}

dl_P_d_pos <- function(l, a, b, c, r) {
  return(-(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) * exp(-b)) -
             exp(-l * (1 + c) - a - r) * (1 + c) * (exp(l * exp(-b)) - 1) - exp(-l)))
}

# d/da

da_P_d_neg <- function(l, a, c, r) {
  return(-exp(-l * (1 + c) - a - r))
}

da_P_WT_only <- function(l, a, b, c, r) {
  return(-(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) - 1)))
}

da_P_M_only <- function(l, a, c, r) {
  return(exp(-l) * exp(-r - a - l * c))
}

da_P_d_pos <- function(l, a, b, c, r) {
  return(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) - 1))
}


# d/db

db_P_d_neg <- function(l, a, c, r) {
  return(0)
}

db_P_WT_only <- function(l, a, b, c, r) {
  return(-(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) * (l * exp(-b)))))
}

db_P_M_only <- function(l, a, c, r) {
  return(0)
}

db_P_d_pos <- function(l, a, b, c, r) {
  return(exp(-l * (1 + c) - a - r) * (exp(l * exp(-b)) * (l * exp(-b))))
}

# d/dc

dc_P_d_neg <- function(l, a, c, r) {
  return(-(exp(-l * (1 + c) - a - r) * l))
}

dc_P_WT_only <- function(l, a, b, c, r) {
  return(-(exp(-l * (1 + c) - a - r) * l * (exp(l * exp(-b)) - 1)))
}

dc_P_M_only <- function(l, a, c, r) {
  return(exp(-l) * (exp(-r - a - l * c) * l))
}

dc_P_d_pos <- function(l, a, b, c, r) {
  return(exp(-l * (1 + c) - a - r) * l * (exp(l * exp(-b)) - 1))
}
simondrue/castle documentation built on Jan. 29, 2022, 3:04 a.m.