首页 > 解决方案 > 如果它们降落在另一个点的某个附近,我如何生成点被“排斥”的数据?

问题描述

runifdisc用来在光盘上绘制随机点,但我不希望这些点落在其他点的某个附近。这些点当前被解析为正方形和三角形。我正在使用该spatstat软件包。

有没有办法做到这一点?这是我的代码:

dots = runifdisc(210, radius=1)
plot(dots, type="n")
points(dots$x[1:45], dots$y[1:45], pch=15, col="red", cex=2)
points(dots$x[46:90], dots$y[46:90], pch=15, col="red", cex=2)
points(dots$x[91:151], dots$y[91:151], pch=17, col="blue", cex=2)
points(dots$x[152:210], dots$y[152:210], pch=17, col="blue", cex=2)

这就是它的样子

我什至可能对这些点的均匀分布持开放态度,例如在圆盘内的一个网格上,我可以设置其大小,以确保没有重叠。

标签: rspatstat

解决方案


有执行此操作的函数,spatstat包括rSSIrMaternIrMaternII、和。这取决于您希望积分如何“到达”以及应该如何“击退”它们。rHardcorerStraussrmh

  • rSSI: 积分一一到达。每个点都是随机放置的,条件是它不会离现有点太近。当无法在任何地方放置新点时游戏停止(“简单顺序抑制”)
  • rMaternI: 积分同时到达。然后删除任何离另一个点太近的点。(母体抑制模型 1)
  • rMaternII:点在一定时间段内随机到达。他们的到达时间被记录下来。在此期间结束时,任何距离较早到达的另一个点太近的点都将被删除。(母体抑制模型 2)
  • rHardcorermh:点不断到达,在随机时间,永远。如果新到达的点太靠近现有点,则它会被拒绝并删除。现有点具有有限的生命周期,并在其生命周期结束时被删除。此过程运行很长时间,然后拍摄快照。(使用空间生死过程模拟的吉布斯硬核过程)。

中的函数spatstat已经过彻底调试和测试,因此我建议尽可能使用它们而不是编写新代码。

有关文档,请参阅spatstat 手册的第 5.5 节和第 13 章


推荐阅读