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