Как рассчитать экспоненциальное скользящее среднее в r


В анализе временных рядов скользящее среднее — это просто среднее значение ряда предыдущих периодов.

Экспоненциальное скользящее среднее — это тип скользящего среднего, который придает больший вес недавним наблюдениям, а это означает, что оно способно быстрее улавливать последние тенденции.

В этом уроке объясняется, как рассчитать экспоненциальное скользящее среднее в R.

Пример: экспоненциальное скользящее среднее в R

Предположим, у нас есть следующий кадр данных в R:

 #create data frame
df <- data.frame(period=1:10,
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   period sales
1 1 25
2 2 20
3 3 14
4 4 16
5 5 27
6 6 20
7 7 12
8 8 15
9 9 14
10 10 19

Мы можем использовать функцию movavg() из пакета pracma для расчета экспоненциально взвешенного скользящего среднего за ряд предыдущих периодов.

Эта функция использует следующий синтаксис:

movavg(x, n, type=c(«s», «t», «w», «m», «e», «r»))

Золото:

  • x: временной ряд в виде цифрового вектора
  • n: количество предыдущих периодов для использования в качестве среднего значения.
  • type: Тип скользящего среднего для расчета. Мы будем использовать «e» для экспоненциального взвешенного скользящего среднего.

Например, вот как рассчитать экспоненциально взвешенную скользящую среднюю, используя предыдущие четыре периода:

 library (pracma)

#create new column to hold 4-day exponentially weighted moving average
df$EWM_4day <- movavg (df$sales, n=4, type=' e ')

#view DataFrame 
df

        period sales 4dayEWM
0 1 25 25.000000
1 2 20 23.000000
2 3 14 19.400000
3 4 16 18.040000
4 5 27 21.624000
5 6 20 20.974400
6 7 12 17.384640
7 8 15 16.430784
8 9 14 15.458470
9 10 19 16.875082

Мы также можем использовать библиотеку визуализации ggplot2 для визуализации продаж относительно 4-дневного экспоненциально взвешенного скользящего среднего:

 library (ggplot2)
library (reshape2)

#melt data into format for easy plotting
df <- melt (df, id.vars = ' period ', variable.name = ' series ')

#plot sales vs. 4-day exponentially weighted moving average
ggplot(df, aes (period, value)) +
  geom_line( aes (color=series))

Экспоненциально взвешенное скользящее среднее в R

Красная линия показывает продажи за каждый период, а синяя линия показывает экспоненциально взвешенное скользящее среднее.

Дополнительные ресурсы

Как построить несколько столбцов в R
Как усреднить по столбцам в R
Как рассчитать среднее значение на группу в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *