R 中多边形的 Crating Kernel 密度估计

Crating Kernel density estimate for polygon in R

我有一个多边形形状文件和另一个分布在多边形上的点。我想根据它包含的点为每个多边形创建一个核密度估计。不幸的是,我只能使用 MASS 包中的 kde2d 函数创建方形 KDE。我希望 KDE 的形状像多边形。 有什么建议吗?

 kde1 <- kde2d(poly$X, poly$Y, n=100,)

enter image description here

您可以为此使用 spatstat 包。这是阅读的例子 在 sf 的 shapefile 中,生成随机点和 运行 核密度 估计点的强度(每单位面积的点数):

library(sf)
#> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
nc <- st_read(system.file("shape/nc.shp", package="sf"))
#> Reading layer `nc' from data source `/usr/lib/R/site-library/sf/shape/nc.shp' using driver `ESRI Shapefile'
#> Simple feature collection with 100 features and 14 fields
#> geometry type:  MULTIPOLYGON
#> dimension:      XY
#> bbox:           xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
#> geographic CRS: NAD27
nc_flat <- st_transform(nc, crs = 26917)
W <- as.owin(nc_flat$geometry[1]) # First county of North Carolina data set in spatstat format

library(spatstat)
X <- runifpoint(100, win = W)
plot(X, "Random points")

D <- density(X)
plot(D, main = "KDE")

好的!我设法通过使用 spatstat 包中的 'ppp' 函数来使用我自己的点数。

  C <- as.owin(polygon$geometry[n])

  p<- ppp(points$X,points$Y, window = C)

  D <- density(p)
[enter image description here][1]


  [1]: https://i.stack.imgur.com/YZN0V.png