Cara menghitung rata-rata bergerak berdasarkan kelompok di r


Dalam analisis deret waktu, rata-rata bergerak mewakili nilai rata-rata sejumlah periode sebelumnya.

Anda dapat menggunakan sintaks dasar berikut untuk menghitung rata-rata pergerakan grup di 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 '))

Contoh khusus ini menghitung rata-rata pergerakan 3 periode dari variabel2 , yang dikelompokkan berdasarkan variabel1 .

Kode ini menggunakan fungsi group_by() dari paket dplyr dan fungsi rollmean() dari paket zoo .

Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.

Contoh: Hitung rata-rata bergerak berdasarkan kelompok di R

Misalkan kita memiliki kerangka data berikut di R yang menunjukkan penjualan suatu produk selama hari berturut-turut di dua toko berbeda:

 #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

Kita dapat menggunakan sintaks berikut untuk membuat kolom baru bernama moving_avg3 yang menampilkan nilai penjualan rata-rata pergerakan 3 hari untuk setiap toko:

 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

Catatan : Nilai k pada fungsi rollmean() mengontrol jumlah periode sebelumnya yang digunakan untuk menghitung rata-rata pergerakan.

Kolom moving_avg3 menampilkan nilai penjualan rata-rata bergerak selama 3 periode sebelumnya.

Misalnya, rata-rata penjualan selama 3 hari pertama untuk toko A dihitung sebagai berikut:

Rata-rata pergerakan 3 hari = (4 + 4 + 3) / 3 = 3,67

Rata-rata pergerakan penjualan selama 3 hari ke depan untuk toko A dihitung sebagai berikut:

Rata-rata pergerakan 3 hari = (4 + 3 + 5) / 3 = 4

Dan seterusnya.

Perhatikan bahwa dua nilai rata-rata pergerakan pertama untuk setiap toko adalah NA karena periode sebelumnya tidak cukup untuk digunakan sebagai rata-rata pergerakan.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:

Cara memplot banyak kolom di R
Cara menghitung rata-rata kolom di R
Cara menghitung mean per grup di R

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *