[英]Extracting kernel density estimates to a new sample points in R
我有 400 個多邊形的空間參考數據(shapefile)和分布在它們上面的點。 我希望根據它包含的點為每個多邊形創建一個 kernel 密度估計的柵格。 之后,我想為每個多邊形創建一個包含 100 個隨機點的樣本,其中每個點都有一個空間參考(x 和 y 坐標)和一個 kde 值。 到目前為止,我所做的只是使用“ppp.density”function 創建一個多邊形形狀的 kde 圖像,但是 output 與文檔中描述的不同,我不知道是什么格式它是以及如何獲取新點樣本的 kde 值。
任何幫助將非常感激。
buffer <- st_read(".../.././buffers.shp")
pbb<- st_read(".../.../.././pbb.shp")
library(spatstat)
for (p in 1:400) {
if(p %in% pbb$value) {
poly123<- pbb[pbb$value == p,]
C <- as.owin(buffer$geometry[p])
point<- ppp(poly123$X,poly123$Y, window = C)
d <- density(point, kernel = "gaussian")
plot(d)
您正在使用來自spatstat
package 的 function density.ppp
(不是“ppp.density”)。
如果p
是點模式(類ppp
),則D <- density(p)
計算未歸一化的 kernel 密度估計。 有關解釋和示例,請參閱help(density.ppp)
。
結果D
是可以打印、繪制和子集化等的像素圖像(類im
)。(在您的問題中,您剛剛打印了im
object 的內部結構。)
在計算像素圖像D
之后,如果您想知道D
在某些空間位置的值,那么您可以
X
,然后通過values <- D[X]
提取這些位置的數值; 或者f <- as.function(D)
將像素圖像轉換為 function 然后通過values <- f(x,y)
在所需坐標x,y
處評估 function 。 如果您想知道原始數據位置p
的密度值,那么使用density.ppp
的at
參數會更快、更准確:
values <- density(p, at="points")
警告:在您的示例(以及上面的示例)中,未指定平滑帶寬sigma
。 sigma
的默認值可能對您的數據不滿意。 請參閱density.ppp
的幫助文件和示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.