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))

Exponentieel gewogen voortschrijdend gemiddelde in R

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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert