R: Comparing two marked point patterns

31 January, 2012 (14:56) | R, Spatial analysis | By: Manuel Gimond

```# The following script was inspired by a discussion at http://gis.stackexchange.com/q/19522/4490
# (later merged with http://gis.stackexchange.com/q/4484/4490)
#
# The script performs permutations to compare two marked point patterns. A simple ANN statistic
# is used in this example.
#
library(spatstat)

# Generate random points
Z = as.im(function(x,y){ 5 * exp(2 * x - 1) }, owin()) # Generates a sloped density surface
P1 = rpoint(100, Z)
P2 = rpoint(50, Z)

# Combine points into a single markes PPP
P = superimpose(A=P1,B=P2) # Assign label A to P1 and B to P2

# Plot points
plot.owin(P\$window,col="#DDDDDD")
```

```# Permutate labels (do not change point locations)
nn.sim = vector()
P.r = P
for(i in 1:1999){
marks(P.r) = sample(P\$marks) # Randomly reassign labels
nn.sim[i] = mean(nncross(split(P.r)\$A,split(P.r)\$B)\$dist)
}

# Plot distribution and original statistic (using red line)
hist(nn.sim, breaks=30)
abline(v=mean(nncross(split(P)\$A,split(P)\$B)\$dist),col="red")
```

```# Compute empirical cumulative distribution
nn.sim.ecdf = ecdf(nn.sim)
# See how the original stat compares to the simulated distribution</pre>
nn.sim.ecdf(mean(nncross(split(P)\$A,split(P)\$B)\$dist))
```