У меня есть непрерывное значение, для которого я хотел бы рассчитать экспоненциальную скользящую среднюю. Обычно я бы использовал для этого стандартную формулу:
- S n = Y + (1-) S n-1
где S n - это новое среднее значение, - это альфа, Y - это выборка, а S n-1 - это предыдущее среднее значение.
К сожалению, из-за различных проблем у меня нет согласованного времени выборки. Я могу знать, что могу выполнять выборку не более одного раза в миллисекунду, но из-за факторов, не зависящих от меня, я не могу брать выборку в течение нескольких миллисекунд за раз. Однако, вероятно, более распространенным случаем является то, что я просто сэмплирую немного раньше или позже: вместо дискретизации на 0, 1 и 2 мс. Я делаю выборку на 0, 0,9 и 2,1 мс. Я действительно ожидаю, что, независимо от задержек, моя частота дискретизации будет намного, намного выше предела Найквиста, и поэтому мне не нужно беспокоиться о наложении спектров.
Я считаю, что могу справиться с этим более или менее разумным способом, соответствующим образом изменяя альфа в зависимости от времени, прошедшего с момента последней выборки.
Часть моих рассуждений о том, что это будет работать, заключается в том, что EMA «линейно интерполирует» между предыдущей точкой данных и текущей. Если мы рассмотрим вычисление EMA следующего списка выборок с интервалами t: [0,1,2,3,4]. Мы должны получить тот же результат, если используем интервал 2t, где входные данные становятся [0,2,4], верно? Если бы EMA предположила, что в t 2 значение было 2 с момента t 0, это было бы то же самое, что и вычисление интервала t на [0,2, 2,4,4], чего не происходит. Или это вообще имеет смысл?
Может кто-нибудь сказать мне, как правильно изменить альфа? «Пожалуйста, покажите свою работу». То есть, покажите мне математику, которая доказывает, что ваш метод действительно работает правильно.