R/InhomogenousPP.R

Defines functions gen_inhomo_poisson

Documented in gen_inhomo_poisson

#'@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)]
}
wush978/RPPGen documentation built on May 4, 2019, 12:01 p.m.