Assalamu‘alaikum wr. wb.
Halo gais! Jika sebelumnya sudah membahas tentang Regresi Linear menggunakan Python, kali ini kita akan membahas tentang Time Series Data Analysis dan Implementasinya menggunakan Python.
Sumber Artikel Materi : Tableau.com (Learn), Builtin.com, Kdnuggets.com, dan Analyticsvidhya.com (Blog - ARIMA Models), Analyticsvidhya.com (Blog - Time Series Analysis and Forecasting)
Di berbagai industri, organisasi umumnya menggunakan data deret waktu, yang berarti informasi apa pun yang dikumpulkan dalam interval waktu yang teratur, dalam operasional mereka. Contohnya termasuk harga saham harian, tingkat konsumsi energi, metrik keterlibatan media sosial, dan permintaan ritel, antara lain. Menganalisis data deret waktu memberikan wawasan seperti tren, pola musiman, dan ramalan ke peristiwa masa depan yang dapat membantu menghasilkan keuntungan. Sebagai contoh, dengan memahami tren musiman dalam permintaan produk ritel, perusahaan dapat merencanakan promosi untuk memaksimalkan penjualan sepanjang tahun.
Saat menganalisis data deret waktu, Anda harus melakukan beberapa langkah. Pertama, Anda perlu memeriksa keberlanjutan dan otonomi. Keberlanjutan adalah cara untuk mengukur apakah data memiliki pola struktural seperti tren musiman. Otonomi terjadi ketika nilai-nilai masa depan dalam deret waktu secara linear bergantung pada nilai-nilai masa lalu. Anda perlu memeriksa keduanya dalam data deret waktu karena mereka merupakan asumsi yang dibuat oleh banyak metode yang banyak digunakan dalam analisis deret waktu. Sebagai contoh, metode Autoregressive Integrated Moving Average (ARIMA) untuk meramalkan deret waktu mengasumsikan keberlanjutan. Selanjutnya, regresi linear untuk meramalkan deret waktu mengasumsikan bahwa data tidak memiliki otonomi. Sebelum melakukan proses ini, maka, Anda perlu tahu apakah data layak untuk dianalisis.
Selama analisis deret waktu di Python, Anda juga perlu melakukan dekomposisi tren dan meramalkan nilai-nilai masa depan. Dekomposisi memungkinkan Anda memvisualisasikan tren dalam data Anda, yang merupakan cara yang bagus untuk menjelaskan perilaku mereka secara jelas. Akhirnya, meramalkan memungkinkan Anda memperkirakan peristiwa masa depan yang dapat membantu dalam pengambilan keputusan. Anda dapat menggunakan banyak teknik yang berbeda untuk meramalkan deret waktu, tetapi di sini, kita akan membahas ARIMA.
A. Pengertian Time Series Analysis
Analisis Deret Waktu atau Time Series Analysis adalah cara khusus untuk menganalisis serangkaian titik data yang dikumpulkan selama suatu interval waktu. Dalam analisis deret waktu, para analis mencatat titik-titik data pada interval yang konsisten selama periode waktu tertentu daripada hanya mencatat titik-titik data secara intermittently atau secara acak. Namun, jenis analisis ini bukan hanya tindakan pengumpulan data seiring waktu.
Yang membedakan data deret waktu dari data lain adalah bahwa analisisnya dapat menunjukkan bagaimana variabel-variabel berubah seiring waktu. Dengan kata lain, waktu adalah variabel penting karena menunjukkan bagaimana data beradaptasi sepanjang titik data serta hasil akhirnya. Ini memberikan sumber informasi tambahan dan urutan dependensi antar data.
Analisis Deret Waktu (Time Series Analysis) umumnya memerlukan sejumlah besar titik data untuk memastikan konsistensi dan keandalan. Kumpulan data yang luas memastikan Anda memiliki ukuran sampel representatif dan bahwa analisis dapat menembus data yang bising. Ini juga memastikan bahwa tren atau pola yang ditemukan bukanlah outlier dan dapat memperhitungkan varians musiman. Selain itu, data deret waktu dapat digunakan untuk meramalkan—memprediksi data masa depan berdasarkan data historis.
B. Cara melakukan dan Signifikasi Time Series Analysis
Bagaimana Cara Menganalisis Time Series?
Untuk melakukan analisis deret waktu, kita harus mengikuti langkah-langkah berikut :
- Mengumpulkan data dan membersihkannya
- Menyiapkan visualisasi dengan memperhatikan waktu vs fitur kunci
- Mengamati kestasioneran deret waktu
- Membangun grafik untuk memahami sifatnya.
- Pembangunan model - AR, MA, ARMA, dan ARIMA
- Mengekstrak wawasan dari prediksi
Signifikansi Time Series
TSA adalah dasar untuk analisis prediksi dan peramalan, khusus untuk pernyataan masalah berbasis waktu. :
- Menganalisis dataset historis dan polanya
- Memahami dan mencocokkan situasi saat ini dengan pola yang diperoleh dari tahap sebelumnya.
- Memahami faktor atau faktor yang memengaruhi variabel tertentu pada periode yang berbeda.
- Peramalan (Forecasting) : Memprediksi nilai untuk masa depan.
- Segmentasi (Segmentation) : Mengelompokkan item-item serupa bersama-sama.
- Klasifikasi(Classification) : Mengelompokkan sejumlah item ke dalam kelas-kelas yang telah ditentukan.
- Analisis Deskriptif : Analisis suatu dataset untuk menemukan apa yang ada di dalamnya.
- Analisis Intervensi : Efek perubahan variabel tertentu terhadap hasil.
C. Komponen dan Batasan pada Time Series Analysis
Mari kita lihat berbagai komponen Analisis Seri Waktu :
- Tren : Di mana tidak ada interval tetap dan setiap penyimpangan dalam kumpulan data yang diberikan adalah garis waktu yang kontinu. Tren dapat berupa Tren Negatif, Positif, atau Tren Nol.
- Musiman : Di mana pergeseran interval yang teratur atau tetap terjadi dalam kumpulan data pada garis waktu yang kontinu. Dapat berbentuk kurva lonceng atau gigi gergaji.
- Siklik : Di mana tidak ada interval tetap, ketidakpastian dalam pergerakan, dan polanya.
- Tidak Teratur : Situasi, peristiwa, atau skenario yang tidak terduga dan lonjakan dalam rentang waktu yang singkat.
Apa Batasan Analisis Seri Waktu?
Analisis seri waktu memiliki batasan-batasan berikut; kita harus memperhatikan hal tersebut selama analisis data kita.
- Seperti model lainnya, nilai yang hilang tidak didukung oleh TSA.
- Titik-titik data harus linear dalam hubungan mereka.
- Transformasi data diperlukan, sehingga sedikit mahal.
- Model-model tersebut sebagian besar bekerja pada data Univariat.
D. Tipe Data pada Time Series Analysis
Mari kita bahas jenis data time series dan pengaruhnya. Saat membahas jenis data TS, ada dua jenis utama - stasioner dan tidak stasioner.
1. Stasioner
Sebuah dataset seharusnya mengikuti aturan-aturan berikut tanpa memiliki komponen Trend, Seasonality, Cyclical, dan Irregularity dari time series.
- Nilai rata-rata harus sepenuhnya konstan dalam data selama analisis.
- Variansi harus konstan dengan memperhatikan rentang waktu.
- Kovariansi mengukur hubungan antara dua variabel.
2. Tidak Stasioner
Jika baik rata-rata-variansi atau kovariansi berubah seiring waktu, dataset disebut tidak stasioner.
D. Metode pada Time Series Analysis
Selama alur kerja persiapan model TSA, kita harus menilai apakah dataset tersebut stasioner atau tidak. Ini dilakukan menggunakan Uji Statistik. Ada dua tes yang tersedia untuk menguji apakah dataset tersebut stasioner :
- Uji Augmented Dickey-Fuller (ADF)
- Uji Kwiatkowski-Phillips-Schmidt-Shin (KPSS)
1. Uji Augmented Dickey-Fuller (ADF) atau Uji Unit Root
Uji ADF adalah uji statistik paling Populer. Ini dilakukan dengan Asumsi berikut :
- Hipotesis Nol (H0) : Seri tidak stasioner
- Hipotesis Alternatif (HA) : Seri stasioner
- p-value > 0,05 Gagal menolak (H0)
- p-value <= 0,05 Terima (H1)
2. Uji Kwiatkowski–Phillips–Schmidt–Shin (KPSS)
Uji ini digunakan untuk menguji Hipotesis Nol (HO) yang akan memandang Time Series sebagai stasioner sekitar Tren Deterministik melawan alternatif dari sebuah Akar Unit. Karena TSA mencari Data Stasioner untuk analisis lebih lanjut, kita harus memastikan bahwa dataset tersebut stasioner.
E. Metodologi Moving Average
Metode time series yang umum digunakan adalah Rata-Rata Bergerak. Metode ini efektif untuk variasi acak jangka pendek dan terkait dengan komponen time series.
Rata-Rata Bergerak (MA) atau Rata-Rata Bergerak: Nilai MA dihitung dengan mengambil rata-rata data time series dalam k periode.
Mari kita lihat jenis-jenis rata-rata bergerak :
- Simple Moving Average (SMA)
- Cumulative Moving Average (CMA)
- Exponential Moving Average (EMA)
F. Pengertian ARIMA
Model ARIMA adalah model statistik yang digunakan untuk menganalisis dan memprediksi data deret waktu. Pendekatan ARIMA secara eksplisit menangani struktur standar yang ditemukan dalam deret waktu, menyediakan metode sederhana namun kuat untuk membuat ramalan deret waktu yang terampil.
ARIMA adalah singkatan dari AutoRegressive Integrated Moving Average. Ini menggabungkan tiga aspek kunci :
- Autoregresi (AR): Model yang menggunakan korelasi antara observasi saat ini dan observasi tertinggal. Jumlah observasi tertinggal disebut sebagai urutan tertinggal atau p.
- Terintegrasi (I): Penggunaan differencing dari observasi mentah untuk membuat deret waktu menjadi stasioner. Jumlah operasi differencing disebut sebagai d.
- Moving Average (MA): Model yang memperhitungkan hubungan antara observasi saat ini dan kesalahan residual dari model moving average yang diterapkan pada observasi masa lalu. Ukuran jendela moving average adalah urutan atau q.
Model ARIMA didefinisikan dengan notasi ARIMA(p,d,q) di mana p, d, dan q diganti dengan nilai integer untuk menentukan model yang tepat.
G. Langkah-langkah menggunakan Model ARIMA
Kami membangun model regresi linear dengan menyertakan jumlah dan jenis istilah yang ditentukan. Selain itu, kami mempersiapkan data melalui differencing untuk mencapai stationarity, secara efektif menghilangkan struktur tren dan musiman yang dapat memengaruhi model regresi dengan dampak negatif.
1. Visualisasi Data Deret Waktu
Visualisasi Data Deret Waktu melibatkan plotting titik data historis sepanjang waktu untuk mengamati pola, tren, dan musiman.
2. Identifikasi Apakah Data Stasioner
Identifikasi apakah data stasioner melibatkan pemeriksaan apakah data deret waktu menunjukkan pola yang stabil sepanjang waktu atau jika ada tren atau ketidakberaturan. Data stasioner diperlukan untuk prediksi yang akurat menggunakan ARIMA, dan berbagai uji statistik dapat digunakan untuk menentukan stasioner.
3. Plot Grafik Korelasi dan Auto Korelasi
Untuk memplot grafik korelasi dan auto-korelasi dalam langkah-langkah menggunakan model ARIMA secara online, Anda menganalisis data deret waktu. Grafik korelasi menampilkan hubungan antara observasi saat ini dan observasi tertinggal, sementara grafik auto-korelasi menunjukkan korelasi deret waktu dengan nilai lagunya sendiri. Grafik ini memberikan wawasan tentang pola dan ketergantungan potensial dalam data.
4. Buat Model ARIMA atau Seasonal ARIMA berdasarkan data
Untuk membangun model ARIMA (Autoregressive Integrated Moving Average) atau model Seasonal ARIMA, seseorang menganalisis data untuk menentukan parameter model yang tepat, seperti urutan komponen autoregressive (AR) dan moving average (MA). Langkah ini melibatkan pemilihan nilai-nilai optimal untuk model berdasarkan karakteristik dan pola yang diamati dalam data.
H. Penerapan Time Series Data Analysis Forcasting dalam Python
Mirip dengan apa yang telah kita lihat sebelumnya pada plot PACF untuk jumlah Term Auto-Regressive (AR), kita dapat menggunakan plot ACF untuk mencari jumlah Term Moving Average (MA).
Istilah Moving Average (MA), secara teoritis, adalah kesalahan perkiraan yang tertinggal. Plot ACF menyatakan jumlah suku Moving Average (MA) yang diperlukan untuk menghilangkan autokorelasi pada deret stasioner.
Sebagai hasilnya, kita dapat mengamati bahwa beberapa kelambatan berada jauh di atas garis signifikansi. Jadi, mari kita perbaiki q menjadi 2, untuk sementara. Kita juga dapat menggunakan model yang lebih sederhana jika ada keraguan yang cukup menunjukkan Y.
1. Memanggil dan Melakukan Inisialisasi Library
import matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport statsmodels.api as smfrom statsmodels.graphics.tsaplots import plot_pacf
2. Data Loading
Pertama, masukkan Dataset wwwusage.csv (Download di Sini) :
df = pd.read_csv('WWWusage.csv', names=['value'], header=0)print(f"Total samples: {len(df)}")print(df.head())
Output :
Total samples: 100
value
1 1 88
2 2 84
3 3 85
4 4 85
5 5 84
3. Memilih p, d dan q pada ARIMA Model
Jelasnya, data berikut ini tidak ideal untuk model Python ARIMA untuk memulai pelatihan Autoregresif secara langsung. Jadi mari kita lihat bagaimana segmen pembeda model ARIMA Python membuat data menjadi stasioner.
from statsmodels.graphics.tsaplots import plot_acfplot_acf(df.value)
Output :
4. Menentukan Nilai p
Kita akan menentukan “p” berdasarkan lag paling signifikan dalam plot autokorelasi parsial. Kami dapat memeriksa plot hingga perbedaan urutan ke-2 untuk memastikannya.
a. First Order Differencing Autocorrelation
f = plt.figure()ax1 = f.add_subplot(121)ax1.set_title('1st Order Differencing')ax1.plot(df.value.diff().values)ax2 = f.add_subplot(122)plot_acf(df.value.diff().dropna(), ax=ax2)plt. show()
Output :
b. Second Order Differencing Autocorrelation
f = plt.figure()ax1 = f.add_subplot(121)ax1.set_title('2nd Order Differencing')ax1.plot(df.value.diff().diff().values)ax2 = f.add_subplot(122)plot_acf(df.value.diff().diff().dropna(), ax=ax2)plt. show()
Output :
5. Menentukan Nilai d
Jika secara Kolektif Autokorelasi, atau titik data setiap lag (pada sumbu horizontal), bernilai positif untuk beberapa lag berturut-turut, mungkin diperlukan lebih banyak pembedaan. Sebaliknya jika titik datanya lebih banyak.
from statsmodels.tsa.stattools import adfullerresult = adfuller(df.value.dropna())print('p-value: ', result[1])result = adfuller(df.value.diff().dropna())print('p-value: ', result[1])result = adfuller(df.value.diff().diff().dropna())print('p-value: ', result[1])
Output :
p-value: 0.12441935447109487
p-value: 0.07026846015272707
p-value: 2.8434287555470966e-17
6. Menentukan Nilai q
Kita akan menentukan “p” berdasarkan lag paling signifikan dalam plot autokorelasi parsial. Kami dapat memeriksa plot hingga perbedaan urutan ke-2 untuk memastikannya.
a. First Order Differencing Autocorrelation
Kita menentukan “q” berdasarkan lag paling signifikan dalam plot autokorelasi parsial. Kami dapat memeriksa plot hingga perbedaan urutan ke-2 untuk memastikannya.
f = plt.figure()ax1 = f.add_subplot(121)ax1.set_title('1st Order Differencing')ax1.plot(df.value.diff().values) # Use .values instead of .valueax2 = f.add_subplot(122)plot_pacf(df.value.diff().dropna(), ax=ax2)plt.show()
Output :
b. Second Order Differencing Autocorrelation
Terakhir, “q” dapat diperkirakan dengan cara yang sama dengan melihat plot ACF dan bukan plot PACF. Dengan melihat jumlah kelambanan yang melewati ambang batas tersebut, kita dapat menentukan seberapa besar masa lalu yang cukup signifikan untuk dipertimbangkan di masa depan.
Yang memiliki korelasi tinggi berkontribusi lebih banyak dan cukup untuk memprediksi nilai masa depan. Dari plot di atas, parameter rata-rata bergerak (MA) dapat diatur ke 2.
f = plt.figure()ax1 = f.add_subplot(121)ax1.set_title('2nd Order Differencing')ax1.plot(df.value.diff().diff().values)ax2 = f.add_subplot(122)plot_pacf(df.value.diff().diff().dropna(), ax=ax2)plt.show()
Output :
7. Fit ARIMA dengan Python
Dengan demikian, model ARIMA Python akhir kita dapat didefinisikan sebagai ARIMA(p=1, d=1,q= 2).
from statsmodels.tsa.arima.model import ARIMA# Assuming df is your DataFramearima_model = ARIMA(df.value, order=(1, 1, 1)) # Adjust the order as neededmodel = arima_model.fit()print(model.summary())
Output :
8. Hasil ARIMA Forecast dalam Python
Untuk memeriksa seberapa cocok model yang dilatih dengan deret waktu data yang disediakan, kita dapat menggunakan metode plot_predict tersebut melatih model python perkiraan ARIMA untuk memplot yang sebenarnya dan memperkirakan nilai di atas satu sama lain. Grafik garis ini dihitung dari bobot yang dipelajari dan dilatih oleh model. Mari kita periksa seberapa bagus prediksinya bekerja berdasarkan koefisien yang dipelajari Dengan demikian, kita dapat melihat bahwa nilai perkiraan lebih berbeda pada puncak dan palung sambil menyelaraskan hampir sempurna kurva yang lebih halus. Perubahan yang membedakan, menggerakkan rata-rata, dan parameter autoregresi akan signifikan mempengaruhi garis-garis ini.
# Convert 'value' column to numericdf['value'] = pd.to_numeric(df['value'], errors='coerce')# Plot original dataplt.plot(df['value'].dropna(), label='Observed')# Plot Forecastforecast_steps = 10 # Ganti sesuai dengan jumlah langkah prediksi yang diinginkanforecast = model.get_forecast(steps=forecast_steps)confidence_int = forecast.conf_int()# Plot original dataplt.plot(df.value, label='Observed')# Plot forecasted valuesplt.plot(np.arange(len(df), len(df) + forecast_steps), forecast.predicted_mean, color='red', label='Forecast')# Plot confidence intervalplt.fill_between(np.arange(len(df), len(df) + forecast_steps), confidence_int.iloc[:, 0], confidence_int.iloc[:, 1], color='red', alpha=0.2, label='Confidence Interval')plt.xlabel('Time')plt.ylabel('Value')plt.title('ARIMA Forecast')plt.legend()plt.show()
Output :
Itulah Time Series Data Analysis dengan menggunakan Python dalam Machine Learning (ML) dan Data Science. Mohon maaf apabila ada kesalahan apapun.
Terima Kasih 😄😘👌👍 :)
Wassalamu‘alaikum wr. wb.