3

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

我通过 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")
4

2 回答 2

2

数据点没有在残差之上“过度绘制”:残差测量包括每个数据点的质量“原子”以及平滑密度,因此绘图是正确的。

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

再说一次,如果有很多数据点,你可能会更好地平滑残差测量。如果res是您计算的残差度量,则尝试plot(Smooth(res)). 有关详细信息,请参阅帮助Smooth.msr

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

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

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

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

于 2016-04-14T01:26:17.150 回答
1

那么点过程模型的残差实际上是一个有符号的度量,它既有离散部分(集中在观察位置),也有连续部分。如果你只绘制连续部分,你并没有真正绘制残差......

当然,您只想绘制连续部分是一个有效的点,而获得这一点的一种简单方法是将其传递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)
于 2016-04-12T20:06:24.057 回答