遵循 Dormann 等人的方法。(2007),你可以这样做:
N <- 3000
p <- 1/N
# generate some points
set.seed(1234)
x.coord <- runif(N,0,100)
y.coord <- runif(N,0,100)
points <- cbind(x.coord,y.coord)
# distance matrix between points
Dd <- as.matrix(dist(points))
# weights matrix
w <- exp(-p * Dd)
Ww <- chol(w)
# errors
z <- t(Ww) %*% rnorm(N,0,1)
# plot
df <- data.frame(x = x.coord, y = y.coord, z = z)
require(ggplot2)
ggplot(df, aes(x = x, y = y, col = z)) +
geom_point() +
scale_colour_gradient(low="red", high="white")
其中变量 p 控制自相关的大小(这里我将其设置为 1/3000 = 0.000333)。p = 0 将没有相关性。
参考文献:Dormann, CF, McPherson, JM, Araujo, MB, Bivand, R., Bolliger, J., Carl, G., … Wilson, R. (2007)。在物种分布数据分析中解释空间自相关的方法:综述。生态学,30(5),609-628。