我想知道是否有人知道如何在 spatstat 中分配标记,以便它们倾向于在空间上聚集?我有一组经纬度坐标,我想将其分为 4 组。我已经想出如何使用以下代码为这些点随机分配标记/组:
as.ppp(data, window ,marks=factor(sample(1:4,replace=TRUE)))
但我不知道如何分配标记,以便各组倾向于占据彼此更接近的点。作为更复杂的情况,我还希望每组内的点数每次都相同,指定的数字。有人有线索吗?提前致谢!
通常在 spatstat 中,我们定义模型来描述/生成随机位置的点,并且可能带有随机标记。如果我对您的理解正确,您有一组固定的位置,您只想分配随机标记。你有多少分?如果您没有太多点,一个简单的建议可能是生成一个多元正态分布变量,然后为第一个标记取 n_1 个最低值,第二个标记取 n_2 个下一个值,依此类推。一个具有 4 个大小相等的点组的简单示例:
library(spatstat)
library(mvtnorm)
set.seed(42) # Make reproducible
X <- redwood # Example data
n <- npoints(redwood)
Xdist <- pairdist(X) # n x n matrix of distances in X
decay_rate <- 1 # Parameter for covariance sturcture
sigma <- exp(-decay_rate * Xdist)
m <- rmvnorm(1, rep(0, n), sigma)
breaks <- quantile(m, probs = c(0, .25, .5, .75, 1)) # breaks to cut marks in four equal sized groups
marks(X) <- cut(m, breaks = breaks, include.lowest=TRUE, labels = 1:4)
plot(X)