由于 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
感谢您提醒我们注意这个问题。
我将调整内部代码,使其发出警告而不是致命错误。
我知道问题是该函数试图对非有限值求和,我想我可以通过从 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
感谢您提醒我们注意这个问题。 我将调整内部代码,使其发出警告而不是致命错误。