在没有重叠点的情况下绘制 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' 质量,一起具有光滑的密度,所以情节是正确的。
如果问题是因为代表原子的符号太大而看不到细节,那么您可以使用参数之一 markscale
或 maxsize
将传递给 plot.ppp
.
话又说回来,如果有很多数据点,你最好只平滑残差度量。如果 res
是您计算的残差度量,则尝试 plot(Smooth(res))
。有关详细信息,请参阅 Smooth.msr
的帮助。
如果确实需要提取残差测度的平滑密度分量,可以按照Ege的建议,或者使用with.msr
。例如
with(res, Smooth(qlocations %mark% density))
给出表示残差测量的连续分量的图像。
这些评论仅适用于原始残差,其中所有原子具有相同的质量 1。对于其他类型的残差,原子具有不相等的质量,显示它们变得更加重要。
这可能很简单,但我花了很多时间试图弄清楚但没有运气,也许任何人都可以帮助我。
我通过 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' 质量,一起具有光滑的密度,所以情节是正确的。
如果问题是因为代表原子的符号太大而看不到细节,那么您可以使用参数之一 markscale
或 maxsize
将传递给 plot.ppp
.
话又说回来,如果有很多数据点,你最好只平滑残差度量。如果 res
是您计算的残差度量,则尝试 plot(Smooth(res))
。有关详细信息,请参阅 Smooth.msr
的帮助。
如果确实需要提取残差测度的平滑密度分量,可以按照Ege的建议,或者使用with.msr
。例如
with(res, Smooth(qlocations %mark% density))
给出表示残差测量的连续分量的图像。
这些评论仅适用于原始残差,其中所有原子具有相同的质量 1。对于其他类型的残差,原子具有不相等的质量,显示它们变得更加重要。