簡體   English   中英

將 kernel 密度估計提取到 R 中的新樣本點

[英]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)

kde plot

'密度' output 是這樣的:

您正在使用來自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.pppat參數會更快、更准確:

values <- density(p, at="points")

警告:在您的示例(以及上面的示例)中,未指定平滑帶寬sigma sigma的默認值可能對您的數據不滿意。 請參閱density.ppp的幫助文件和示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM