Lewati ke konten utama

Tutorial Peramalan Deret Waktu

Panduan mendetail tentang peramalan deret waktu. Pelajari penggunaan Python dan kerangka pendukungnya. Pelajari pemodelan statistik yang terlibat.
· 15 mnt Baca

Jelajahi bersama AI

Data deret waktu adalah data yang dikumpulkan pada subjek yang sama di titik waktu yang berbeda, seperti PDB suatu negara per tahun, harga saham suatu perusahaan dalam kurun waktu tertentu, atau detak jantung Anda yang direkam setiap detik. Data apa pun yang dapat Anda tangkap secara berkelanjutan pada interval waktu berbeda merupakan bentuk data deret waktu.

Di bawah ini adalah contoh data deret waktu yang menunjukkan jumlah kasus COVID-19 di Amerika Serikat sebagaimana dilaporkan ke CDC. Sumbu x menunjukkan berlalunya waktu dan sumbu y merepresentasikan jumlah kasus COVID-19 dalam ribuan.


data deret waktu yang menunjukkan jumlah kasus COVID-19 di Amerika Serikat sebagaimana dilaporkan ke CDC

Di sisi lain, dataset yang lebih konvensional yang menyimpan informasi pada satu titik waktu, seperti informasi tentang pelanggan, produk, dan perusahaan, dikenal sebagai data penampang (cross-sectional). Contohnya ditunjukkan pada dataset di bawah ini, melacak negara-negara dengan kasus COVID-19 terbanyak dalam periode waktu yang tetap dan konsisten untuk semua negara.


melacak negara-negara dengan kasus COVID-19 terbanyak

Tidak terlalu sulit membedakan perbedaan antara data penampang dan deret waktu karena tujuan analisis untuk keduanya sangat berbeda. Dalam contoh kita, pertama-tama kita tertarik melacak kasus COVID-19 selama periode waktu tertentu, sebelum menganalisis kasus COVID-19 per negara dalam periode waktu tetap.

Dataset dunia nyata yang khas kemungkinan merupakan hibrida dari format-format ini. Misalnya, kita dapat memikirkan peritel seperti Walmart yang menjual ribuan produk setiap hari. Jika Anda menganalisis penjualan per produk pada hari tertentu, ini akan menjadi analisis penampang. Anda mungkin ingin mengetahui item terlaris nomor satu pada Malam Natal, misalnya. Sebaliknya, jika Anda ingin mengetahui penjualan satu item tertentu selama jangka waktu (misalnya 5 tahun terakhir), ini akan menjadi analisis deret waktu.

Tujuannya berbeda saat menganalisis data deret waktu dan penampang, dan dataset dunia nyata kemungkinan merupakan hibrida dari keduanya, baik deret waktu maupun penampang.

Apa itu Peramalan Deret Waktu?

Peramalan deret waktu persis seperti kedengarannya; memprediksi nilai yang tidak diketahui. Peramalan deret waktu melibatkan pengumpulan data historis, menyiapkannya agar dapat diproses algoritme, lalu memprediksi nilai masa depan berdasarkan pola yang dipelajari dari data historis.

Ada banyak alasan mengapa perusahaan mungkin tertarik meramalkan nilai masa depan, seperti PDB, penjualan bulanan, persediaan, pengangguran, dan suhu global:

  • Peritel mungkin tertarik memprediksi penjualan masa depan pada level SKU (stock keeping unit) untuk perencanaan dan penganggaran.
  • Pedagang kecil mungkin ingin meramalkan penjualan per toko, sehingga dapat menjadwalkan sumber daya yang tepat (lebih banyak orang saat ramai dan sebaliknya).
  • Perusahaan perangkat lunak besar seperti Google mungkin ingin mengetahui jam tersibuk dalam sehari atau hari tersibuk dalam seminggu agar dapat menjadwalkan sumber daya server sesuai kebutuhan.
  • Departemen kesehatan mungkin tertarik memprediksi akumulasi vaksinasi COVID yang diberikan sehingga mereka dapat memperkirakan kapan kekebalan kelompok diperkirakan mulai terjadi.

Jenis Peramalan Deret Waktu

Ada tiga jenis peramalan deret waktu. Penggunaan yang tepat bergantung pada tipe data yang Anda tangani dan kasus penggunaannya:

Peramalan Univariat

Deret waktu univariat, seperti namanya, adalah deret dengan satu variabel yang bergantung pada waktu. Misalnya, jika Anda melacak nilai suhu per jam untuk suatu wilayah tertentu dan ingin meramalkan suhu masa depan menggunakan suhu historis, ini adalah peramalan deret waktu univariat. Data Anda mungkin terlihat seperti ini:

Peramalan Univariat

Peramalan Multivariat

Di sisi lain, deret waktu multivariat memiliki lebih dari satu variabel yang bergantung pada waktu. Setiap variabel tidak hanya bergantung pada nilai masa lalunya sendiri tetapi juga memiliki ketergantungan pada variabel lain. Ketergantungan ini digunakan untuk meramalkan nilai masa depan.

Pertimbangkan contoh di atas dan misalkan dataset kita mencakup atribut terkait cuaca lainnya selama periode waktu yang sama, seperti persentase kelembapan, titik embun, kecepatan angin, dan sebagainya, bersama dengan nilai suhu. Dalam hal ini, ada beberapa variabel yang perlu dipertimbangkan untuk memprediksi suhu secara optimal. Deret seperti ini termasuk dalam kategori deret waktu multivariat. Dataset Anda sekarang akan terlihat seperti ini:

Peramalan Multivariat

Anda masih meramalkan nilai suhu untuk masa depan tetapi kini Anda dapat menggunakan informasi lain yang tersedia dalam ramalan karena kita mengasumsikan nilai suhu juga akan bergantung pada faktor-faktor ini.

peramalan deret waktu multivariat Sumber Gambar: Van Nguyen

Saat kita menangani peramalan deret waktu multivariat, variabel input dapat berupa dua jenis:

  • Eksogen: Variabel input yang tidak dipengaruhi oleh variabel input lain dan yang menjadi dasar variabel keluaran bergantung.
  • Endogen: Variabel input yang dipengaruhi oleh variabel input lain dan yang menjadi dasar variabel keluaran bergantung.

Tutorial ini akan membahas beberapa model klasik tetapi tidak semuanya mendukung peramalan deret waktu multivariat. Dalam situasi seperti ini, model pembelajaran mesin bisa menjadi solusi karena Anda dapat memodelkan masalah peramalan deret waktu apa pun dengan regresi. Kita akan melihat contohnya nanti dalam tutorial ini.

Metode Peramalan Deret Waktu

Peramalan deret waktu secara umum dapat dikategorikan ke dalam kategori berikut:

  • Model Klasik/Statistik — Moving Averages, Exponential Smoothing, ARIMA, SARIMA, TBATS
  • Machine Learning — Linear Regression, XGBoost, Random Forest, atau model ML apa pun dengan metode reduksi
  • Deep Learning — RNN, LSTM

Tutorial ini berfokus pada dua metode pertama: model klasik/statistik dan machine learning. Metode deep learning berada di luar cakupan tutorial ini.

Model Statistik

Dalam peramalan deret waktu menggunakan model statistik, ada beberapa algoritme populer dan diterima luas. Masing-masing memiliki modalitas matematis berbeda dan hadir dengan serangkaian asumsi yang harus dipenuhi. Tutorial ini tidak akan membahas konsep matematis secara mendalam, melainkan hanya memberikan intuisi yang semoga bermanfaat.

ARIMA

ARIMA adalah salah satu metode klasik paling populer untuk peramalan deret waktu. Singkatan dari autoregressive integrated moving average dan merupakan jenis model yang meramalkan deret waktu tertentu berdasarkan nilai masa lalunya sendiri, yakni lag-nya sendiri dan galat ramalan yang tertunda. ARIMA terdiri dari tiga komponen:

  • Autoregression (AR): mengacu pada model yang menunjukkan variabel yang berubah meregresi pada nilai tertunda atau nilai sebelumnya sendiri.
  • Integrated (I): merepresentasikan pembedaan observasi mentah agar deret waktu menjadi stasioner (yakni, nilai data diganti dengan selisih antara nilai data dan nilai sebelumnya).
  • Moving average (MA): memasukkan ketergantungan antara suatu observasi dan galat residual dari model moving average yang diterapkan pada observasi tertunda.

Bagian "AR" dari ARIMA menunjukkan bahwa variabel yang berkembang dan menjadi fokus diregresikan pada nilai tertunda (yakni, yang diamati sebelumnya) miliknya sendiri. Bagian "MA" menunjukkan bahwa galat regresi sebenarnya merupakan kombinasi linear dari istilah galat yang nilainya terjadi secara bersamaan dan pada berbagai waktu di masa lalu. Huruf "I" (untuk "integrated") menunjukkan bahwa nilai data telah diganti dengan selisih antara nilainya dan nilai sebelumnya (dan proses pembedaan ini mungkin dilakukan lebih dari sekali). Tujuan masing-masing fitur ini adalah membuat model sebaik mungkin menyesuaikan data.

SARIMA

Perluasan ARIMA yang mendukung pemodelan langsung komponen musiman dari deret disebut SARIMA. Masalah dengan model ARIMA adalah tidak mendukung data musiman, yaitu deret waktu dengan siklus berulang. ARIMA mengharapkan data yang tidak musiman atau komponennya musiman telah dihilangkan, misalnya disesuaikan secara musiman melalui metode seperti pembedaan musiman. SARIMA menambahkan tiga hiperparameter baru untuk menentukan autoregression (AR), differencing (I), dan moving average (MA) untuk komponen musiman dari deret.

Peramalan menggunakan model SARIMA Peramalan menggunakan model SARIMA

Exponential Smoothing

Exponential smoothing adalah metode peramalan deret waktu untuk data univariat. Dapat diperluas untuk mendukung data dengan tren atau komponen musiman. Dapat digunakan sebagai alternatif keluarga model ARIMA yang populer.

Exponential smoothing pada data deret waktu memberikan bobot yang menurun secara eksponensial dari observasi terbaru ke terlama. Semakin lama data, semakin kecil bobot yang diberikan, sedangkan data yang lebih baru diberikan bobot lebih besar

  • Exponential smoothing sederhana (tunggal) menggunakan rata-rata bergerak berbobot dengan bobot yang menurun secara eksponensial.
  • Holt's exponential smoothing biasanya lebih andal untuk menangani data yang menunjukkan tren.
  • Triple exponential smoothing (disebut juga Multiplicative Holt-Winters) lebih andal untuk tren parabola atau data yang menunjukkan tren dan musiman.

perbandingan hasil antara single exponential smoothing (ES), double ES, dan two-stage EWMA perbandingan hasil antara single exponential smoothing (ES), double ES, dan two-stage EWMA

TBATS

Model TBATS diperuntukkan data deret waktu dengan multi-musiman. Misalnya, data penjualan ritel dapat memiliki pola harian dan mingguan, serta pola tahunan.

Pada TBATS, transformasi Box-Cox diterapkan pada deret waktu asli, lalu ini dimodelkan sebagai kombinasi linear dari tren yang dihaluskan secara eksponensial, komponen musiman, dan komponen ARMA.

Peramalan menggunakan TBATS Peramalan menggunakan TBATS

Machine Learning

Jika Anda tidak ingin menggunakan model statistik atau kinerjanya kurang baik, Anda dapat mencoba metode ini. Machine learning adalah cara alternatif untuk memodelkan data deret waktu guna peramalan. Dalam metode ini, kita mengekstrak fitur dari tanggal untuk ditambahkan ke "variabel X" dan nilai deret waktu adalah "variabel y". Mari lihat contohnya:

Untuk keperluan tutorial ini, saya menggunakan dataset penumpang maskapai AS yang tersedia untuk diunduh dari Kaggle.

Contoh Dataset

Kita dapat mengekstrak fitur dari kolom "Date" seperti bulan, tahun, minggu dalam tahun, dan sebagainya. Lihat contoh:

# extract month and year from dates
data['Month'] = [i.month for i in data['Date']]
data['Year'] = [i.year for i in data['Date']]

# create a sequence of numbers
data['Series'] = np.arange(1,len(data)+1)

# drop unnecessary columns and re-arrange
data.drop(['Date', 'MA12'], axis=1, inplace=True)
data = data[['Series', 'Year', 'Month', 'Passengers']]

# check the head of the dataset
data.head()

Baris sampel setelah mengekstrak fitur Baris sampel setelah mengekstrak fitur

Hal yang perlu diperhatikan di sini adalah bahwa train-test-split untuk data deret waktu bersifat khusus. Karena Anda tidak dapat mengubah urutan tabel, Anda harus memastikan tidak melakukan pengambilan sampel secara acak karena Anda ingin data uji berisi titik-titik yang berada di masa depan dari titik-titik dalam data latih (waktu selalu bergerak maju).

# split data into train-test set
train = data[data['Year'] < 1960]
test = data[data['Year'] >= 1960]

# check shape
train.shape, test.shape
>>> ((132, 4), (12, 4))

Sekarang setelah kita melakukan train-test-split, kita siap melatih model machine learning pada data latih, menilainya pada data uji, dan mengevaluasi kinerja model kita. Dalam contoh ini, saya akan menggunakan PyCaret; sebuah library machine learning open-source dan low-code di Python yang mengotomatiskan alur kerja machine learning. Untuk menggunakan PyCaret, Anda harus memasangnya menggunakan pip.

# install pycaret
pip install pycaret

Jika Anda memerlukan bantuan selama pemasangan, silakan merujuk ke dokumentasi resmi.

Dengan asumsi Anda telah memasang PyCaret dengan sukses:

# import the regression module
from pycaret.regression import *

# initialize setup
s = setup(data = train, test_data = test, target = 'Passengers', fold_strategy = 'timeseries', numeric_features = ['Year', 'Series'], fold = 3, transform_target = True, session_id = 123)

Sekarang untuk melatih model machine learning, Anda hanya perlu menjalankan satu baris:

best = compare_models(sort = 'MAE')

Keluaran dari compare_models Keluaran dari compare_models

Model terbaik menggunakan validasi silang 3 lipatan berdasarkan Mean Absolute Error (MAE) adalah Leased Angle Regression. Sekarang kita dapat menggunakan model ini untuk meramalkan masa depan. Untuk itu, kita harus membuat "variabel X" di masa depan. Ini dapat dilakukan dengan membuat tanggal masa depan lalu mengekstrak fitur darinya.

Karena kita telah melatih model pada data hingga tahun 1960, mari prediksi lima tahun ke depan sampai 1965. Untuk menggunakan model final kita untuk menghasilkan prediksi masa depan, pertama kita perlu membuat dataset yang terdiri dari kolom Month, Year, Series pada tanggal masa depan. Kode di bawah ini membuat dataset "X" masa depan.

future_dates = pd.date_range(start = '1961-01-01', end = '1965-01-01', freq = 'MS')
future_df = pd.DataFrame()
future_df['Month'] = [i.month for i in future_dates]
future_df['Year'] = [i.year for i in future_dates]    
future_df['Series'] = np.arange(145,(145+len(future_dates)))
future_df.head()

Baris sampel dari future_df Baris sampel dari future_df

Sekarang kita dapat menggunakan future_df untuk membuat prediksi:

predictions_future = predict_model(best, data=future_df)
predictions_future.head()

Keluaran dari predictions_future.head() Keluaran dari predictions_future.head()

Dan sekarang kita dapat memvisualisasikannya:

concat_df = pd.concat([data,predictions_future], axis=0)
concat_df_i = pd.date_range(start='1949-01-01', end = '1965-01-01', freq = 'MS')
concat_df.set_index(concat_df_i, inplace=True)
fig = px.line(concat_df, x=concat_df.index, y=["Passengers", "Label"], template = 'plotly_dark')
fig.show()

Penumpang maskapai AS Aktual (1949–1960) dan Diprediksi (1961–1964) Penumpang maskapai AS Aktual (1949–1960) dan Diprediksi (1961–1964)

Ada beberapa hal penting untuk dicatat di sini. Kapan pun Anda menangani deret waktu univariat, Anda selalu dapat mengonversinya menjadi masalah regresi dan menyelesaikannya seperti dalam contoh ini. Namun, Anda harus berhati-hati mengenai validasi silang. Anda tidak dapat melakukan validasi silang acak pada model deret waktu dan Anda harus menggunakan teknik yang sesuai untuk deret waktu. Dalam contoh ini, PyCaret menggunakan TimeSeriesSplit dari library scikit-learn.

Kerangka Python untuk Peramalan

Facebook Prophet

Prophet adalah perangkat lunak open-source yang dirilis oleh tim Core Data Science Facebook. Tersedia untuk diunduh di CRAN dan PyPI.

Prophet adalah prosedur untuk meramalkan data deret waktu berdasarkan model aditif di mana tren nonlinier dipasang dengan musiman tahunan, mingguan, dan harian, ditambah efek hari libur. Paling baik bekerja dengan deret waktu yang memiliki efek musiman kuat dan beberapa musim data historis. Prophet tangguh terhadap data hilang dan pergeseran tren, serta umumnya menangani pencilan dengan baik.

Untuk mempelajarinya lebih lanjut, lihat tautan ini.

Peramalan menggunakan FB Prophet Peramalan menggunakan FB Prophet

sktime

sktime adalah kerangka kerja open-source dan terpadu untuk machine learning dengan deret waktu. Ia menyediakan platform yang mudah digunakan, fleksibel, dan modular untuk beragam tugas machine learning deret waktu. Menawarkan antarmuka yang kompatibel dengan scikit-learn dan alat komposisi model, dengan tujuan membuat ekosistem lebih mudah digunakan dan lebih interoperabel secara keseluruhan.

sktime Untuk mempelajari lebih lanjut tentang sktime, lihat tautan ini.

pmdarima

Pmdarima adalah library statistik yang dirancang untuk mengisi kekosongan dalam kemampuan analisis deret waktu Python. Ini mencakup:

  • Padanan fungsionalitas auto.arima milik R
  • Kumpulan uji statistik untuk stasioneritas dan musiman
  • Decomposisi deret waktu musiman
  • Utilitas validasi silang
  • Koleksi kaya dataset deret waktu bawaan untuk prototyping dan contoh

Untuk mempelajari lebih lanjut tentang pmdarima, lihat halaman ini.

Kats

Kats adalah proyek open-source hebat lainnya dari Facebook, yang dirilis oleh tim Infrastructure Data Science mereka. Tersedia untuk diunduh di PyPI.

Kats adalah toolkit untuk menganalisis data deret waktu; kerangka kerja yang ringan, mudah digunakan, dan dapat digeneralisasi untuk melakukan analisis deret waktu. Kats bertujuan menyediakan one-stop shop untuk analisis deret waktu, termasuk deteksi, peramalan, ekstraksi/embedding fitur, dan analisis multivariat, dan lain-lain.

Peramalan menggunakan KATS Peramalan menggunakan KATS

Untuk mempelajari lebih lanjut tentang KATS, lihat tautan ini.

Orbit

Orbit adalah proyek open-source luar biasa dari Uber. Ini adalah library Python untuk peramalan deret waktu Bayesian. Menyediakan antarmuka initialize-fit-predict yang familier dan intuitif untuk tugas deret waktu, sambil memanfaatkan bahasa pemrograman probabilistik di balik layar.

Peramalan menggunakan Orbit Peramalan menggunakan Orbit

Untuk mempelajari lebih lanjut tentang Orbit, lihat tautan ini.

PyCaret

PyCaret adalah library machine learning open-source dan low-code di Python yang mengotomatiskan alur kerja machine learning. Dengan PyCaret, Anda menghabiskan lebih sedikit waktu untuk ngoding dan lebih banyak waktu untuk analisis. Anda dapat melatih model, menganalisisnya, beriterasi lebih cepat dari sebelumnya, dan melakukan deployment seketika sebagai REST API atau bahkan membangun aplikasi ML front-end sederhana, semuanya dari Notebook favorit Anda.

Arsitektur Modul Time Series PyCaret. Dikembangkan oleh Pengembang Utama Nikhil Gupta. Arsitektur Modul Time Series PyCaret. Dikembangkan oleh Pengembang Utama Nikhil Gupta.

Berikutnya, kita akan melihat contoh tugas peramalan deret waktu end-to-end menggunakan library PyCaret.

Contoh End-to-end

Modul deret waktu PyCaret tersedia dalam versi beta, Anda dapat mengunduhnya dari pip.

pip install pycaret-ts-alpha

Tautan ke tutorial ini di Colab.

Dataset

Di sini, kami menggunakan dataset maskapai, yang juga tersedia di repositori data PyCaret.

from pycaret.datasets import get_data
data = get_data('airlineer')

Dataset

data.plot()

data.plot()

Menyiapkan Eksperimen

Eksperimen di PyCaret dimulai menggunakan fungsi setup. Fungsi ini menangani semua langkah prapemrosesan, train-test-split, strategi validasi silang, dan beberapa tugas lainnya.

from pycaret.time_series import *
s = setup(data, session_id = 123)

Keluaran dari fungsi setup Keluaran dari fungsi setup

Exploratory Data Analysis (EDA)

Untuk EDA data deret waktu univariat, ada beberapa hal yang bisa dan sebaiknya Anda lakukan.

Untuk penggunaan model klasik dan statistik, Anda dapat menjalankan beberapa uji statistik. Ada fungsi di PyCaret yang melakukannya untuk Anda.

check_stats()

Keluaran dari fungsi check_stats Keluaran dari fungsi check_stats

Jika Anda menangani deret waktu univariat, Anda juga dapat mendekomposisinya menjadi komponen tren, musiman, dan galat untuk analisis lebih lanjut.

plot_model(plot = 'decomp_classical")

Keluaran dari fungsi plot_model ## Pelatihan dan Pemilihan Model ## Keluaran dari fungsi plot_model<c/entre> ## Pelatihan dan Pemilihan Model ## Untuk melatih banyak model dan memilih satu di antaranya, kita hanya menjalankan satu baris kode. best = compare_models() Keluaran dari fungsi compare_models Keluaran dari fungsi compare_models

PyCaret telah melatih lebih dari 25 model menggunakan validasi silang yang sesuai untuk deret waktu dan menyajikan daftar model dari performa tertinggi hingga terendah. Model terbaik berdasarkan eksperimen ini untuk dataset ini adalah Exponential Smoothing, dengan mean absolute error sebesar 7,781.

Analisis Model

Sebelum kita melakukan deployment model ini untuk menghasilkan prediksi masa depan, kita dapat melihat beberapa plot analisis untuk mengomentari kualitas model kita.

plot_model(best, plot = 'forecast', data_kwargs = {'fh': 24})

Plot Peramalan Deret Waktu Plot Peramalan Deret Waktu

plot_model(best, plot = 'residuals')

Plot residual deret waktu Plot residual deret waktu

plot_model(best, plot = 'insample')

Plot insample deret waktu Plot insample deret waktu

Deployment Model

Pada tahap ini, kita siap memfinalkan model dan menyimpannya untuk digunakan di masa mendatang.

# finalize model
final_best = finalize_model(best)

# save model
final_best = finalize_model(best)

Deployment Model

Untuk memuat file ini kembali dan menghasilkan prediksi pada data masa depan:

# load model
loaded_model = load_model('my_best_model')

# generate predictions for the next 48 months
predict_model(loaded_model, fh = 48)

Keluaran terpotong Keluaran terpotong

Kesimpulan

Peramalan deret waktu adalah keterampilan yang sangat berguna untuk dipelajari. Banyak masalah kehidupan nyata bersifat deret waktu. Peramalan memiliki beragam aplikasi di berbagai industri, dengan banyak penerapan praktis termasuk: peramalan cuaca, peramalan ekonomi, peramalan layanan kesehatan, peramalan keuangan, peramalan ritel, peramalan bisnis, studi lingkungan, studi sosial, dan lainnya.

Pada dasarnya, data historis apa pun dengan interval yang konsisten dapat dianalisis dengan metode analisis deret waktu yang mengarah ke tugas peramalan yang belajar dari data historis dan mencoba memprediksi masa depan. Sebagai penutup, ada tiga kategori luas untuk peramalan deret waktu:

  • Model Statistik - Exponential smoothing, ARIMA, SARIMA, TBATS, dll.
  • Machine Learning - Linear Regression, XGBoost, Random Forest, dll.
  • Deep Learning - RNN, LSTM

Jika Anda ingin semakin membangun pengetahuan dan keterampilan dalam peramalan deret waktu, lihat jalur hebat "Time Series with Python" oleh Datacamp. Dalam jalur ini, Anda akan belajar memanipulasi data deret waktu menggunakan pandas, bekerja dengan library statistik termasuk NumPy dan statsmodels untuk menganalisis data, serta mengembangkan keterampilan visualisasi menggunakan Matplotlib, SciPy, dan seaborn. Pada akhir jalur ini, Anda akan mengetahui cara meramalkan masa depan menggunakan model kelas ARIMA dan menghasilkan prediksi serta wawasan menggunakan model machine learning.

Topik

Terkait

blogs

Spaghetti Plot dan Jalur Badai

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026