我目前正在尝试使用降水量作为协变量来模拟火灾爆发。在阅读各种建议后,我遇到了 R 中的 quadscheme 函数。根据文档,该函数定义如下:
quadscheme(data, dummy, method="grid", ...)
data - 观察到的数据点模式。 ppp 类的对象。这部分我很清楚。
dummy - 求积的虚拟点模式。 ppp 类的对象或采用 as.ppp() 识别的格式的对象。默认为default.dummy(data, ...)。这就是我遇到困难的地方。 如何合并降水? ...
这是我尝试过的示例
fire_outbreaks <- data.frame(
x = runif(100, min = 0, max = 100),
y = runif(100, min = 0, max = 100)
)
precipitation <- data.frame(
x = runif(40, min = 0, max = 100),
y = runif(40, min = 0, max = 100),
precip_mm = runif(40, min = 0, max = 4)
)
fire_outbreaks.ppp <- ppp(fire_outbreaks$x, fire_outbreaks$y, owin(c(0, 100), c(0, 100)))
quadscheme <- quadscheme(data=fire_outbreaks.ppp, dummy=list(x=precipitation$x, y=precipitation$y))
Cov <- data.frame(precipitation[, 3])
ppm(quadscheme, ~precipitation$precip_mm, Poisson(), covariates=Cov)
Error in mpl.get.covariates(covariates, P, Pname, covfunargs) : Number of rows in ‘covariates’ does not equal the number of quadrature points
您能否提供有关如何正确地将降水数据作为协变量纳入quadscheme函数中的指导?
感谢您的协助。
最诚挚的问候, 亚历克斯·莫尼托·纳科洛洛
看来您是从头开始在 spatstat 中进行参数化建模。我强烈建议您查看《空间点模式:R 的方法论和应用》的第 9 章,您可以在 http://book.spatstat.org/ 下载免费示例章节(免责声明:我)我是这本书的合著者)
简而言之,如果您想对观察到火灾爆发的可能性如何取决于给定位置所收到的降水量进行建模,您需要知道发生火灾的地方和未发生火灾的一些地方的降水量出去。
虚拟点的作用是未发生火灾的位置,因此您需要了解数据和虚拟点处的降水量。
理想情况下,您在整个观测区域(窗口)的精细网格上拥有降水数据,并且只需使用最近网格点的值作为每个数据/虚拟点的降水值。
您在非常非系统的位置有降水值,一种选择是进行空间平滑以获得观测窗口中任何位置的降水值。
通常,您不会手动指定quadscheme,但它将由函数ppm()
“在幕后”创建。
如果您还有数据点和一些背景虚拟点的降水值,则手动构建主要相关,如以下根据您的示例改编的示例所示:
library(spatstat)
set.seed(42)
fire_outbreaks <- data.frame(
x = runif(100, min = 0, max = 100),
y = runif(100, min = 0, max = 100)
)
precipitation <- data.frame(
x = runif(40, min = 0, max = 100),
y = runif(40, min = 0, max = 100),
precip_mm = runif(40, min = 0, max = 4)
)
fire_outbreaks.ppp <- ppp(fire_outbreaks$x, fire_outbreaks$y, owin(c(0, 100), c(0, 100)))
precipitation_at_outbreaks <- data.frame(
x = fire_outbreaks$x,
y = fire_outbreaks$y,
precip_mm = runif(100, min = 0, max = 1)
)
quadscheme <- quadscheme(data=fire_outbreaks.ppp, dummy=list(x=precipitation$x, y=precipitation$y))
Cov <- rbind(precipitation_at_outbreaks, precipitation)[, "precip_mm", drop=FALSE]
dim(Cov)
#> [1] 140 1
head(Cov)
#> precip_mm
#> 1 0.4303332
#> 2 0.3937769
#> 3 0.1419089
#> 4 0.2798067
#> 5 0.5648222
#> 6 0.9351395
ppm(quadscheme ~ precip_mm, Poisson(), covariates=Cov)
#> Nonstationary Poisson process
#> Fitted to point pattern dataset 'quadscheme'
#>
#> Log intensity: ~precip_mm
#>
#> Fitted trend coefficients:
#> (Intercept) precip_mm
#> -4.1118527 -0.8219116
#>
#> Estimate S.E. CI95.lo CI95.hi Ztest Zval
#> (Intercept) -4.1118527 0.1494498 -4.404769 -3.8189364 *** -27.513262
#> precip_mm -0.8219116 0.2307265 -1.274127 -0.3696959 *** -3.562276
一个更典型的场景是,您在整个观测区域(窗口)的精细网格上有降水数据,我们可以通过使用
Smooth()
平滑不规则的观测值来模拟这一点。 首先是不规则降水数据图:
precipitation_ppp <- as.ppp(precipitation, W = owin(c(0,100),c(0,100)) )
colfun <- spatstat.options("image.colfun")
colmap <- colourmap(colfun(100), range = c(0, 4))
symmap <- symbolmap(cols=colmap, size = 2, pch = 19, range = c(0,4))
plot(precipitation_ppp, symap = symmap, main = "Precipitation at locations", legend = FALSE)
plot(colmap, add = TRUE, xlim = c(103, 108), ylim = c(20, 80), vertical = TRUE)
现在我们平滑降水数据并使用与上面相同的颜色图绘制它们:
precip_mm <- Smooth(precipitation_ppp, sigma = 10)
plot(precip_mm, cols = colmap, main = "Smoothed precipitation")
现在我们可以使用平滑的降水值作为模型中的协变量:
ppm(fire_outbreaks.ppp ~ precip_mm, Poisson())
#> Nonstationary Poisson process
#> Fitted to point pattern dataset 'fire_outbreaks.ppp'
#>
#> Log intensity: ~precip_mm
#>
#> Fitted trend coefficients:
#> (Intercept) precip_mm
#> -4.4080927 -0.1207705
#>
#> Estimate S.E. CI95.lo CI95.hi Ztest Zval
#> (Intercept) -4.4080927 0.2580664 -4.9138936 -3.9022917 *** -17.0812318
#> precip_mm -0.1207705 0.1482876 -0.4114088 0.1698678 -0.8144347