Мне нужно написать программу, чтобы найти среднюю точку GPS из совокупности точек.
На практике происходит следующее:
- Каждый месяц человек записывает точку GPS одного и того же статического актива.
- Из-за особенностей GPS эти точки немного отличаются каждый месяц.
- Иногда человек делает ошибку, записывая неправильную сборку в совершенно другом месте.
- Каждая точка GPS имеет определенный вес ( HDOP ), который указывает, насколько точны текущие данные GPS. Точки GPS с лучшими значениями HDOP предпочтительнее, чем более низкие.
Как мне определить следующее:
- Работа с данными с 2 значениями против одного значения, как возраст. (Найти средний возраст в популяции людей)
- Определить выбросы. В приведенном ниже примере это будут [-28.252, 25.018] и [-28.632, 25.219]
- После исключения выбросов найдите среднюю точку GPS, в которой она может быть [-28,389, 25,245].
- Было бы бонусом, если бы можно было работать с «весом», предоставленным значением HDOP для каждого очка.
Ответы:
Одной из проблем с многомерными данными является выбор, а затем интерпретация подходящей метрики для расчета расстояний, следовательно, умных, но несколько трудно объяснимых понятий, таких как расстояние Махаланобиса. Но в этом случае, безусловно, выбор очевиден - евклидово расстояние . Я бы предложил простой эвристический алгоритм, например:
проб и ошибок- 100 м, 1 км, 10 км ??)Ясно, что есть несколько способов сделать это более сложным, например, уменьшить выбросы или использовать М-оценки, а не просто исключить их, но я не уверен, действительно ли такая сложность здесь необходима.
источник
Роб Хиндман недавно задал вопрос об обнаружении выбросов в многомерных данных . Ответы могут предоставить несколько возможных подходов (и в противном случае вы можете поставить вопрос о поиске двумерных выбросов в отдельный вопрос).
И вы можете усреднить оставшийся компонент данных GPS по компонентам - сложите все первые компоненты и разделите их на количество точек, которые дадут вам первый компонент среднего значения. То же самое со вторыми компонентами.
Это усреднение может быть взвешено с помощью HDOP. Суммируйте произведения первого компонента, умноженные на соответствующий балл HDOP, и разделите сумму на сумму баллов HDOP. То же самое со вторыми компонентами.
Я позволю себе удалить тэг "normal-distribution" ...
источник
Вызовите 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 * стандартное отклонение), тогда оно является выбросом? Дайте этому попробовать.
источник