Random Toroidal Shift of Point Pattern

Applies a random shift simultaneously to all the points of a point pattern, or to selected sub-patterns, with wraparound at the borders of the window.

rtoro(X, which=NULL)
Point pattern to be subjected to random shift. An object of class "ppp" or "splitppp".
Identifies which components of the pattern will be shifted. Vector of marks (if X is a multitype point pattern) or subset of names(X) (if X is a "splitppp" object). Each component will be shi

This operation randomises the locations of the points in a point pattern. It is useful for some hypothesis testing purposes.

A `shift' is a simultaneous, parallel displacement of all points by the same displacement vector $(\Delta x, \Delta y)$. Shifting a point pattern could leave some points outside the boundary of the window of observation, so we may (if the window is a rectangle) treat opposite edges of the window as identical, so that a point which disappears off the right-hand edge will re-appear at the left-hand edge. This is called a ``toroidal shift'' because it makes the rectangle topologically equivalent to the surface of a torus (doughnut).

The argument X may be either

  • a point pattern (an object of class"ppp")
  • an object of class"splitppp"(basically a list of point patterns, obtained fromsplit.ppp).
If which=NULL, then
  • IfXis a point pattern object, all the points of the pattern are shifted simultaneously by the same displacement vector.
  • IfXis an object of class"splitppp"then each of the component point patterns is randomly shifted by a different displacement vector.
The argument which identifies which sub-patterns of X will be subjected to random shifts. Different sub-patterns will be shifted by different displacement vectors. If which is not NULL, then
  • IfXis a point pattern object, it should be a multitype pattern (i.e.X$marksmust be a factor). Thenwhichshould be a vector of types (i.e. a vector containing one or more levels ofX$marks). For each valueainwhich, the sub-pattern ofXconsisting of points of typeaonly will be extracted, and subjected to a random toroidal shift. A different shift will be applied to different sub-patterns. The points not selected bywhichwill be unchanged.
  • IfXis an object of class"splitppp", thenwhichcan be any valid subset index for the listX. For examplewhichcould be a vector of names of components in the listX. Each selected component point pattern will be shifted by a different displacement vector.
In this implementation, every random displacement vector is generated with a uniform distribution over the range of possible displacement vectors. That is, the coordinates $\Delta x, \Delta y$ are independent and uniformly distributed.


  • An object of the same type as X.

  • rtoro

   # point patterns:
   # shift all points simultaneously
   X <- rtoro(amacrine)
   # shift "on" and "off" points separately
   X <- rtoro(amacrine, which=amacrine$marks)
   # shift "on" points and leave "off" points fixed
   X <- rtoro(amacrine, which="on")

   # splitppp objects:
   Y <- split(amacrine)
   # shift "on" and "off" points separately
   Z <- rtoro(Y)
   # shift "on" points and leave "off" points fixed
   Z <- rtoro(Y, "on")
   # shift all points simultaneously
   Z <- split(rtoro(superimpose(Y)))
Documentation reproduced from package spatstat, version 1.7-11, License: GPL version 2 or newer

Community examples

Looks like there are no examples yet.