Нахождение средней точки GPS


11

Мне нужно написать программу, чтобы найти среднюю точку GPS из совокупности точек.

На практике происходит следующее:

  • Каждый месяц человек записывает точку GPS одного и того же статического актива.
  • Из-за особенностей GPS эти точки немного отличаются каждый месяц.
  • Иногда человек делает ошибку, записывая неправильную сборку в совершенно другом месте.
  • Каждая точка GPS имеет определенный вес ( HDOP ), который указывает, насколько точны текущие данные GPS. Точки GPS с лучшими значениями HDOP предпочтительнее, чем более низкие.

Как мне определить следующее:

  • Работа с данными с 2 значениями против одного значения, как возраст. (Найти средний возраст в популяции людей)
  • Определить выбросы. В приведенном ниже примере это будут [-28.252, 25.018] и [-28.632, 25.219]
  • После исключения выбросов найдите среднюю точку GPS, в которой она может быть [-28,389, 25,245].
  • Было бы бонусом, если бы можно было работать с «весом», предоставленным значением HDOP для каждого очка.

альтернативный текст


1
Этот ответ достаточно похож, чтобы помочь вам с усреднением баллов, stats.stackexchange.com/questions/2493/… , в эту структуру просто включить веса. Я думаю, что вы сможете использовать некоторые простые эвристические методы для выявления выбросов, но это не мешает вам использовать более эмпирический подход, как предложил Стефан.
Энди Ш

Ответы:


8

Одной из проблем с многомерными данными является выбор, а затем интерпретация подходящей метрики для расчета расстояний, следовательно, умных, но несколько трудно объяснимых понятий, таких как расстояние Махаланобиса. Но в этом случае, безусловно, выбор очевиден - евклидово расстояние . Я бы предложил простой эвристический алгоритм, например:

  1. Рассчитать (невзвешенный) центр тяжести точек данных, т. Е. (Невзвешенный) средний из двух координат
  2. Рассчитайте евклидово расстояние всех показаний от центроида
  3. Исключите любые показания, которые находятся на расстоянии, превышающем определенное расстояние (определяется на основе вашего опыта и знаний о технологии, или если вам не удалось провести перекрестную проверку методом проб и ошибок - 100 м, 1 км, 10 км ??)
  4. Вычислите средневзвешенное значение обеих координат оставшихся точек, взвешивая по обратной величине показателя HDOP (или некоторой монотонной функции этого - я быстро взглянул на страницу википедии, связанную в вопросе, и подумал, может быть, вам это не нужно функция, но мне нужно изучить ее дальше, чтобы быть уверенным)

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


3

Роб Хиндман недавно задал вопрос об обнаружении выбросов в многомерных данных . Ответы могут предоставить несколько возможных подходов (и в противном случае вы можете поставить вопрос о поиске двумерных выбросов в отдельный вопрос).

И вы можете усреднить оставшийся компонент данных GPS по компонентам - сложите все первые компоненты и разделите их на количество точек, которые дадут вам первый компонент среднего значения. То же самое со вторыми компонентами.

Это усреднение может быть взвешено с помощью HDOP. Суммируйте произведения первого компонента, умноженные на соответствующий балл HDOP, и разделите сумму на сумму баллов HDOP. То же самое со вторыми компонентами.

Я позволю себе удалить тэг "normal-distribution" ...


Спасибо @Stephan Kolassa, это уже поможет найти решение.
Филипп Фурье

2

Вызовите HDOP независимой переменной. Используйте это для взвешивания позже. Итак, у вас есть наборы координат - назовите это (x1, y1); (x2, y2) и т. д. Сначала игнорируйте выбросы. Вычислите средневзвешенные значения координат x как [(x1 * h1) + (x2 * h2) + .... + (xn * hn)] / [сумма (h1, h2, ..., hn)] где h1, h2, ... - значение HDOP. Сделайте то же самое для координат y. Это даст довольно точное среднее значение для каждой координаты.

Работа с выбросами может быть немного сложнее. Как узнать, являются ли они выбросами или нет? Строго необходимо определить статистическое соответствие наблюдений и в пределах доверительного интервала определить, являются ли они подлинными или нет. Глядя на вопрос, пришло в голову распределение ядов. Но это, вероятно, много работы, и я уверен, что вы не хотите вдаваться в это. Может быть, использовать приближение? Допустим, вы предполагаете, что среднее значение координат является хорошим средством для использования. Затем определите значение для стандартного отклонения. Я думаю, что стандартное устройство или распределение ядов 1 / (среднее). Затем аппроксимируйте, используя нормальное распределение и 95% доверительный интервал. Скажем, если наблюдение находится за пределами интервала (среднее значение - * 1,645 * стандартное отклонение; среднее значение + 1,645 * стандартное отклонение), тогда оно является выбросом? Дайте этому попробовать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.