Algoritma Moving Average / Rata-rata Bergerak 6


Algoritma Moving Average / Rata-rata Bergerak adalah salah satu algoritma yang digunakan untuk memperkirakan data berikutnya berdasarkan data-data yang sudah ada. Contoh yang dibahas kali ini adalah memperkirakan penjualan pada periode berikutnya berdasarkan data penjualan pada periode sebelumnya.
Algoritma ini memiliki beberapa variasi yang umum digunakan, yaitu:

  • SMA (Simple Moving Average)
  • CMA (Cumulative Moving Average)
  • WMA (Weighted Moving Average)
  • EMA (Exponential Moving Average)

Masing-masing variasi tersebut akan dibahas pada perhitungan dibawah ini



Diasumsikan ada 4 data barang yang sudah diketahui hasil penjualannya
Masing-masing barang memiliki data penjualan pada 5 periode sebelumnya
Maka tentukan prediksi penjualan untuk 3 periode berikutnya
Diasumsikan data penjualan adalah sebagai berikut:

Nama BarangPeriode1Periode2Periode3Periode4Periode5
Pensil101281120
Penghapus1512131414
Pena97151510
Penggaris1241213

Contoh data awal adalah sebagai berikut:

Dim barang(3)() As Double
barang(0) = New Double() {10, 12, 8, 11, 20}
barang(1) = New Double() {15, 12, 13, 14, 14}
barang(2) = New Double() {9, 7, 15, 15, 10}
barang(3) = New Double() {1, 2, 4, 12, 13}



Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan banyak periode berikutnya yang perlu dihitung
Diasumsikan dalam kasus ini, banyak periode berikutnya adalah 3 periode

Const jumlahPeriodeBerikutnya As Integer = 3

* Tentukan jumlah data yang digunakan pada masing-masing perhitungan
Nantinya untuk setiap baris baru akan digunakan skian baris sebelumnya untuk menghitung prediksi penjualan pada baris tersebut
Diasumsikan dalam kasus ini, jumlah data sebelumnya yang digunakan adalah 3 data

Const jumlahDataSebelumnya As Integer = 3

* Tentukan faktor smoothing sebagai bobot penurun periode
Besar nilai antara 0 sampai dengan 1
Semakin besar nilai faktor smoothing, maka bobot pada periode yang lama akan semakin cepat mengecil
Diasumsikan dalam kasus ini, faktor smoothing yang digunakan adalah 0.8

Const alpha As Double = 0.8

SMA (Simple Moving Average)

Algoritma ini adalah algoritma Moving Average yang paling mudah. Nilai prediksi pada sebuah periode adalah berdasarkan rata-rata dari sekian baris data sebelumnya

Langkah-langkah penggunaan algoritma ini adalah

1. Hasil prediksi penjualan untuk data pada periode pertama adalah data itu sendiri

hasil(0) = data(0)

2. Pada masing-masing baris data,
Jumlahkan semua data sebanyak jumlah data sebelumnya

2a. Jika indeks data yang dihitung lebih dari jumlah data,
maka akan terdapat data yang tidak nyata,
Untuk baris data yang tidak nyata, gunakan nilai prediksi yang telah didapatkan sebelumnya seolah-olah penjualan dilakukan sebanyak jumlah tersebut

If j > data.Length - 1 Then
	rata2 += hasil(j)
	jumlahData += 1
	. . .

2b. Selain itu, gunakan data yang nyata seperti biasanya,

. . .
ElseIf j >= 0 Then
	rata2 += data(j)
	jumlahData += 1
End If

3. Hitung prediksi penjualan pada baris data ini dengan rumus = rata-rata dibagi jumlah data

rata2 /= jumlahData

CMA (Cumulative Moving Average)

Algoritma ini merupakan variasi lain dari Simple Moving Average. Dimana nilai prediksi pada sebuah periode adalah berdasarkan rata-rata dari semua baris data sebelumnya

Langkah-langkah penggunaan algoritma ini adalah

1. Hasil prediksi penjualan untuk data pada periode pertama adalah data itu sendiri

hasil(0) = data(0)

2. Pada masing-masing baris data,
Jumlahkan semua data dari awal sampai pada data sebelum baris data ini

2a. Jika indeks data yang dihitung lebih dari jumlah data,
maka akan terdapat data yang tidak nyata,
Untuk baris data yang tidak nyata, gunakan nilai prediksi yang telah didapatkan sebelumnya seolah-olah penjualan dilakukan sebanyak jumlah tersebut

If j > data.Length - 1 Then
	rata2 += hasil(j)
	jumlahData += 1
	. . .

2b. Selain itu, gunakan data yang nyata seperti biasanya,

. . .
ElseIf j >= 0 Then
	rata2 += data(j)
	jumlahData += 1
End If

3. Hitung prediksi penjualan pada baris data ini dengan rumus = rata-rata dibagi jumlah data

rata2 /= jumlahData

WMA (Weighted Moving Average)

Algoritma ini merupakan variasi lain dari Simple Moving Average. Semua periode akan memiliki nilai bobot sendiri. Periode yang lebih lama akan memiliki nilai bobot yang rendah, sehingga prediksi akan lebih ditentukan oleh data-data yang lebih baru. Nilai prediksi pada sebuah periode adalah berdasarkan jumlah dari sekian baris data sebelumnya setelah dikali dengan bobot periode.

Langkah-langkah penggunaan algoritma ini adalah

1. Hasil prediksi penjualan untuk data pada periode pertama adalah data itu sendiri

hasil(0) = data(0)

2. Tentukan bobot pada masing-masing periode
Nilai bobot yang digunakan akan selalu terurut dari bobot terendah ke bobot tertinggi
Selisih antar nilai bobot juga harus bernilai sama
dan jumlah semua nilai bobot tersebut harus bernilai 1
Karena ada 5 periode data, maka ada 5 bobot yang harus dihitung

2a. Hitung dulu semua jumlah indeks data yang digunakan sebanyak jumlah data sebelumnya
Lakukan perhitungan jumlah hanya pada data dengan indeks periode yang valid saja (mulai dari 1)

Dim n As Integer = 0
Dim iBobot As Integer = 1
For j As Integer = i - jumlahDataSebelumnya To i - 1
	If j >= 0 Then
		n += iBobot
		iBobot += 1
	End If
Next

2b. Bobot pada masing-masing periode adalah indeks periode tersebut dibagi dengan jumlah indeks data
Lakukan perhitungan bobot hanya pada data dengan indeks periode yang valid saja (mulai dari 1)

Dim bobot(jumlahDataSebelumnya - 1) As Double
Dim idxBobot As Integer = 0
iBobot = 1
For j As Integer = i - jumlahDataSebelumnya To i - 1
	If j >= 0 Then
		bobot(idxBobot) = (iBobot) / n
		iBobot += 1
	End If

	idxBobot += 1
Next

3. Pada masing-masing baris data,
Jumlahkan nilai perkalian dari data dan bobot periode pada semua data sebanyak jumlah data sebelumnya

3a. Jika indeks data yang dihitung lebih dari jumlah data,
maka akan terdapat data yang tidak nyata,
Untuk baris data yang tidak nyata, gunakan nilai prediksi yang telah didapatkan sebelumnya seolah-olah penjualan dilakukan sebanyak jumlah tersebut

If j > data.Length - 1 Then
	rata2 += hasil(j) * bobot(idxBobot)
	idxBobot += 1
	. . .

3b. Selain itu, gunakan data yang nyata seperti biasanya,

. . .
ElseIf j >= 0 Then
	rata2 += data(j) * bobot(idxBobot)
	idxBobot += 1
End If

EMA (Exponential Moving Average)

Algoritma ini merupakan pengembangan lebih lanjut dari Weighted Moving Average. Jika pada Weighted Moving Average nilai bobot yang dihitung akan berkurang / bertambah secara aritmatika (misalnya 1/6, 2/6, 3/6), maka pada algoritma ini nilai bobot yang dihitung akan berkurang / bertambah secara eksponensial (misalnya 1, 1/2, 1/4, 1/8). Dalam algoritma ini perhitungan prediksi juga menggunakan rumus tertentu, dan membutuhkan sebuah konstanta faktor smoothing yang sudah dijelaskan sebelumnya
Algoritma ini memiliki nama lain yaitu EWMA (Exponential Weighted Moving Average) dan merupakan versi dasar dari Algoritma Exponential Smoothing yang sudah pernah dijelaskan sebelumnya.

Langkah-langkah penggunaan algoritma ini adalah

1. Hasil prediksi penjualan untuk data pada periode pertama adalah data itu sendiri

hasil(0) = data(0)

2. Hitung prediksi penjualan dengan rumus
St = alpha * Y1 + (1 – alpha) * St-1

2a. Jika indeks data yang dihitung lebih dari jumlah data,
maka akan terdapat data yang tidak nyata,
Untuk baris data yang tidak nyata, gunakan nilai prediksi yang telah didapatkan sebelumnya seolah-olah penjualan dilakukan sebanyak jumlah tersebut

If i > data.Length - 1 Then
	hasil(i) = alpha * hasil(i - 1) + (1 - alpha) * hasil(i - 1)
	. . .

2b. Selain itu, gunakan data yang nyata seperti biasanya,

. . .
Else
	hasil(i) = alpha * data(i) + (1 - alpha) * hasil(i - 1)
End If

Hasil akhir adalah: (klik untuk perbesar gambar)

cmd77

Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.


Tinggalkan sebuah komentar

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

6 pemikiran di “Algoritma Moving Average / Rata-rata Bergerak

  • Fajar

    Min mau tanya… Untuk yg simple moving average itu.. hitungnya gmna.. ko kalo dihitung manual hasilnya beda sama punya admin… Boleh kasih contoh 1 aja ngak??

    • pip Penulis

      Cara perhitungan Simple Moving Average cukup mudah. Untuk menjelaskan perhitungan, saya gunakan contoh data pensil.
      Perlu diinget, bahwa parameter Jumlah Data Sebelumnya bernilai 3, sehingga saya hanya gunakan 3 data sebelumnya saja, sehingga:
      P1 = (8+11+20)/3 = 13.xx dibulatkan menjadi 13
      P2 = (11+20+13)/3 = 14.xx dibulatkan menjadi 14
      P3 = (20+13+14)/3 = 16

      • Fajar

        Terimakasih min… Sangat membantu saya orang awam…
        Oh iya mau tanya.. untuk pemakaian periode apakah ada batasannya… Misalnya karena data realnya ada 5 jadi periode maksimum yg digunakan hanya sampai 5 periode atau seperti apa??
        Terimakasih ?

        • pip Penulis

          Tentu saja jumlah periode dapat disesuaikan tergantung kebutuhan. Dalam contoh ini saya hanya menggunakan 5 periode saja. Apabila dalam kasus sebenarnya terdapat jumlah periode yang lebih banyak (misalnya 10, 20, atau 50), maka silahkan menyesuaikan parameter jumlah periode sesuai yang anda inginkan. Saya rasa perhitungan akan semakin baik apabila semakin banyak data yang digunakan.

    • pip Penulis

      Jika dilihat dari definisi per kata, seharusnya kedua algoritma tersebut tidak sama. Akan tetapi untuk dapat memastikan hal tersebut maka anda harus mempelajari alur dari masing-masing algoritma yang dimaksud.