Как исправить ошибку при использовании studpermu.test с большим набором данных - PullRequest
0 голосов
/ 10 октября 2019

Я использую studpermu.test на большом гиперкадре объектов ppp, и он возвращает ошибку.

Я использую Studpermu.test на большом гиперкадре из 250 объектов на миллион, каждый с тысячами точек (~ 2000-5000), и сгруппированный фактор с 5 уровнями, с равными размерами группы 50. Функцияработает успешно на небольшом подмножестве точечных паттернов, но возвращает ошибку, когда я пытаюсь запустить функцию на всем гиперфрейме.

Вот меньший воспроизводимый пример, который дает ту же ошибку.

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'

1 Ответ

0 голосов
/ 10 октября 2019

Это ошибка в текущей версии spatstat для CRAN. Вот небольшой воспроизводимый пример (который был бы хорош, если бы вы указали свой вопрос):

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
...