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
我有一个多边形形状文件和另一个分布在多边形上的点。我想根据它包含的点为每个多边形创建一个核密度估计。不幸的是,我只能使用 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