Learn R Programming

spatstat (version 1.15-3)

envelope: Simulation envelopes of summary function

Description

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,
  nsim2=nsim, Yname=NULL, internal=NULL)

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. Specifies how to generate the simulated point patterns. If simulate is an expression in the R language, then this expression will be evaluated nsim times, to obtain nsim point patterns whi
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.
nsim2
Number of extra simulated point patterns to be generated if it is necessary to use simulation to estimate the theoretical mean of the summary function. Only relevant when global=TRUE and the simulations are not based on CSR.
Yname
Character string that should be used as the name of the data point pattern Y when printing or plotting the results.
internal
Do not use this argument. It is used by the package's internal code.

Value

  • An object of class "fv", see fv.object, which can be plotted directly using plot.fv.

    Essentially a data frame containing columns

  • rthe vector of values of the argument $r$ at which the summary function fun has been estimated
  • obsvalues of the summary function for the data point pattern
  • lolower envelope of simulations
  • hiupper envelope of simulations
  • and either
  • theotheoretical value of the summary function under CSR (Complete Spatial Randomness, a uniform Poisson point process) if the simulations were generated according to CSR
  • mmeanestimated theoretical value of the summary function, computed by averaging simulated values, if the simulations were not generated according to CSR.
  • Additionally, if saveall=TRUE, the return value has an attribute "savedata" which contains the summary functions computed for each of the nsim simulated patterns.

Warning

An error may be generated if one of the simulations produces a point pattern that is empty, or is otherwise unacceptable to the function fun.

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.

  • IfYis a point pattern (an object of class"ppp") andsimulate=NULL, then this routine generatesnsimsimulations of Complete Spatial Randomness (i.e.nsimsimulated point patterns each being a realisation of the uniform Poisson point process) with the same intensity as the patternY. (IfYis 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 inY.)
  • IfYis a fitted point process model (an object of class"ppm") andsimulate=NULL, then this routine generatesnsimsimulated realisations of that model.
  • Ifsimulateis supplied, then it determines how the simulated point patterns are generated. It may be either
    • an expression in the R language, typically containing a call to a random generator. This expression will be evaluatednsimtimes to yieldnsimpoint patterns. For example ifsimulate=expression(runifpoint(100))then each simulated pattern consists of exactly 100 independent uniform random points.
    • a list of point patterns. The entries in this list wil be taken as the simulated patterns.
The summary statistic 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, the upper and lower simulation envelopes, and the theoretical expected value (exact or estimated) of the summary function for the model being tested. 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.

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

fv.object, plot.fv, Kest, Gest, Fest, Jest, pcf, ppp, ppm

Examples

Run this code
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))
 plot(envelope(fit), global=TRUE)
 <testonly>plot(envelope(fit, nsim=4))
  plot(envelope(fit, nsim=4, global=TRUE))</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
 # (alternatively, use Lest)
 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))
  plot(envelope(cells, Gest, simulate=expression(runifpoint(42)),
nsim=4, global=TRUE))
  plot(envelope(cells, Gest, simulate=expression(rMaternI(100, 0.02)),
nsim=4, global=TRUE))</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))))

 # Precomputed list of point patterns
 X <- rpoispp(50)
 PatList <- list()
 for(i in 1:20) PatList[[i]] <- runifpoint(X$n)
 plot(envelope(X, Kest, nsim=20, simulate=PatList))

Run the code above in your browser using DataLab