On 19/10/16 02:04, Ignacio Barbeito-Sanchez wrote:

Dear list members,

We have a bivariate point pattern (two tree species) in a linear
transect and would like to obtain a null model equivalent to the one
provided by rshift in 2D to test the independence of both populations
(in spatstat)

We are using spatstat, but this option does not seem available at the
moment, or we can't find it (the option available tests the complete
spatial randomness of one population (p) once the other population is
fixed (s) but does not keep the pattern of the second population (p)
unchanged-

I don't understand what you are saying here, not that it matters a great deal.

which is a problem because both populations are clustered in
our case)

An example of our code follows:

T1 is a point pattern on a linear transect as follows:
 > T1
Point pattern on linear network
232 points
Multitype, with possible types: p, s
Linear network with 2 vertices and 1 line
Enclosing window: rectangle = [-1, 101] x [-1, 1] units

We used multiple pair correlation functions (linearpfccross)

We computed an envelope to test the hypothesis of complete spatial
randomness and independance:
T1.env = envelope.lpp ( T1, fun = linearpcfcross , nsim = 30 , i = "s",
j = "p")

If anybody has experienced a similar problem or has some hints on how to
proceed we would be very grateful.

As of present there is no rshift() method for the lpp class in spatstat, and it may be a while before such a method is added. However for the simple structure in your example it is not hard to write a little add hoc function to do the shifting. I enclose a skeletal example below.

Note that the characteristics of your example are "hard wired" in the given code; it shouldn't to too difficult to make the code more general however. The code does a "loop" type shift, analogous to setting edge="torus" in rshift.ppp; this may be inappropriate for clustered data. Again it shouldn't be too difficult to change this behaviour.

Since you did not provide a reproducible example I have tried out my code on simplistically simulated data.

=====================================================================
# Code:
X <- psp(0,1,100,1,window=owin(c(0,101),c(-50,50)))
X <- as.linnet(X)
set.seed(42)
X <- runiflpp(232,X)
marks(X) <- factor(sample(c("p","s"),232,TRUE))

foo <- function(r0,X){
   u <- runif(2,-r0/2,r0/2)
   xp <- X$data$x[marks(X)=="p"]+u[1]
   xp[xp < 1] <- xp[xp < 1] + 99
   xp[xp > 100] <- xp[xp > 100] - 99
   xs <- X$data$x[marks(X)=="s"]+u[2]
   xs[xs < 1] <- xs[xs < 1] + 99
   xs[xs > 100] <- xs[xs > 100] - 99
   X$data$x[marks(X)=="p"] <- xp
   X$data$x[marks(X)=="s"] <- xs
   X
}

E <- envelope(X,fun=linearpcfcross,i="s",j="p",
              simulate=expression(foo(15,X)))
plot(E)
=====================================================================

HTH

cheers,

Rolf Turner

--
Technical Editor ANZJS
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to