对大型数据集使用 studpermu.test 时如何修复错误

How to fix error when using studpermu.test with large dataset

我在 ppp 对象的大型超帧上使用 studpermu.test,它 returns 出错了。

我在一个包含 250 个 ppp 对象的大型超帧上使用 studpermu.test,每个对象有数千个点(~ 2000-5000),以及一个具有 5 个级别的分组因子,每个组的大小均等为 50。函数 运行s 在较小的点模式子集上成功,但是当我尝试 运行 整个超帧上的函数时 returns 出错。

这是一个较小的可重现示例,它给出了相同的错误。

X <- runifpoint(20, nsim = 250)
h <- hyperframe(ppp = X, group = rep(1:5, each=50))
studpermu.test(h, ppp ~ group)

Error in if (npossible < max(100, nperm)) warning("Don't expect exact results - group sizes are too small") : missing value where TRUE/FALSE needed 
In addition: Warning message: In factorial(sum(m)) : value out of range in 'gammafn'

这是当前 CRAN 版本的 spatstat 中的错误。这是一个可重现的小例子(如果你在你的问题中提供它会很棒):

library(spatstat)
#> Loading required package: spatstat.data
#> Loading required package: nlme
#> Loading required package: rpart
#> 
#> spatstat 1.61-0       (nickname: 'Puppy zoomies') 
#> For an introduction to spatstat, type 'beginner'
X <- runifpoint(20, nsim = 250)
h <- hyperframe(ppp = X, group = rep(1:5, each=50))
studpermu.test(h, ppp ~ group)
#> Error in if (npossible < max(100, nperm)) warning("Don't expect exact results - group sizes are too small"): missing value where TRUE/FALSE needed

spatstat 的开发版本现已修复此问题。现在您可以从 GitHub 安装开发版本,这应该可以解决问题:

library(remotes)
install_github("spatstat/spatstat")

我得到这个版本(没有设置种子所以结果可能会有所不同,但不会出现错误):

library(spatstat)
#> Loading required package: spatstat.data
#> Loading required package: nlme
#> Loading required package: rpart
#> 
#> spatstat 1.61-0.021       (nickname: 'New improved formula') 
#> For an introduction to spatstat, type 'beginner'
X <- runifpoint(20, nsim = 250)
h <- hyperframe(ppp = X, group = rep(1:5, each=50))
studpermu.test(h, ppp ~ group)
#> 
#>  Studentized permutation test for grouped point patterns
#>  ppp ~ group
#>  5 groups: 1, 2, 3, 4, 5
#>  summary function: Kest, evaluated on r in [0, 0.25]
#>  test statistic: T, 999 random permutations
#> 
#> data:  h
#> T = 3.6133, p-value = 0.125
#> alternative hypothesis: not the same K-function