Simulation from an Isotropic Spatial Kernel via Polar Coordinates

Share:

Description

To sample points from isotropic power-law kernels f_2(s) = f(||s||) such as siaf.powerlaw on a bounded domain (i.e., ||s|| < \code{ub}), it is convenient to switch to polar coordinates (r,θ), which have a density proportional to r f_2((r \cos(θ), r \sin(θ))) = r f(r) (independent of the angle θ due to isotropy). The angle is thus simply drawn uniformly in [0,2π), and r can be sampled by the inversion method, where numeric root finding is used for the quantiles (since the quantile function is not available in closed form).

Usage

1
siaf.simulatePC(intrfr)

Arguments

intrfr

a function computing the integral of r f(r) from 0 to R (first argument, not necessarily named R). Parameters of the function are passed as its second argument and a third argument is the event type.

Value

a function with arguments (n, siafpars, type, ub), which samples n points from the spatial kernel f_2(s) within the disc of radius ub, where siafpars and type are passed as second and third argument to intrfr. The environment of the returned function will be the caller's environment.

Author(s)

Sebastian Meyer

Examples

1
2
3
4
5
simfun <- siaf.powerlaw()$simulate
## is internally generated as siaf.simulatePC(intrfr.powerlaw)

set.seed(1)
simfun(n=10, siafpars=log(c(sigma=1, d=2)), ub=5)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.