Learn R Programming

RandomFields (version 3.0.5)

RRrectangular: Random scaling used with balls

Description

Approximates an isotropic decreasing density function by a density function that is isotropic with respect to the $l_1$ norm.

Usage

RRrectangular(phi, safety, minsteplen, maxsteps, parts, maxit,
             innermin, outermax, mcmc_n, normed, approx, onesided)

Arguments

phi
a shape function; it is the user's responsability that it is non-negative. See details.
safety, minsteplen, maxsteps, parts, maxit, innermin, outermax, mcmc_n
Technical parameters to run an algorithm to simulate from this distribution. See RFoptions for the default values.
normed
logical. If FALSE then the norming constant $c$ in the Details is set to $1$. This affects the values the density function, the probability distribution and the quantile function, but not the simulation of random variables.
approx
logical. Default TRUE. If TRUE the isotropic distribution with respect to the $l_1$ norm is returned. If FALSE then the exact isotropic distribution with respect to the $l_2$ norm is simulated.
onesided
logical. Only for used for univariate distributions. if TRUE then the density is assumed to be non-negative only on the positive real axis. Otherwise the density is assumed to be symmetric.

Value

Details

This models defines an isotropic density function $f$ with respect to the $l_1$ norm. i.e. $f(x) = c \phi(\|x\|_{l_1})$ with some function $\phi$. Here, $s$ is norming constant so that the integral of $f$ equals one.

In case $\phi$ is monotoneously decreasing then rejection sampling is used, else MCMC.

The function $\phi$ might have a polynomial pole at the origin and asymptotically decreasing of the form $x^\beta exp(-x^\delta)$.

See Also

RMmodel, RRdistr, RRgauss,

Examples

Run this code
set.seed(0)

# simulation of Gaussian variables (in a not very straight forward way):
distr <- RRrectangular(RMgauss(), approx=FALSE)
z <- RFrdistr(distr, n=if (interactive()) 1000000 else 10)
hist(z, 200, freq=!TRUE)
x <- seq(-10, 10, 0.1)
lines(x, dnorm(x, sd=sqrt(0.5)))


#creation of random variables whose density is proportional
# to the spherical model:
distr <- RRrectangular(RMspheric(), approx=FALSE)
z <- RFrdistr(distr, n=if (interactive()) 1000000 else 10)
hist(z, 200, freq=!TRUE)
x <- seq(-10, 10, 0.01)
lines(x, 4/3*RFcov(RMspheric(), x, spConform=FALSE))

Run the code above in your browser using DataLab