# ADD REQUIRED PACKAGES require(rgdal) require(sp) require(spatstat) options(scipen=5) # SIMULATE 1000 RANDOM OBS WITH A BINOMINAL [0,1] MARK COLUMN, THE ASSUMPTION IS THAT A # VALUE OF 1 & 2 REPRESENTS PRESENCE OF DESEASE IN EACH SPP i=1000 spp1 <- SpatialPointsDataFrame(cbind(round(runif(i), 2), round(runif(i), 2)), data.frame(ID=seq(1,i,1), MARKS=rbinom(i,1,0.5))) spp2 <- SpatialPointsDataFrame(cbind(round(runif(i), 2), round(runif(i), 2)), data.frame(ID=seq(1,i,1), MARKS=rbinom(i,1,0.5))) # RECODE spp2 MARKS AS 2 spp2@data$MARKS[spp2@data$MARKS == 1] <- 2 ############################################# ###### START MONTE CARLO CROSS-K ANALYSIS HERE ###### ############################################# # COMBINE INTO A SINGLE sp POINT OBJECT AND COERCE MARKS COL TO FACTOR spp <- rbind( spp1[spp1@data$MARKS > 0 ,], spp2[spp2@data$MARKS > 0 ,]) spp@data$MARKS <- as.factor(spp@data$MARKS) # CREATE CONVEX HULL FOR ANALYSIS WINDOW W=ripras(coordinates(spp)) # COERCE TO spatstat ppp OBJECT AND CREATE MARKS spp.ppp=as.ppp(coordinates(spp), W) spp.ppp=setmarks(spp.ppp, as.factor(spp$MARKS)) # ESTIMATE BANDWIDTH area <- area.owin(W) lambda <- spp.ppp$n/area ripley <- min(diff(W$xrange), diff(W$yrange))/4 rlarge <- sqrt(1000/(pi * lambda)) rmax <- min(rlarge, ripley) bw <- seq(0, rmax, by=rmax/10) # CALCULATE PERMUTED CROSS-K AND PLOT RESULTS Lenv <- envelope(spp.ppp, fun="Kcross", r=bw, i="1", j="2", nsim=99, nrank=5, transform=expression(sqrt(./pi)-bw), global=TRUE) plot(Lenv, main="Cross K", xlab="Distance", ylab="L(r)", legend=F, col=c("white","black","grey","grey"), lty=c(1,2,2,2), lwd=c(2,1,1,1) ) polygon( c(Lenv$r, rev(Lenv$r)), c(Lenv$lo, rev(Lenv$hi)), col="lightgrey", border="grey") lines(supsmu(bw, Lenv$obs), lwd=2) lines(bw, Lenv$theo, lwd=1, lty=2) legend("topleft", c(expression(hat(L)(r)), "Simulation Envelope", "theo"), pch=c(-32,22), col=c("black","grey"), lty=c(1,0,2), lwd=c(2,0,2), pt.bg=c("white","grey"))
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.