Як обчислити ковзне середнє в 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *