Como calcular uma média móvel por grupo em r


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

Você pode usar a seguinte sintaxe básica para calcular uma média móvel de grupo em R:

 library (dplyr)
library (zoo)

#calculate moving average by group
df %>%
  group_by(variable1)
  mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))

Este exemplo específico calcula uma média móvel de 3 períodos de variável2 , agrupada por variável1 .

Este código usa a função group_by() do pacote dplyr e a função rollmean() do pacote zoo .

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

Exemplo: Calcular média móvel por grupo em R

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

 #create data frame
df <- data. frame (store=rep(c(' A ', ' B '), each= 7 ),
                 sales=c(4, 4, 3, 5, 6, 5, 7, 4, 8, 7, 2, 5, 4, 6))

#view data frame
df

   blind sales
1 to 4
2 to 4
3 to 3
4 to 5
5 to 6
6 to 5
7 to 7
8 B 4
9 B 8
10 B 7
11 B 2
12 B 5
13 B 4
14 B 6

Podemos usar a seguinte sintaxe para criar uma nova coluna chamada moving_avg3 que exibe o valor médio móvel de vendas de 3 dias para cada loja:

 library (dplyr)
library (zoo)

#calculate 3-day moving average of sales, grouped by store
df %>%
  group_by(store) %>%
  mutate(moving_avg3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

# A tibble: 14 x 3
# Groups: store[2]
   store sales moving_avg3
           
 1 A 4 NA   
 2 A 4 NA   
 3 to 3 3.67
 4 to 5 4   
 5 to 6 4.67
 6 to 5 5.33
 7 to 7 6   
 8 B 4 NA   
 9 B 8 NA   
10 B 7 6.33
11 B 2 5.67
12 B 5 4.67
13 B 4 3.67
14 B 6 5

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 moving_avg3 exibe o valor médio móvel de vendas dos 3 períodos anteriores.

Por exemplo, a média móvel das vendas nos primeiros 3 dias da loja A é calculada da seguinte forma:

Média móvel de 3 dias = (4 + 4 + 3) / 3 = 3,67

A média móvel de vendas nos próximos 3 dias para a loja A é calculada da seguinte forma:

Média móvel de 3 dias = (4 + 3 + 5) / 3 = 4

E assim por diante.

Observe que os dois primeiros valores da média móvel de cada loja são NA porque não houve períodos anteriores suficientes para usar na média móvel.

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 *