在没有重叠点的情况下绘制 spatstat 中的残差

plot residuals in spatstat without overlaying points

这可能很简单,但我花了很多时间试图弄清楚但没有运气,也许任何人都可以帮助我。

我通过 spatstat 中的 ppm() 函数安装了点模式模型(下面的可重现代码),当我绘制残差时,它会自动在残差图像上绘制点,这使得很难看到任何东西。有谁知道如何避免它?

代码:

library(spatstat)
pattern <- rpoispp(300)
cov <- rnoise(rgen = rnorm, dimyx=32, mean=2, sd=1, w = pattern$window)
fit <- ppm(pattern ~ cov)
res <- residuals.ppm(fit, type = "raw")
plot(res, how = "imagecontour")

嗯,点过程模型的残差实际上是一个带符号的度量,它具有 离散部分(集中在观察到的位置)和连续部分。如果您只绘制连续部分,您实际上并没有绘制残差...

当然,您只想绘制连续部分是一个有效点,获得它的一个简单方法是将 type = "n" 传递给 plot.msr,然后将其发送给 plot.ppp.但是,这仍然会在左侧给您一个奇怪的符号映射。

或者,您可以使用内部 spatstat 函数 augment.msr 将像素图像添加到残差对象,然后使用该图像进行绘图(请注意,不能保证使用内部函数在 spatstat 的未来版本中工作):

library(spatstat)
pattern <- rpoispp(300)
cov <- rnoise(rgen = rnorm, dimyx=32, mean=2, sd=1, w = pattern$window)
fit <- ppm(pattern ~ cov)
res <- residuals.ppm(fit, type = "raw")
plot(res, how = "imagecontour")
res <- augment.msr(res)
den <- attr(res, "smoothdensity")
plot(den)

数据点未 "over-plotted" 在残差之上:残差度量 包括 每个数据点的 'atom' 质量,一起具有光滑的密度,所以情节是正确的。

如果问题是因为代表原子的符号太大而看不到细节,那么您可以使用参数之一 markscalemaxsize 将传递给 plot.ppp.

话又说回来,如果有很多数据点,你最好只平滑残差度量。如果 res 是您计算的残差度量,则尝试 plot(Smooth(res))。有关详细信息,请参阅 Smooth.msr 的帮助。

如果确实需要提取残差测度的平滑密度分量,可以按照Ege的建议,或者使用with.msr。例如

with(res, Smooth(qlocations %mark% density)) 

给出表示残差测量的连续分量的图像。

这些评论仅适用于原始残差,其中所有原子具有相同的质量 1。对于其他类型的残差,原子具有不相等的质量,显示它们变得更加重要。