Como calcular uma média móvel exponencial em r


Na análise de séries temporais, uma média móvel é simplesmente o valor médio de vários períodos anteriores.

Uma média móvel exponencial é um tipo de média móvel que dá mais peso às observações recentes, o que significa que é capaz de capturar tendências recentes mais rapidamente.

Este tutorial explica como calcular uma média móvel exponencial em R.

Exemplo: média móvel exponencial em R

Suponha que temos o seguinte quadro de dados em R:

 #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

Podemos usar a função movavg() do pacote pracma para calcular a média móvel ponderada exponencialmente para vários períodos anteriores.

Esta função usa a seguinte sintaxe:

movavg(x, n, tipo=c(“s”, “t”, “w”, “m”, “e”, “r”))

Ouro:

  • x: série temporal na forma de um vetor digital
  • n: Número de períodos anteriores a serem usados para a média
  • type: Tipo de média móvel a ser calculada. Usaremos “e” para média móvel ponderada exponencial.

Por exemplo, veja como calcular a média móvel exponencialmente ponderada usando os quatro períodos anteriores:

 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

Também podemos usar a biblioteca de visualização ggplot2 para visualizar as vendas em relação à média móvel ponderada exponencialmente de 4 dias:

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

Média móvel ponderada exponencialmente em R

A linha vermelha mostra as vendas durante cada período e a linha azul mostra a média móvel ponderada exponencialmente.

Recursos adicionais

Como plotar múltiplas colunas em R
Como calcular a média das colunas em R
Como calcular a média por grupo em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *