Выбираем eps и minPts из DBSCAN с пространственными данными (lon, широта) в R?

#r #spatial #dbscan

#r #пространственный #dbscan

Вопрос:

Я знаю, что в предыдущих сообщениях рассматривалась эта тема, но я не смог найти ничего специально для данных о пространственных точках. У меня есть набор данных со всеми остановками и обысками, которые имели место в Нью-Йорке в 2013 году. Я пытаюсь определить «горячие точки», где происходили остановки. Данные находятся в этой форме:

 stops <- data.frame(lon=c(-74.00478, -74.01046, -74.00521),
                    lat=c(40.71641, 40.71153, 40.72063),
                    precinct = c(1,1,1))
  

Существуют и другие характеристики (всего = 89), такие как время остановки, раса подозреваемого, причина остановки и т.д. Также имеется 173 671 общее количество наблюдений.

Мой вопрос заключается в том, чтобы использовать метод knn для поиска eps, должен ли я преобразовать широту и ширину или я могу использовать их как есть?

У меня есть еще один вопрос: как выбрать minPts? Я смотрел другие учебные пособия с данными о преступлениях для python и R с интеграцией Tableau, и кажется, что они выбирают его на основе некоторого количества инцидентов. Я использовал этот код, чтобы получить minPts, который относится к среднему числу остановок, происходящих за день, но я не уверен, что это надежно.

 stops2013clean %>%
group_by(precinct, lubridate::hour(stops2013clean$time)) %>%
summarise(n_stops=n()) %>%
summarise(mean(n_stops)) %>%
summarise(mean(`mean(n_stops)`))
  

Спасибо за любую помощь и указания.

Ответ №1:

Не существует алгоритма для их выбора. Это зависит от того, что вы хотите сделать.

Для широты и долготы вы должны использовать Haversine distance, чтобы получить метры, ярды, футы, как вам нравится (просто убедитесь, что вы знаете, какую единицу вы получаете).

Затем вам нужно решить, что такое «горячая точка». Сколько преступлений в каком радиусе? 10 преступлений в радиусе 100 метров? Тогда у вас есть свои параметры.