You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多边形窗口核密度估计返回NA值的问题求助

问题原因及解决办法

你的问题核心是观测窗口的外接范围极大,但默认网格分辨率太低,导致所有网格单元都没有落在任何一个缓冲多边形内部,因此密度估计返回全NA。

具体来看:你的点坐标跨度非常大(x轴从-1258万到2941万米,y轴从-3348万到709万米),而每个缓冲区域仅10公里半径。density.ppp默认使用128×128的网格,单个网格单元的边长超过300公里,远大于缓冲区的大小,没有任何网格单元能完全落在缓冲区内,所以所有网格点都被判定为窗口外,返回NA。

解决步骤

方法1:手动设置高分辨率网格

调用density()时,通过dimyx参数指定足够大的网格数量,让网格单元足够小,能覆盖到缓冲区域:

# 设置2000×2000的高分辨率网格
my_kdi <- density(my_ppp, dimyx = c(2000, 2000))
# 检查是否还有NA
sum(is.na(my_kdi$v))

方法2:针对局部区域计算密度

如果只需要在每个点的缓冲区内计算密度,可以使用local_density函数(spatstat 2.0+版本支持)直接计算每个点附近的局部密度:

# 计算每个点的局部密度(带宽设为5000米)
local_dens <- local_density(my_ppp, sigma = 5000)

额外验证:确认点与窗口的匹配性

可以先验证点是否真的在观测窗口内,排除其他潜在问题:

# 检查所有点是否在窗口内
all(inside.owin(my_ppp$x, my_ppp$y, my_ppp$window))

内容的提问来源于stack exchange,提问作者Josh Persi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:40:12