#'@title Generate Inhomogeneous Poisson Process (Thining)
#'
#'@param lambda, a positive function.
#'@param T_0, positive numeric value.
#'@param lambda_u, numeric value. The upper bound of \code{lambda(t)} in \code{[0, T_0]}.
#'If \code{lambda_u} is \code{NULL}, then \code{\link{optimize}} will be used to find the upper bound.
#'
#'@description Generate an inhomogeneous poisson process with intensity function \code{lambda(t)}
#'in time interval \code{[0,T_0]}.
#'
#'@export
gen_inhomo_poisson <- function(lambda, T_0, lambda_u = NULL) {
if (is.null(lambda_u)) {
lambda_u <- optimize(lambda, c(0, T_0), maximum = TRUE)$objective
}
retval <- gen_homo_poisson(lambda_u, T_0)
retval[runif(length(retval)) < sapply(retval, function(r) lambda(r) / lambda_u)]
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.