Распараллеливание и обработка ppm () в spatstat? - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь согласовать точечный шаблон с ppm() в spatstat, версия 1.60-1, используя комбинацию ковариат первого порядка (в качестве объектов im) и взаимодействия второго порядка термин, в данном случае модель Area-Interaction.

Для моих данных, включающих: ~ 300 точек, 3 ковариатических им.объекта по ~ 110 МБ каждый и член взаимодействия области на r = 15000 единицах карты (метрах), время обработки доказывает быть непомерно длинным - более 72 часов на данный момент.

Использование некоторых данных, включенных в spatstat:

require(spatstat)
res <- vector()

for (i in seq(1, 9, 0.5)) {
    start.time <- Sys.time()
    ppm(swedishpines, ~1, AreaInter(r=i))
    end.time <- Sys.time()
    time.taken <- end.time - start.time
    res[i] <- time.taken
}

plot(res)

Выход:

Output Graph

видно, что время обработки увеличивается примерно линейно. Я полагаю, что размер точечного рисунка, окна, включение ковариат и, по-видимому, самое главное, значение r, также сильно влияют на это.

Моя причина верить в это заключается в том, что ранее я запускал ppm() с более крупным точечным паттерном, похожими ковариатами, но с гораздо меньшим значением r (~ 7000 вместо ~ 15000)

По-видимому, сравнительно просто распараллелить функцию envelope() и объединить результаты с соответствующей функцией, но я ищу совет о том, как распараллелить ppm() и можно ли комбинировать модели с выходными данными? Кажется, что нет прямой реализации этой задачи для объектов ppm.

В качестве альтернативы, если кто-то более знаком с реализацией модели Area Interaction в spatstat, я был бы признателен, если бы я просто гонялся за автомобилями с таким большим значением r, и если бы я лучше попробовать другой подход.

1 Ответ

0 голосов
/ 09 июля 2019

В приведенном выше коде вы выбираете значение параметра радиуса диска r, совершая повторные вызовы ppm в цикле.Это расточительно, потому что информация пересчитывается каждый раз.Было бы намного быстрее использовать функцию spatstat profilepl, которая предназначена для этой цели.Он использует эффективные сочетания клавиш, в том числе специальные приемы для модели взаимодействия области.

Модель взаимодействия области не является взаимодействием второго порядка;это бесконечный порядок.Поэтому его довольно сложно вычислить.

Другая стратегия выбора r заключается во временной замене взаимодействия области взаимодействием Penttinen, взаимодействием второго порядка, которое близко к взаимодействию области.Будучи взаимодействием второго порядка, модель Пенттинена может быть адаптирована очень быстро, поэтому вы можете быстро определить правильное значение для r.

Разработка более быстрых алгоритмов для AreaInter находится в нашем списке действий.Но никто не финансирует нас за это ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...