# rtoro

##### 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.

- Keywords
- spatial

##### Usage

`rtoro(X, which=NULL)`

##### Arguments

- X
- Point pattern to be subjected to random shift.
An object of class
`"ppp"`

or`"splitppp"`

. - which
- 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

##### Details

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 from`split.ppp`

).

`which=NULL`

, then
- If
`X`

is a point pattern object, all the points of the pattern are shifted simultaneously by the same displacement vector. - If
`X`

is an object of class`"splitppp"`

then each of the component point patterns is randomly shifted by a different displacement vector.

`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
- If
`X`

is a point pattern object, it should be a multitype pattern (i.e.`X$marks`

must be a factor). Then`which`

should be a vector of types (i.e. a vector containing one or more levels of`X$marks`

). For each value`a`

in`which`

, the sub-pattern of`X`

consisting of points of type`a`

only will be extracted, and subjected to a random toroidal shift. A different shift will be applied to different sub-patterns. The points not selected by`which`

will be unchanged. - If
`X`

is an object of class`"splitppp"`

, then`which`

can be any valid subset index for the list`X`

. For example`which`

could be a vector of names of components in the list`X`

. Each selected component point pattern will be shifted by a different displacement vector.

##### Value

- An object of the same type as
`X`

.

##### Examples

```
data(amacrine)
# 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.6-11, License: GPL version 2 or newer*