我有一个点列表,我想使用 Moran's I 并通过将感兴趣区域除以 4 x 4 样方来检查自相关。
现在,我在 Google 上找到的每个示例(例如http://www.ats.ucla.edu/stat/r/faq/morans_i.htm)都使用某种测量值作为 Moran's I 函数的第一个输入,无论哪个使用了库(我查看了 ape 和 spdep 包)。
但是,我所拥有的只是我想要检查相关性的点本身。
问题是,尽管这听起来很有趣(或悲伤),但我不知道我在这里做什么。我不是一个(空间)统计专家,我只想知道使用 Moran's I 的点集合是分散的、聚集的还是随机的。
我的方法正确吗?如果不是,我在哪里做错了什么?
谢谢
这是我到目前为止所拥有的:
# download, install and load the spatstat package (http://www.spatstat.org/)
install.packages("spatstat")
library(spatstat)
# Download, install and run the ape package (http://cran.r-project.org/web/packages/ape/)
install.packages("ape")
library(ape)
# Define points
x <- c(3.4, 7.3, 6.3, 7.7, 5.2, 0.3, 6.8, 7.5, 5.4, 6.1, 5.9, 3.1, 5.2, 1.4, 5.6, 0.3)
y <- c(2.2, 0.4, 0.8, 6.6, 5.6, 2.5, 7.6, 0.3, 3.5, 3.1, 6.1, 6.4, 1.5, 3.9, 3.6, 5.2)
# Store the coordinates as a matrix
coords <- as.matrix(cbind(x, y))
# Store the points as two-dimensional point pattern (ppp) object (ranging from 0 to 8 on both axis)
coords.ppp <- as.ppp(coords, c(0, 8, 0, 8))
# Quadrat count
coords.quadrat <- quadratcount(coords.ppp, 4)
# Store the Quadrat counts as vector
coords.quadrat.vector <- as.vector(coords.quadrat)
# Replace any value > 1 with 1
coords.quadrat.binary <- ifelse(coords.quadrat.vector > 1, 1, coords.quadrat.vector)
# Moran's I
# Generate the distance matrix (euclidean distances between points)
coords.dists <- as.matrix(dist(coords))
# Take the inverse of the matrix
coords.dists.inv <- 1/coords.dists
# replace the diagonal entries (Inf) with zeroes
diag(coords.dists.inv) <- 0
writeLines("Moran's I:")
print(Moran.I(coords.quadrat.binary, coords.dists.inv))
writeLines("")