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 Barang Periode1 Periode2 Periode3 Periode4 Periode5
Pensil 10 12 8 11 20
Penghapus 15 12 13 14 14
Pena 9 7 15 15 10
Penggaris 1 2 4 12 13

Contoh data awal adalah sebagai berikut:



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

* 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

* 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


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

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

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

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


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

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

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

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


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

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)

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)

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

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


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

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

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


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.