## ----------------------------------------------------------------------------- set.seed(0) d <- sample(100, 10) d ## ----autocor1----------------------------------------------------------------- a <- d[-length(d)] b <- d[-1] plot(a, b, xlab='t', ylab='t-1') cor(a, b) ## ----autocor2----------------------------------------------------------------- d <- sort(d) d a <- d[-length(d)] b <- d[-1] plot(a, b, xlab='t', ylab='t-1') cor(a, b) ## ----acfplot------------------------------------------------------------------ acf(d) ## ----message=FALSE------------------------------------------------------------ library(terra) p <- vect(system.file("ex/lux.shp", package="terra")) p <- p[p$NAME_1=="Diekirch", ] p$value <- c(10, 6, 4, 11, 6) as.data.frame(p) ## ----autocor3----------------------------------------------------------------- par(mai=c(0,0,0,0)) plot(p, col=2:7) xy <- centroids(p) points(xy, cex=6, pch=20, col='white') text(p, 'ID_2', cex=1.5) ## ----message=FALSE------------------------------------------------------------ w <- adjacent(p, symmetrical=TRUE) class(w) head(w) ## ----------------------------------------------------------------------------- w ## ----autocor4----------------------------------------------------------------- plot(p, col='gray', border='blue', lwd=2) p1 <- xy[w[,1], ] p2 <- xy[w[,2], ] lines(p1, p2, col='red', lwd=2) ## ----------------------------------------------------------------------------- wm <- adjacent(p, pairs=FALSE) wm ## ----------------------------------------------------------------------------- n <- length(p) ## ----------------------------------------------------------------------------- y <- p$value ybar <- mean(y) ## ----------------------------------------------------------------------------- dy <- y - ybar g <- expand.grid(dy, dy) yiyj <- g[,1] * g[,2] ## ----------------------------------------------------------------------------- yi <- rep(dy, each=n) yj <- rep(dy) yiyj <- yi * yj ## ----------------------------------------------------------------------------- pm <- matrix(yiyj, ncol=n) ## ----------------------------------------------------------------------------- pmw <- pm * wm pmw ## ----------------------------------------------------------------------------- spmw <- sum(pmw) spmw ## ----------------------------------------------------------------------------- smw <- sum(wm) sw <- spmw / smw ## ----------------------------------------------------------------------------- vr <- n / sum(dy^2) ## ----------------------------------------------------------------------------- MI <- vr * sw MI ## ----------------------------------------------------------------------------- EI <- -1/(n-1) EI ## ----------------------------------------------------------------------------- ww <- adjacent(p, "queen", pairs=FALSE) ww ## ----------------------------------------------------------------------------- ac <- autocor(p$value, ww, "moran") ac ## ----------------------------------------------------------------------------- m <- sapply(1:99, function(i) { autocor(sample(p$value), ww, "moran") }) hist(m) pval <- sum(m >= ac) / 100 pval ## ----------------------------------------------------------------------------- n <- length(p) ms <- cbind(id=rep(1:n, each=n), y=rep(y, each=n), value=as.vector(wm * y)) ## ----------------------------------------------------------------------------- ms <- ms[ms[,3] > 0, ] ## ----------------------------------------------------------------------------- ams <- aggregate(ms[,2:3], list(ms[,1]), FUN=mean) ams <- ams[,-1] colnames(ams) <- c('y', 'spatially lagged y') head(ams) ## ----auto5-------------------------------------------------------------------- plot(ams, pch=20, col="red", cex=2) reg <- lm(ams[,2] ~ ams[,1]) abline(reg, lwd=2) abline(h=mean(ams[,2]), lt=2) abline(v=ybar, lt=2) ## ----ngb2--------------------------------------------------------------------- coefficients(reg)[2]