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