Hoe een voortschrijdend gemiddelde per groep in r te berekenen
Bij tijdreeksanalyse vertegenwoordigt een voortschrijdend gemiddelde de gemiddelde waarde van een aantal voorgaande perioden.
U kunt de volgende basissyntaxis gebruiken om een voortschrijdend groepsgemiddelde in R te berekenen:
library (dplyr) library (zoo) #calculate moving average by group df %>% group_by(variable1) mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))
In dit specifieke voorbeeld wordt een voortschrijdend gemiddelde over drie perioden van variabele2 berekend, gegroepeerd op variabele1 .
Deze code gebruikt de functie group_by() uit het dplyr- pakket en de functie rollmean() uit het zoo- pakket.
Het volgende voorbeeld laat zien hoe u deze functie in de praktijk kunt gebruiken.
Voorbeeld: Bereken voortschrijdend gemiddelde per groep in R
Stel dat we het volgende gegevensframe in R hebben dat de verkoop van een product gedurende opeenvolgende dagen in twee verschillende winkels weergeeft:
#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
We kunnen de volgende syntaxis gebruiken om een nieuwe kolom te maken met de naam Moving_avg3 , waarin de voortschrijdende gemiddelde verkoopwaarde over drie dagen voor elke winkel wordt weergegeven:
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
Opmerking : de waarde van k in de functie rollmean() bepaalt het aantal voorgaande perioden dat wordt gebruikt om het voortschrijdend gemiddelde te berekenen.
De kolom Moving_avg3 toont de voortschrijdende gemiddelde verkoopwaarde voor de afgelopen 3 perioden.
Het voortschrijdend gemiddelde van de verkopen over de eerste drie dagen voor winkel A wordt bijvoorbeeld als volgt berekend:
3-daags voortschrijdend gemiddelde = (4 + 4 + 3) / 3 = 3,67
Het voortschrijdend gemiddelde van de verkopen over de komende drie dagen voor winkel A wordt als volgt berekend:
3-daags voortschrijdend gemiddelde = (4 + 3 + 5) / 3 = 4
Enzovoort.
Houd er rekening mee dat de eerste twee waarden voor voortschrijdend gemiddelde voor elke winkel NA zijn, omdat er niet genoeg voorgaande perioden waren om voor het voortschrijdend gemiddelde te gebruiken.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Meerdere kolommen plotten in R
Hoe u het gemiddelde kunt nemen over kolommen in R
Hoe het gemiddelde per groep in R te berekenen