# envelope

##### Simulation envelopes of summary function

Computes simulation envelopes of a summary function.

##### Usage

```
envelope(Y, fun=Kest, nsim=99, nrank=1, ...,
simulate=NULL, verbose=TRUE, clipdata=TRUE,
start=NULL,control=list(nrep=1e5,expand=1.5),
transform=NULL,global=FALSE,ginterval=NULL, saveall=FALSE)
```

##### Arguments

- Y
- Either a point pattern (object of class
`"ppp"`

) or a fitted point process model (object of class`"ppm"`

). - fun
- Function that computes the desired summary statistic for a point pattern.
- nsim
- Number of simulated point patterns to be generated when computing the envelopes.
- nrank
- Integer. Rank of the envelope value amongst the
`nsim`

simulated values. A rank of 1 means that the minimum and maximum simulated values will be used. - ...
- Extra arguments passed to
`fun`

. - simulate
- Optional. An expression. If this is present, then the simulated
point patterns will be generated by evaluating this expression
`nsim`

times. - verbose
- Logical flag indicating whether to print progress reports during the simulations.
- clipdata
- Logical flag indicating whether the data point pattern should be
clipped to the same window as the simulated patterns,
before the summary function for the data is computed.
This should usually be
`TRUE`

to ensure that the - start,control
- Optional. These specify the arguments
`start`

and`control`

of`rmh`

, giving complete control over the simulation algorithm. - transform
- Optional. A transformation to be applied to the function values, before the envelopes are computed. An expression object (see Details).
- global
- Logical flag indicating whether envelopes should be pointwise
(
`global=FALSE`

) or simultaneous (`global=TRUE`

). - ginterval
- Optional.
A vector of length 2 specifying
the interval of $r$ values for the simultaneous critical
envelopes. Only relevant if
`global=TRUE`

. - saveall
- Logical flag indicating whether to save all the simulated curves.

##### Details

Simulation envelopes can be used to assess the goodness-of-fit of a point process model to point pattern data. See the References.

This function first generates `nsim`

random point patterns
in one of the following ways.

- If
`Y`

is a point pattern (an object of class`"ppp"`

) and`simulate=NULL`

, then this routine generates`nsim`

simulations of Complete Spatial Randomness (i.e.`nsim`

simulated point patterns each being a realisation of the uniform Poisson point process) with the same intensity as the pattern`Y`

. (If`Y`

is a multitype point pattern, then the simulated patterns are also given independent random marks; the probability distribution of the random marks is determined by the relative frequencies of marks in`Y`

.) - If
`Y`

is a fitted point process model (an object of class`"ppm"`

) and`simulate=NULL`

, then this routine generates`nsim`

simulated realisations of that model. - If
`simulate`

is supplied, then it must be an expression. It will be evaluated`nsim`

times to yield`nsim`

point patterns.

`fun`

is applied to each of these simulated
patterns. Typically `fun`

is one of the functions
`Kest`

, `Gest`

, `Fest`

, `Jest`

, `pcf`

,
`Kcross`

, `Kdot`

, `Gcross`

, `Gdot`

,
`Jcross`

, `Jdot`

, `Kmulti`

, `Gmulti`

,
`Jmulti`

or `Kinhom`

. It may also be a character string
containing the name of one of these functions. The statistic `fun`

can also be a user-supplied function;
if so, then it must have arguments `X`

and `r`

like those in the functions listed above, and it must return an object
of class `"fv"`

.

Upper and lower critical envelopes are computed in one of the following ways:
[object Object],[object Object]
The return value is an object of class `"fv"`

containing
the summary function for the data point pattern
and the upper and lower simulation envelopes. It can be plotted
using `plot.fv`

.

Arguments can be passed to the function `fun`

through
`...`

. This makes it possible to select the edge correction
used to calculate the summary statistic. See the Examples.
Selecting only a single edge
correction will make the code run much faster.

If `Y`

is a fitted point process model, and `simulate=NULL`

,
then the model is simulated
by running the Metropolis-Hastings algorithm `rmh`

.
Complete control over this algorithm is provided by the
arguments `start`

and `control`

which are passed
to `rmh`

.

For simultaneous critical envelopes (`global=TRUE`

)
the following options are also useful:
[object Object],[object Object]

It is also possible to extract the summary functions for each of the
individual simulated point patterns, by setting `saveall=TRUE`

.
Then the return value also
has an attribute `"savedata"`

containing all the
summary functions for the individual simulated patterns.
It is an `"fv"`

object containing
functions named `sim1, sim2, ...`

representing the `nsim`

summary functions.

##### Value

- An object of class
`"fv"`

, see`fv.object`

, which can be plotted directly using`plot.fv`

.Essentially a data frame containing columns

r the vector of values of the argument $r$ at which the summary function `fun`

has been estimatedobs values of the summary function for the data point pattern lo lower envelope of simulations hi upper envelope of simulations - If
`saveall=TRUE`

, the return value also has an attribute`"savedata"`

which contains the summary functions computed for each of the`nsim`

simulated patterns.

##### References

Cressie, N.A.C. *Statistics for spatial data*.
John Wiley and Sons, 1991.

Diggle, P.J. *Statistical analysis of spatial point patterns*.
Arnold, 2003.

Ripley, B.D. (1981)
*Spatial statistics*.
John Wiley and Sons.

Ripley, B.D. *Statistical inference for spatial processes*.
Cambridge University Press, 1988.

Stoyan, D. and Stoyan, H. (1994) Fractals, random shapes and point fields: methods of geometrical statistics. John Wiley and Sons.

##### See Also

##### Examples

```
data(simdat)
X <- simdat
# Envelope of K function under CSR
plot(envelope(X))
<testonly>plot(envelope(X, nsim=4))</testonly>
# Translation edge correction (this is also FASTER):
plot(envelope(X, correction="translate"))
<testonly>plot(envelope(X, nsim=4, correction="translate"))</testonly>
# Envelope of K function for simulations from model
data(cells)
fit <- ppm(cells, ~1, Strauss(0.05))
plot(envelope(fit))
<testonly>plot(envelope(fit, nsim=4))</testonly>
# Envelope of G function under CSR
plot(envelope(X, Gest))
<testonly>plot(envelope(X, Gest, nsim=4))</testonly>
# Envelope of L function under CSR
# L(r) = sqrt(K(r)/pi)
E <- envelope(X, Kest)
plot(E, sqrt(./pi) ~ r)
<testonly>E <- envelope(X, Kest, nsim=4)
plot(E, sqrt(./pi) ~ r)</testonly>
# Simultaneous critical envelope for L function
plot(envelope(X, Kest, transform=expression(sqrt(./pi)), global=TRUE))
<testonly>plot(envelope(X, Kest, nsim=4,transform=expression(sqrt(./pi)), global=TRUE))</testonly>
# How to pass arguments needed to compute the summary functions:
# We want envelopes for Jcross(X, "A", "B")
# where "A" and "B" are types of points in the dataset 'demopat'
data(demopat)
plot(envelope(demopat, Jcross, i="A", j="B"))
<testonly>plot(envelope(demopat, Jcross, i="A", j="B", nsim=4))</testonly>
# Use of `simulate'
plot(envelope(cells, Gest, simulate=expression(runifpoint(42))))
plot(envelope(cells, Gest, simulate=expression(rMaternI(100,0.02))))
<testonly>plot(envelope(cells, Gest, simulate=expression(runifpoint(42)), nsim=4))
plot(envelope(cells, Gest, simulate=expression(rMaternI(100, 0.02)), nsim=4))</testonly>
# Envelope under random toroidal shifts
data(amacrine)
plot(envelope(amacrine, Kcross, i="on", j="off",
simulate=expression(rshift(amacrine, radius=0.25))))
# Envelope under random shifts with erosion
plot(envelope(amacrine, Kcross, i="on", j="off",
simulate=expression(rshift(amacrine, radius=0.1, edge="erode"))))
# Envelope of INHOMOGENEOUS K-function with fitted trend
trend <- density.ppp(X, 1.5)
plot(envelope(X, Kinhom, lambda=trend,
simulate=expression(rpoispp(trend))))
```

*Documentation reproduced from package spatstat, version 1.11-2, License: GPL version 2 or newer*