为 spatstat 中空间变化的相对风险的非参数估计指定自定义权重

Specifying custom weights for the nonparametric estimate of spatially-varying relative risk in spatstat

有没有办法在 spatstat(版本 1.63-3)的 relrisk.ppp 函数中指定权重?

relrisk.ppp 函数调用 density.ppp 函数,该函数允许用户指定自己的权重。

例如,让我们以提供的 spatstat.data::urkiola 数据为基础,其中位置不是单棵树,而是树丛,我们有第二个数字标记表示每个点位置的树木频率:

urkiola_new <- spatstat.data::urkiola
urkiola_new$marks <- data.frame("type" = urkiola_new$marks, "freq" = rpois(urkiola_new$n, 3))

f1 <- spatstat::relrisk(urkiola_new, weights = urkiola_new$marks$freq)

当在 relrisk 的调用中使用 urkiola_new 时,urkiola_newrelrisk.ppp 中的 stopifnot(is.multitype(X)) 捕获。接下来,我尝试在使用原始 urkiola 数据时将权重单独指定为向量,

f2 <- spatstat::relrisk(urkiola, weights = urkiola_new$marks$freq)

但被内部 density.ppp 函数中的 pixellate.ppp 函数警告捕获:

Error in pixellate.ppp(x, ..., padzero = TRUE) : length(weights) == npoints(x) || length(weights) == 1 is not TRUE

将权重转换为列表时出现同样的错误

urkiola_weights <- split(urkiola_new$marks$freq, urkiola_new$marks$type)

f3 <- spatstat::relrisk(urkiola, weights = urkiola_weights)

我怀疑有一种方法可以巧妙地指定权重,但我还是没有想到。任何建议或指导都会有所帮助,谢谢!

函数 relrisk.ppp 当前未设计用于处理权重。 relrisk.ppp 的帮助条目没有提到权重。

上面的例子是行不通的,因为relrisk.pppdensity.ppp分别应用于每种类型点的子模式,而额外的参数weights是这些点的错误长度子模式。

我会将此问题作为功能请求,将此功能添加到 relrisk.ppp。应该快了。

更新:现在在开发版本中实现,spatstat 1.64-0.018可在spatstat github repository