Cara menghitung rata-rata pergerakan dengan python
Rata-rata bergerak adalah teknik yang dapat digunakan untuk menghaluskan data deret waktu guna mengurangi “gangguan” dalam data dan lebih mudah mengidentifikasi pola dan tren.
Ide di balik rata-rata bergerak adalah mengambil rata-rata dari sejumlah periode sebelumnya untuk sampai pada “rata-rata bergerak” untuk periode tertentu.
Tutorial ini menjelaskan cara menghitung rata-rata pergerakan dengan Python.
Contoh: Rata-Rata Pergerakan dengan Python
Misalkan kita memiliki tabel berikut yang menunjukkan total penjualan suatu perusahaan selama 10 periode:
x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]
Metode 1: Gunakan fungsi cumsum().
Salah satu cara untuk menghitung rata-rata pergerakan adalah dengan menggunakan fungsi cumsum():
import numpy as np #define moving average function def moving_avg(x, n): cumsum = np.cumsum(np.insert(x, 0, 0)) return (cumsum[n:] - cumsum[:-n]) / float(n) #calculate moving average using previous 3 time periods n = 3 moving_avg(x, n): array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])
Berikut cara menafsirkan hasilnya:
- Rata-rata pergerakan periode ketiga adalah 47. Ini dihitung sebagai rata-rata tiga periode pertama: (50+55+36)/3 = 47 .
- Rata-rata pergerakan periode keempat adalah 46,67. Ini dihitung sebagai rata-rata dari tiga periode sebelumnya: (55+36+49)/3 = 46.67 .
Dan seterusnya.
Metode 2: Gunakan panda.
Cara lain untuk menghitung rata-rata pergerakan adalah dengan menulis fungsi berbasis panda:
import pandas as pd #define array to use and number of previous periods to use in calculation x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104] n=3 #calculate moving average pd.Series(x).rolling(window=n).mean().iloc[n-1:].values array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])
Metode ini memberikan hasil yang sama persis dengan metode sebelumnya, namun cenderung berjalan lebih cepat pada array yang lebih besar.
Perhatikan bahwa Anda juga dapat menentukan jumlah periode sebelumnya untuk digunakan dalam perhitungan rata-rata bergerak. Misalnya, Anda mungkin lebih suka menggunakan n=5:
#use 5 previous periods to calculate moving average n=5 #calculate moving average pd.Series(x).rolling(window=n).mean().iloc[n-1:].values array([54.8, 59.8, 69., 79., 85.2, 89.2])
Semakin banyak periode yang Anda gunakan untuk menghitung moving average, maka garis moving average akan semakin “dihaluskan”.