Jak obliczyć średnią ruchomą według grupy w r
W analizie szeregów czasowych średnia ruchoma reprezentuje średnią wartość z kilku poprzednich okresów.
Aby obliczyć grupową średnią ruchomą w R, możesz użyć następującej podstawowej składni:
library (dplyr) library (zoo) #calculate moving average by group df %>% group_by(variable1) mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))
W tym konkretnym przykładzie obliczana jest 3-okresowa średnia ruchoma zmiennej2 , pogrupowana według zmiennej1 .
W tym kodzie zastosowano funkcję group_by() z pakietu dplyr i funkcję rollmean() z pakietu zoo .
Poniższy przykład pokazuje, jak w praktyce wykorzystać tę funkcję.
Przykład: Oblicz średnią ruchomą według grupy w R
Załóżmy, że mamy następującą ramkę danych w R, która pokazuje sprzedaż produktu przez kolejne dni w dwóch różnych sklepach:
#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
Możemy użyć następującej składni, aby utworzyć nową kolumnę o nazwiemoving_avg3 , która wyświetla 3-dniową średnią ruchomą wartość sprzedaży dla każdego sklepu:
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
Uwaga : Wartość k w funkcji rollmean() kontroluje liczbę poprzednich okresów używanych do obliczenia średniej ruchomej.
Kolumnamoving_avg3 wyświetla średnią ruchomą wartość sprzedaży z poprzednich 3 okresów.
Na przykład średnią kroczącą sprzedaży w ciągu pierwszych 3 dni dla sklepu A oblicza się w następujący sposób:
3-dniowa średnia krocząca = (4 + 4 + 3) / 3 = 3,67
Średnią ruchomą sprzedaży w ciągu najbliższych 3 dni dla sklepu A oblicza się w następujący sposób:
3-dniowa średnia krocząca = (4 + 3 + 5) / 3 = 4
I tak dalej.
Należy pamiętać, że pierwsze dwie wartości średniej ruchomej dla każdego sklepu to NA , ponieważ nie było wystarczającej liczby poprzednich okresów do wykorzystania dla średniej ruchomej.
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