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


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

Самый простой способ вычислить скользящее среднее в R — использовать функциюrollmean() из пакета Zoo :

 library (dplyr)
library (zoo)

#calculate 3-day rolling average
df %>%
  mutate(rolling_avg = rollmean(values, k= 3 , fill=NA, align=' right '))

В этом конкретном примере вычисляется 3- дневное скользящее среднее для столбца с надписью «Значения» .

В следующем примере показано, как использовать эту функцию на практике.

Пример: вычислить скользящее среднее в R

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

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   day 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

Мы можем использовать следующий синтаксис для создания нового столбца с именем avg_sales3 , который отображает скользящее среднее значение продаж за предыдущие 3 дня в каждой строке фрейма данных:

 library (dplyr)
library (zoo)

#calculate 3-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

   day sales avg_sales3
1 1 25 NA
2 2 20 NA
3 3 14 19.66667
4 4 16 16.66667
5 5 27 19.00000
6 6 20 21.00000
7 7 12 19.66667
8 8 15 15.66667
9 9 14 13.66667
10 10 19 16.00000

Примечание . Значение k в функцииrollmean() контролирует количество предыдущих периодов, используемых для расчета скользящего среднего.

Столбец avg_sales3 отображает скользящее среднее значение продаж за предыдущие 3 периода.

Например, первое значение 19,66667 рассчитывается следующим образом:

3-дневная скользящая средняя = (25 + 20 + 14) / 3 = 19,66667.

Вы также можете вычислить несколько скользящих средних одновременно, используя несколько функцийrollmean() в функции mutate() .

Например, следующий код показывает, как рассчитать 3-дневное и 4-дневное скользящее среднее продаж:

 library (dplyr)
library (zoo)

#calculate 3-day and 4-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '),
         avg_sales4 = rollmean(sales, k= 4 , fill=NA, align=' right '))

   day sales avg_sales3 avg_sales4
1 1 25 NA NA
2 2 20 NA NA
3 3 14 19.66667 NA
4 4 16 16.66667 18.75
5 5 27 19.00000 19.25
6 6 20 21.00000 19.25
7 7 12 19.66667 18.75
8 8 15 15.66667 18.50
9 9 14 13.66667 15.25
10 10 19 16.00000 15.00

Столбцы avg_sales3 и avg_sales4 отображают скользящее среднее продаж за 3 и 4 дня соответственно.

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

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

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

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

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