Следуя вашему предыдущему вопросу здесь: Оптимизация вычисления расстояния в R
Скорость относится к уровню вычислений, необходимых для создания возвращенного объекта, не обязательно разнице между вычислением расстояний (я не уверен, какое вычисление большого круга функция distm()
использует по умолчанию). Действительно, документация geosphere::
здесь: https://cran.r-project.org/web/packages/geosphere/geosphere.pdf предполагает, что расчет distVincentyEllipsoid()
является «очень точным», но «вычислительно более интенсивным», чем другие методы большого круга, хотя это может заставить вас подозревать более медленное вычисление, это это из-за того, как я структурировал код в моем ответе, чтобы возвращать вектор расстояний между каждой строкой (а не матрицу расстояний между каждой точкой).
И наоборот, расчет distm()
в исходном коде возвращает матрицу из нескольких векторов между каждой точкой. Для вашей проблемы в этом нет необходимости, если данные упорядочены, поэтому я так и сделал. Кроме того, использование иерархической кластеризации для кластеризации точек на основе этих расстояний в 3 (определенное вами число) кластеров также не обязательно, поскольку мы можем использовать процентиль расстояний между значениями каждой точки, чтобы сделать то же самое. Опять же, выигрыш в скорости связан с вычислением кластеров по одному вектору, а не по матрице.
Обратите внимание: я аналитик данных с опытом работы в области бухгалтерского учета / финансов и ни в коем случае не специалист по ГИС. При этом мое использование функции distVincentyEllipsoid()
исходит из моего общего понимания, что она возвращает довольно точную оценку расстояний большого круга в виде вектора (в отличие от матрицы). Более того, использовав это в прошлом для оптимизации логистических операций для целей ценообразования, я могу засвидетельствовать тот факт, что эти расчеты были протестированы на рынке и признаны надежными.