Prediksi masa depan dari data masa lalu. Trend, seasonality, ARIMA, Prophet, dan exponential smoothing — toolkit untuk demand planning, financial forecasting, dan workforce planning.
Trend: arah jangka panjang (naik / turun / flat).
Seasonality: pola berulang dalam periode tetap (mingguan, bulanan, tahunan).
Cyclical: fluktuasi jangka panjang non-fixed (siklus ekonomi).
Irregular / Noise: random variation yang tidak bisa diprediksi.
Y = Trend + Seasonality + ResidualY = Trend × Seasonality × ResidualContoh: Penjualan ritel seasonal multiplicative — Lebaran lift 30% (proportional). Suhu harian additive — winter -20°C tetap konstan.
| Metode | Karakter | Kapan Pakai |
|---|---|---|
| Naive | Ŷ_t+1 = Y_t | Baseline benchmark |
| Moving Average | Rata-rata N period terakhir | Smooth noise, identify trend |
| Exponential Smoothing | Recent data weighted higher | Stable data tanpa seasonality |
| Holt's Linear | ES + trend | Data dengan trend tapi tanpa seasonality |
| Holt-Winters | ES + trend + seasonality | Data dengan semua komponen |
| ARIMA | Auto-regressive | Series stationary |
| SARIMA | ARIMA + seasonal | Series dengan seasonality |
| Prophet (Meta) | Decomposable, robust | Business series, mudah dipakai |
Time series stationary = mean & variance konstan dari waktu ke waktu, tanpa trend/seasonality. ARIMA butuh ini. Jika tidak stationary: differencing (Y_t - Y_t-1) untuk hilangkan trend.
p = order of AR (lag value)d = degree of differencingq = order of MA (lag error)(p,d,q): non-seasonal terms(P,D,Q): seasonal termsm: seasonal period (12 untuk monthly, 7 untuk weekly)
Open source library dari Meta. Handle missing data, outliers, holidays, multiple seasonality automatically. Cukup butuh kolom 'ds' (date) dan 'y' (value). Best balance antara accuracy dan ease-of-use.
from prophet import Prophetm = Prophet()m.fit(df)future = m.make_future_dataframe(periods=30)forecast = m.predict(future)m.plot(forecast)
MAE = (1/n) × Σ|y - ŷ| // intuitiveMAPE = (1/n) × Σ|y - ŷ|/y × 100% // percentage errorRMSE = √((1/n) × Σ(y - ŷ)²) // penalize big errorsMASE = MAE / MAE_naive // vs naive baseline
Model ARIMA fancy tapi MAE-nya 1.2× naive forecast = useless. Naive forecast (Y_t+1 = Y_t) atau seasonal naive harus jadi floor benchmark. Model harus beat ini significantly.
E-commerce besar pakai Prophet + holiday effect untuk forecast inventory. Mereka encode Lebaran, Black Friday, gaji-an (tanggal 25-akhir bulan) sebagai event. Hasilnya: stockout berkurang 38%, overstock berkurang 22%. Pelajaran: domain knowledge mengalahkan model fancy.