由于Kwtsum中的错误,Kres函数无法正确执行,“ K函数的权重是无限的或不适用”

时间:2018-10-13 00:59:35

标签: r spatstat

我知道问题在于函数正在尝试对非限定值求和,我认为可以通过从ppm对象中删除那些值来解决此问题,但是我很难找到所有特定的组件函数正在尝试使用。

我尝试查看Github(和R中)的源代码以向后追溯逻辑,这似乎对于Kinhom函数可能是个问题,但是我一直都无法遵循回到PPM对象,因为那里有很多重要的中介内部功能。

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

编辑:为明确起见,我知道glmdata(4430、4524)中有两个点具有未定义的协变量值,我怀疑它们是造成此问题的原因。我添加了str()命令以显示我怀疑问题值存储在哪里。

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

Github上的PPM类对象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)

这是完整的错误消息:

  

Kwtsum中的错误(dIJ [okI],bI [okI],wcIJ [okI],b [Z和USED],rep.int(1,   :K函数中的权重是无穷大或不适用另外:警告   消息:删除了一些无限的NA或NaN增量

和回溯命令:

  

4:停止(“ K函数的权重是无限的或不适用”)   3:Kwtsum(dIJ [okI],bI [okI],wcIJ [okI],b [Z&USED],rep.int(1,          npts.used),休息)   2:Kcom(对象,...)   1:Kres(ppm16.reduced2.offset.densavg)

提前谢谢!

2 个答案:

答案 0 :(得分:0)


我无法打开下载的文件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

答案 1 :(得分:0)

感谢您对这个问题的关注。 我将调整内部代码,以便发出警告而不是致命错误。