如何将空间点转换为 R 中的邻居列表?

How do I convert spatial points to neighbours list in R?

我正在尝试将一些空间点转换为 R 中的邻居列表。我有一个世界范围内出现的个别动物物种的列表,每个物种都有一个纬度和经度值。当我试图对可能的空间自相关进行统计分析时,我需要创建一个对象 class nb(邻居列表),但我不知道如何在 R 中进行这种转换。

我的数据如下:

SPECIES   LATITUDE    LONGITUDE
species A     -85           134
species B      34             2
species B      42             3
species B      45             5
species C      -2            80
species C      -5            79
(...)

数据集还包含具有某些变量值的其他列,但我认为这对我的目的并不重要。

任何帮助将不胜感激。

spdep 有不同的方法来计算邻居列表。最好先将数据框转换为空间对象。这将确保正确解释坐标。

dataSp <- read.table( text = '
  SPECIES   LATITUDE    LONGITUDE
  speciesA     -85           134
  speciesB      34             2
  speciesB      42             3
  speciesB      45             5
  speciesC      -2            80
  speciesC      -5            79',
  header = TRUE )

library(spdep)

coordinates(dataSp) <- ~ LONGITUDE + LATITUDE

邻居通常是根据多边形计算的,因为共享边界是主要标准。您可以使用 Voronoi 和 Thiessen 等技术生成多边形,但这不是必需的。您可以使用 k nearest 作为标准,而不是使用边界:

knea <- knearneigh(coordinates(dataSp), longlat = TRUE)
neib <- knn2nb(knea)

或使用距离范围:

neib <- dnearneigh(coordinates(dataSp), 0, 10, longlat = TRUE)