Skip to contents

Simulate a from a Poisson process

Usage

rxPp(
  n,
  lambda,
  gamma = 1,
  prob = NULL,
  t0 = 0,
  tmax = Inf,
  randomOrder = FALSE
)

Arguments

n

Number of time points to simulate in the Poisson process

lambda

Rate of Poisson process

gamma

Asymmetry rate of Poisson process. When gamma=1.0, this simulates a homogenous Poisson process. When gamma<1.0, the Poisson process has more events early, when gamma > 1.0, the Poisson process has more events late in the process.

When gamma is non-zero, the tmax should not be infinite but indicate the end of the Poisson process to be simulated. In most pharamcometric cases, this will be the end of the study. Internally this uses a rate of:

l(t) = lambdagamma(t/tmax)^(gamma-1)

prob

When specified, this is a probability function with one argument, time, that gives the probability that a Poisson time t is accepted as a rejection time.

t0

the starting time of the Poisson process

tmax

the maximum time of the Poisson process

randomOrder

when TRUE randomize the order of the Poisson events. By default (FALSE) it returns the Poisson process is in order of how the events occurred.

Value

This returns a vector of the Poisson process times; If the dropout is >= tmax, then all the rest of the times are = tmax to indicate the dropout is equal to or after tmax.

Author

Matthew Fidler

Examples


## Sample homogenous Poisson process of rate 1/10
rxPp(10, 1 / 10)
#>  [1] 14.16159 22.43681 41.13405 48.71743 51.37508 54.60656 75.32184 84.62128
#>  [9] 85.80475 96.63193

## Sample inhomogenous Poisson rate of 1/10

rxPp(10, 1 / 10, gamma = 2, tmax = 100)
#>  [1] 37.13008 37.33395 38.19765 41.94718 50.45308 51.16211 65.45638 75.56937
#>  [9] 76.00046 83.59277

## Typically the Poisson process times are in a sequential order,
## using randomOrder gives the Poisson process in random order

rxPp(10, 1 / 10, gamma = 2, tmax = 10, randomOrder = TRUE)
#>  [1] 10.000000 10.000000 10.000000 10.000000  6.028535 10.000000 10.000000
#>  [8] 10.000000 10.000000 10.000000

## This uses an arbitrary function to sample a non-homogenous Poisson process

rxPp(10, 1 / 10, prob = function(x) {
  1/(1+abs(x))
})
#>  [1]  14.74011  38.01194  53.91062 235.31848 381.74524 397.80743 504.64689
#>  [8] 721.10404 756.19022 889.86201