Jak obliczyć średnią ruchomą w r (z przykładem)


W analizie szeregów czasowych średnia ruchoma reprezentuje średnią wartość z kilku poprzednich okresów.

Najłatwiejszym sposobem obliczenia średniej kroczącej w R jest użycie funkcji rollmean() z pakietu zoo :

 library (dplyr)
library (zoo)

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

W tym konkretnym przykładzie obliczana jest 3- dniowa średnia ruchoma dla kolumny oznaczonej Wartości .

Poniższy przykład pokazuje, jak w praktyce wykorzystać tę funkcję.

Przykład: oblicz średnią ruchomą w R

Załóżmy, że mamy następującą ramkę danych w R, która pokazuje sprzedaż produktu przez 10 kolejnych dni:

 #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

Możemy użyć następującej składni, aby utworzyć nową kolumnę o nazwie avg_sales3 , która wyświetla średnią ruchomą wartość sprzedaży z ostatnich 3 dni w każdym wierszu ramki danych:

 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

Uwaga : Wartość k w funkcji rollmean() kontroluje liczbę poprzednich okresów używanych do obliczenia średniej ruchomej.

Kolumna avg_sales3 wyświetla średnią ruchomą wartość sprzedaży z poprzednich 3 okresów.

Na przykład pierwszą wartość 19,66667 oblicza się w następujący sposób:

3-dniowa średnia krocząca = (25 + 20 + 14) / 3 = 19,66667

Można także obliczyć wiele średnich kroczących jednocześnie, korzystając z wielu funkcji rollmean() w ramach funkcji mutate() .

Na przykład poniższy kod pokazuje, jak obliczyć 3-dniową i 4-dniową średnią ruchomą sprzedaży:

 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

Kolumny avg_sales3 i avg_sales4 wyświetlają odpowiednio 3-dniową i 4-dniową średnią ruchomą sprzedaży.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:

Jak wykreślić wiele kolumn w R
Jak uśredniać kolumny w R
Jak obliczyć średnią na grupę w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *