Hoe een exponentieel voortschrijdend gemiddelde in r te berekenen
Bij tijdreeksanalyse is een voortschrijdend gemiddelde eenvoudigweg de gemiddelde waarde van een aantal voorgaande perioden.
Een exponentieel voortschrijdend gemiddelde is een soort voortschrijdend gemiddelde dat meer gewicht toekent aan recente waarnemingen, wat betekent dat het recente trends sneller kan vastleggen.
In deze tutorial wordt uitgelegd hoe u een exponentieel voortschrijdend gemiddelde in R kunt berekenen.
Voorbeeld: exponentieel voortschrijdend gemiddelde in R
Stel dat we het volgende dataframe in R hebben:
#create data frame df <- data.frame(period=1:10, sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19)) #view data frame df period 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
We kunnen de functie movavg() uit het pracma- pakket gebruiken om het exponentieel gewogen voortschrijdend gemiddelde voor een aantal voorgaande perioden te berekenen.
Deze functie gebruikt de volgende syntaxis:
movavg(x, n, type=c(“s”, “t”, “w”, “m”, “e”, “r”))
Goud:
- x: tijdreeksen in de vorm van een digitale vector
- n: Aantal voorgaande perioden dat voor het gemiddelde moet worden gebruikt
- type: Type voortschrijdend gemiddelde dat moet worden berekend. We zullen “e” gebruiken voor exponentieel gewogen voortschrijdend gemiddelde.
U kunt bijvoorbeeld als volgt het exponentieel gewogen voortschrijdend gemiddelde berekenen op basis van de voorgaande vier perioden:
library (pracma) #create new column to hold 4-day exponentially weighted moving average df$EWM_4day <- movavg (df$sales, n=4, type=' e ') #view DataFrame df period sales 4dayEWM 0 1 25 25.000000 1 2 20 23.000000 2 3 14 19.400000 3 4 16 18.040000 4 5 27 21.624000 5 6 20 20.974400 6 7 12 17.384640 7 8 15 16.430784 8 9 14 15.458470 9 10 19 16.875082
We kunnen ook de ggplot2-visualisatiebibliotheek gebruiken om de verkopen te visualiseren ten opzichte van het 4-daagse exponentieel gewogen voortschrijdend gemiddelde:
library (ggplot2)
library (reshape2)
#melt data into format for easy plotting
df <- melt (df, id.vars = ' period ', variable.name = ' series ')
#plot sales vs. 4-day exponentially weighted moving average
ggplot(df, aes (period, value)) +
geom_line( aes (color=series))
De rode lijn toont de verkopen gedurende elke periode en de blauwe lijn toont het exponentieel gewogen voortschrijdend gemiddelde.
Aanvullende bronnen
Meerdere kolommen plotten in R
Hoe u het gemiddelde kunt nemen over kolommen in R
Hoe het gemiddelde per groep in R te berekenen