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


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

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

 library (dplyr)
library (zoo)

#calculate moving average by group
df %>%
  group_by(variable1)
  mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))

В этом конкретном примере вычисляется скользящее среднее значение переменной2 за 3 периода, сгруппированное по переменной1 .

Этот код использует функцию group_by() из пакета dplyr и функциюrollmean() из пакета Zoo .

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

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

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

 #create data frame
df <- data. frame (store=rep(c(' A ', ' B '), each= 7 ),
                 sales=c(4, 4, 3, 5, 6, 5, 7, 4, 8, 7, 2, 5, 4, 6))

#view data frame
df

   blind sales
1 to 4
2 to 4
3 to 3
4 to 5
5 to 6
6 to 5
7 to 7
8 B 4
9 B 8
10 B 7
11 B 2
12 B 5
13 B 4
14 B 6

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

 library (dplyr)
library (zoo)

#calculate 3-day moving average of sales, grouped by store
df %>%
  group_by(store) %>%
  mutate(moving_avg3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

# A tibble: 14 x 3
# Groups: store[2]
   store sales moving_avg3
           
 1 A 4 NA   
 2 A 4 NA   
 3 to 3 3.67
 4 to 5 4   
 5 to 6 4.67
 6 to 5 5.33
 7 to 7 6   
 8 B 4 NA   
 9 B 8 NA   
10 B 7 6.33
11 B 2 5.67
12 B 5 4.67
13 B 4 3.67
14 B 6 5

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

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

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

3-дневная скользящая средняя = (4 + 4 + 3) / 3 = 3,67.

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

3-дневная скользящая средняя = (4 + 3 + 5) / 3 = 4

И так далее.

Обратите внимание, что первые два значения скользящего среднего для каждого магазина имеют значение NA , поскольку предыдущих периодов было недостаточно для использования в качестве скользящего среднего.

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

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

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

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

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