Hi, Great question, and clear example.
The first problem: ACd<-pairdist(A) instead of ACd <- pairdist(AC) BUT pairdist() is the wrong function: that calculates the mean distance between ALL points, A to A and C to C as well as A to C. You need crossdist() instead. The most flexible approach is to roll your own permutation test. That will work even if B and C are different sizes, etc. If you specify the problem more exactly, there are probably parametric tests, but I like permutation tests. library(spatstat) set.seed(2019) A <- rpoispp(100) ## First event B <- rpoispp(50) ## Second event C <- rpoispp(50) ## Third event plot(A, pch=16) plot(B, col="red", add=T) plot(C, col="blue", add=T) ABd<-crossdist(A, B) ACd<-crossdist(A, C) mean(ABd) # 0.5168865 mean(ACd) # 0.5070118 # test the hypothesis that ABd is equal to ACd nperm <- 999 permout <- data.frame(ABd = rep(NA, nperm), ACd = rep(NA, nperm)) # create framework for a random assignment of B and C to the existing points BC <- superimpose(B, C) B.len <- npoints(B) C.len <- npoints(C) B.sampvect <- c(rep(TRUE, B.len), rep(FALSE, C.len)) set.seed(2019) for(i in seq_len(nperm)) { B.sampvect <- sample(B.sampvect) B.perm <- BC[B.sampvect] C.perm <- BC[!B.sampvect] permout[i, ] <- c(mean(crossdist(A, B.perm)), mean(crossdist(A, C.perm))) } boxplot(permout$ABd - permout$ACd) points(1, mean(ABd) - mean(ACd), col="red") table(abs(mean(ABd) - mean(ACd)) >= abs(permout$ABd - permout$ACd)) # FALSE TRUE # 573 426 sum(abs(mean(ABd) - mean(ACd)) >= abs(permout$ABd - permout$ACd)) / nperm # 0.4264264 The difference between ACd and ABd is indistinguishable from that obtained by a random resampling of B and C. Sarah On Fri, Nov 22, 2019 at 8:26 AM ASANTOS via R-sig-Geo <r-sig-geo@r-project.org> wrote: > > Dear R-Sig-Geo Members, > > I have the hypothetical point process situation: > > library(spatstat) > set.seed(2019) > A <- rpoispp(100) ## First event > B <- rpoispp(50) ## Second event > C <- rpoispp(50) ## Third event > plot(A, pch=16) > plot(B, col="red", add=T) > plot(C, col="blue", add=T) > > I've like to know an adequate spatial approach for comparing if on > average the event B or C is more close to A. For this, I try to make: > > AB<-superimpose(A,B) > ABd<-pairdist(AB) > AC<-superimpose(A,C) > ACd<-pairdist(A) > mean(ABd) > #[1] 0.5112954 > mean(ACd) > #[1] 0.5035042 > > With this naive approach, I concluded that event C is more close of A > that B. This sounds enough for a final conclusion or more robust > analysis is possible? > > Thanks in advance, > > Alexandre > -- Sarah Goslee (she/her) http://www.numberwright.com _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo