9. Скользящее среднее#
Временные ряды иногда сглаживают с помощью скользящего среднего. Этот процесс можно рассматривать как одномерную свёртку. Как выглядит ядро такой свёртки? Какой физический смысл стоит за размером такой свёртки и дополнением нулями? Опишите как она работает.
Решение
Разберем скользящее среднее на примере. Пусть у нас есть временной ряд, состоящий из 6 значений: \((x_1, x_2, x_3, x_4, x_5, x_6)\).
Мы хотим сгладить наши данные окном размера \(k\), то есть применяем одномерную свертку: \((\frac{1}{k}, \frac{1}{k}, \ldots, \frac{1}{k})\). Возьмём \(k = 3\), тогда ядро свёртки примет вид \((\frac{1}{3}, \frac{1}{3}, \frac{1}{3}).\) Будем считать якорем свёртки центральный элемент.
Применим свёртку к нашему ряду без дополнения нулями, получим
Дополнение нулями может помочь нам сохранить концы нашего ряда
Пробуем применить свёртку
В общем случае функция для скользящего среднего, записанная в терминах \(1D\) свёртки, будет выглядеть как
def moving_average(x, k):
return np.convolve(x, np.ones(k), 'valid') / k