Функция poly2nb занимает слишком много времени для вычисления - PullRequest
0 голосов
/ 10 мая 2019

У меня есть фрейм данных, в котором есть информация о преступлениях (переменная x), а также широта и долгота, где произошло это преступление.У меня есть файл формы с районами из города Сан-Паулу.Это:делать:

sf_df = st_as_sf(df, coords = c("longitude", "latitude"), crs = 4326)
shape_df<-st_join(sp.dist.sf, sf_df, join=st_contains)

Моя конечная цель - реализовать локальную статистику moran i, и я пытаюсь сделать это с помощью:

   sp_viz <- poly2nb(shape_df, row.names = shape_df$NOME_DIST)
    xy <- st_coordinates(shape_df)
    ww <- nb2listw(sp_viz, style ='W', zero.policy = TRUE)
    shape_df[is.na(shape_df)] <- 0
    locMoran <- localmoran(shape_df$n_homdol, ww)
sids.shade <- auto.shading(c(locMoran[,1],-locMoran[,1]),
                           cols=brewer.pal(5,"PRGn"))
    choropleth(shape_df, locMoran[,1], shading=sids.shade)
    choro.legend(-46.5, -20, sids.shade,fmt="%6.2f")
    title("Criminalidade (Local Moran's I)",cex.main=2)

Но когда я запускаю код, онНа это уходит несколько часов:

 sp_viz <- poly2nb(shape_df, row.names = shape_df$NOME_DIST)

У меня 15 000 наблюдений за 93 районами.Я попытался запустить приведенный выше код только с 100 наблюдениями, и это было быстро, и все прошло хорошо.Но с 15 000 наблюдений я не увидел результат, потому что вычисление продолжается вечно.Что может происходить?Я делаю что-то не так?Есть ли лучший способ сделать этот Местный Моран, который я тестирую?

1 Ответ

0 голосов
/ 10 мая 2019

Поскольку я не могу просто комментировать, вот некоторые вопросы, которые можно задать: - как долго вы подразумеваете под постом?некоторые из моих скриптов запускаются за секунды, и я называю это медленно.- все ваши наблюдения одинаково структурированы?возможно, функция poly2nb() бесконечно зацикливается на элементе, который имеет необычную структуру.Вы можете использовать функцию unique(), чтобы убедиться в этом.- Вы пытались разрезать свой набор данных на куски и запускать каждый кусочек отдельно?это поможет увидеть 1 / есть ли какая-то из ваших частей, которые нужно исправить, и 2 / загружает ли R все данные одновременно, перегружая память вашего компьютера.Осторожно, это случается очень часто с огромными наборами данных в R (и под огромными, я имею в виду таблицы данных> 50 мес.) *

Рад, что пытался помочь вам, не стесняйтесь задавать вопросы о моем ответе!

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