Нахождение смещения между двумя наборами данных, содержащих выбросы - PullRequest
1 голос
/ 10 января 2020

Скажем, у меня есть следующие списки точек, отсортированные по временным меткам:

A = [10, 10, 10, 20, 15, 15, 5, 25]
B = [5, 5, 15, 10, 10, 0, 0, 20]

Я пытаюсь сопоставить элементы между двумя массивами, предполагая, что есть некоторое неизвестное смещение, а также некоторые несоответствия , Если бы я просто взял разницу этих массивов, я бы получил:

C = A - B = [5, 5, -5, 10, 5, 15, 5, 5]

, которая не показывает большую часть паттерна. Однако, если я пойму, что пропущены A[2] и B[6], у меня будет:

A = [10, 10, 20, 15, 15, 5, 25]
B = [5, 5, 15, 10, 10, 0, 20]
C = [5, 5, 5, 5, 5, 5, 5]

Есть идеи, как найти это смещение (в данном случае, 5)? Это не обязательно медиана, и я не хочу, чтобы это был просто режим, потому что решение должно распространяться на случай, когда смещение находится в небольшом диапазоне (например, между 4,5 и 5,5). Я думал, что RANSA C (с коэффициентом a = 1) может быть полезным, но я не уверен. Спасибо

1 Ответ

0 голосов
/ 10 января 2020

Я пытался использовать «устойчивую» регрессию, где я подгонял прямую линию к данным, используя подходящую цель наименьшей суммы абсолютного значения ошибки, а не стандартной суммы квадратов ошибок. С вашими значениями A и B и уравнением прямой линии «B = a + (b * A)» это дает подгонянные значения для a и b:

a = -4.9999999999999991E+00
b =  1.0000000000000000E+00

, что фактически является «B = A - 5 "

plot

...