Como calcular uma média móvel em r (com exemplo)


Na análise de série temporal, uma média móvel representa o valor médio de vários períodos anteriores.

A maneira mais fácil de calcular uma média móvel em R é usar a função rollmean() do pacote zoo :

 library (dplyr)
library (zoo)

#calculate 3-day rolling average
df %>%
  mutate(rolling_avg = rollmean(values, k= 3 , fill=NA, align=' right '))

Este exemplo específico calcula uma média móvel de 3 dias para a coluna denominada Valores .

O exemplo a seguir mostra como usar esta função na prática.

Exemplo: calcule a média móvel em R

Suponha que temos o seguinte quadro de dados em R que mostra as vendas de um produto durante 10 dias consecutivos:

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   day 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 seguinte sintaxe para criar uma nova coluna chamada avg_sales3 que exibe o valor médio móvel das vendas dos 3 dias anteriores em cada linha do quadro de dados:

 library (dplyr)
library (zoo)

#calculate 3-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

   day sales avg_sales3
1 1 25 NA
2 2 20 NA
3 3 14 19.66667
4 4 16 16.66667
5 5 27 19.00000
6 6 20 21.00000
7 7 12 19.66667
8 8 15 15.66667
9 9 14 13.66667
10 10 19 16.00000

Nota : O valor de k na função rollmean() controla o número de períodos anteriores usados para calcular a média móvel.

A coluna avg_sales3 exibe o valor médio móvel das vendas dos 3 períodos anteriores.

Por exemplo, o primeiro valor de 19,66667 é calculado da seguinte forma:

Média móvel de 3 dias = (25 + 20 + 14) / 3 = 19,66667

Você também pode calcular várias médias móveis de uma vez usando várias funções rollmean() dentro da função mutate() .

Por exemplo, o código a seguir mostra como calcular a média móvel de vendas de 3 e 4 dias:

 library (dplyr)
library (zoo)

#calculate 3-day and 4-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '),
         avg_sales4 = rollmean(sales, k= 4 , fill=NA, align=' right '))

   day sales avg_sales3 avg_sales4
1 1 25 NA NA
2 2 20 NA NA
3 3 14 19.66667 NA
4 4 16 16.66667 18.75
5 5 27 19.00000 19.25
6 6 20 21.00000 19.25
7 7 12 19.66667 18.75
8 8 15 15.66667 18.50
9 9 14 13.66667 15.25
10 10 19 16.00000 15.00

As colunas avg_sales3 e avg_sales4 exibem a média móvel de vendas de 3 e 4 dias, respectivamente.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

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 *