由于 Kwtsum 中的错误,Kres 函数未正确执行,"Weights in K-function are infinite or NA"

Kres function not executing properly due to error in Kwtsum, "Weights in K-function are infinite or NA"

我知道问题是该函数试图对非有限值求和,我想我可以通过从 ppm 对象中删除这些值来解决这个问题,但是我很难找到所有特定的值函数尝试使用的组件。

我已经尝试查看 Github(和 R 中)的源代码以向后跟踪逻辑,看起来这可能是 Kinhom 函数的问题,但我有麻烦一路跟踪它回到 PPM 对象,因为有很多大的中间内部函数。

任何人都可以指出导致错误的 PPM 对象的特定组件,以及如何删除它吗?任何帮助将不胜感激!

编辑:澄清一下,我知道 glmdata (4430, 4524) 中有两个点具有未定义的协变量值,我怀疑它们导致了这个问题。我添加了 str() 命令以显示我怀疑问题值的存储位置。

Github 上的 Kinhom 函数 Spatstat 页面 https://github.com/spatstat/spatstat/blob/7ee141dc21d945fb35163868b813dbef6ad5dd90/R/Kinhom.R

PPM class Github 上的对象 Spatstat 页面 https://github.com/spatstat/spatstat/blob/master/R/ppmclass.R

这是我的 ppm 模型数据:

https://www.dropbox.com/sh/ayyozo1dnhbqmvg/AACRqzAu617u0Sq_fk8RqUiJa?dl=0

只是一个警告,它是一个相当大的 ppm 对象(大约 40MB)

这是代码

library(spatstat)
load(file="SamplePPM.RData")
summary(ppm16.reduced2.offset.densavg) # info on the ppm object
Kres(ppm16.reduced2.offset.densavg)
# I suspect the problem value is somewhere in here
str(ppm16.reduced2.offset.densavg$internal$glmfit)

完整的错误信息如下:

Error in Kwtsum(dIJ[okI], bI[okI], wcIJ[okI], b[Z & USED], rep.int(1, : Weights in K-function were infinite or NA In addition: Warning message: Some infinite, NA or NaN increments were removed

和回溯命令:

4: stop("Weights in K-function were infinite or NA") 3: Kwtsum(dIJ[okI], bI[okI], wcIJ[okI], b[Z & USED], rep.int(1, npts.used), breaks) 2: Kcom(object, ...) 1: Kres(ppm16.reduced2.offset.densavg)

提前致谢!


我无法打开下载的文件SamplePPM.RData。你试过了吗运行 traceback() 看看错误是从哪里来的?还有实际错误 消息会很有用。适合模型的命令和数据将 也很有帮助。我 认为 我已经用 内置数据示例(见下文),如果是这样,那么你就是 没错,它是由协变量中的 NA 值引起的。你没有办法 修复缺失的协变量值?

library(spatstat)

X <- bei[square(50)]
Z <- bei.extra$elev[square(50)]
Z[square(c(25,50))] <- NA
plot(Z)
plot(X, add = TRUE)

fit <- ppm(X~Z)
#> Warning: Values of the covariate 'Z' were NA or undefined at 19% (202 out
#> of 1056) of the quadrature points. Occurred while executing: ppm.ppp(Q = X,
#> trend = ~Z, data = NULL, interaction = NULL)
Kres(fit)
#> Warning: Some infinite, NA or NaN increments were removed
#> Error in Kwtsum(dIJ[okI], bI[okI], wcIJ[okI], b[Z & USED], rep.int(1, : Weights in K-function were infinite or NA

感谢您提醒我们注意这个问题。 我将调整内部代码,使其发出警告而不是致命错误。