The Max Step

Log likelihood

neg_log_lik_gev_trend <- function(
    y,
    t,
    par,
    priors,
    links,
    t0 = 1981
) {
  t <- t - t0
  
  mu0 <- exp(par[1])
  sigma <- exp(par[2] + par[1])
  xi <- link_shape_inverse(par[3])
  delta <- link_trend_inverse(par[4])
  
  mu <- mu0 * (1 + delta * t)
  
  z <- (y - mu) / sigma
  
  if (any(1 + xi * z <= 0)) {
    return(NA)
  }
  
  out <- evd::dgev(
    x = y,
    loc = mu,
    scale = sigma,
    shape = xi,
    log = TRUE
  ) |>
    sum()
  
  prior_likelihood <- priors$location(par[1]) +
    priors$scale(par[2]) +
    priors$shape(par[3]) +
    priors$trend(par[4])
  
  out <- out + prior_likelihood
  
  -out
}