Analisis deret waktu untuk rasionalisasi dan proyeksi kebutuhan obat generik bulanan RSJ Menur Surabaya menggunakan metode ARIMA Box-Jenkins
Model diidentifikasi murni lewat interpretasi visual ACF/PACF, tanpa auto.arima() maupun EACF
Data yang digunakan merupakan bagian dari dataset publik pengadaan obat bulanan di RS Menur Surabaya.
| Detail | Keterangan |
|---|---|
| Sumber Data | Open Data Provinsi Jawa Timur - Jumlah Pengadaan Obat Berdasarkan Golongan Obat |
| File Olahan | Book1.xlsx (filter pada kategori obat generik) |
| Periode Terpakai | April 2021 – Mei 2026 (62 observasi bulanan) |
| Data Latih (Train) | 50 bulan (April 2021 – Mei 2025) |
| Data Uji (Test) | 12 bulan (Juni 2025 – Mei 2026) |
📌 Catatan Pengolahan Data: Dataset asli dari portal Open Data Jatim memiliki rentang waktu yang lebih panjang dan mencakup berbagai golongan obat. Untuk fokus penelitian ini, data difilter khusus pada kategori obat generik dengan rentang periode April 2021 hingga Mei 2026 guna menjaga konsistensi deret waktu dan menghindari structural break akibat perbedaan pola pencatatan historis lama.
- Uji stasioneritas ragam (Box-Cox vs transformasi log)
- Uji stasioneritas rataan (ADF & KPSS)
- Differencing d=1
- Identifikasi model tentatif dari plot ACF/PACF
- Uji signifikansi parameter (coeftest) dan white noise (Ljung-Box) untuk tiap kandidat
- Pemilihan model berdasarkan AICc terkecil di antara kandidat yang lolos signifikansi dan white noise
- Uji overfitting terhadap model final (order p+1, q+1, dan gabungan keduanya)
- Diagnostik sisaan (normalitas dan white noise)
- Backtesting fixed forecast dan rolling forecast (walk-forward)
- Forecast 12 bulan ke depan dari model yang direfit ke seluruh data
Grid search p(0-3) x q(0-3) turut disertakan sebagai pembanding di lampiran, namun bukan dasar pemilihan model utama. Identifikasi model tetap mengacu pada plot ACF/PACF sesuai ketentuan tugas.
Model terpilih: ARIMA(2,1,2) dengan transformasi log (λ=0)
| Kriteria | Hasil |
|---|---|
| Signifikansi parameter | Semua signifikan |
| White noise (Ljung-Box) | Lolos |
| AICc | -96.74 |
| MAPE fixed forecast | 3.11% |
| MAPE rolling forecast | 1.20% |
Rolling forecast jauh lebih akurat dibanding fixed forecast, karena model direfit tiap bulan dengan data terbaru sehingga error tidak terakumulasi ke horizon yang jauh.
Semua gambar di atas dihasilkan otomatis oleh script (lihat bagian Cara Menjalankan), tidak perlu screenshot manual.
- Residual model final tidak normal (Shapiro-Wilk p = 1.8e-06). Titik forecast tetap valid secara asimtotik, namun selang kepercayaan forecast yang diasumsikan normal menjadi kurang bisa diandalkan, terutama pada horizon yang jauh.
- Model tidak sepenuhnya stabil saat direfit ke seluruh data. Saat difit ulang pada 62 observasi penuh, parameter ar1 dan ma1 menjadi tidak signifikan, berbeda dari saat model difit pada 50 data latih.
- Selang kepercayaan forecast masa depan melebar cukup jauh pada bulan-bulan akhir, konsekuensi dari model I(1) yang dikombinasikan dengan residual non-normal.
├── Analisis_Obat_Book1_Final.R # script utama
├── Book1.xlsx # data
├── Hasil_Analisis_Obat_Book1_Final.txt # output lengkap dari sink()
├── images/ # 9 plot, ter-export otomatis oleh script
│ ├── 01_plot_data_penuh.png
│ ├── 02_plot_data_latih.png
│ ├── 03_plot_diff.png
│ ├── 04_acf_pacf.png
│ ├── 05_fitted_vs_aktual.png
│ ├── 06_diagnostik_sisaan.png
│ ├── 07_validasi_forecast.png
│ ├── 08_forecast_masa_depan.png
│ └── 09_fixed_vs_rolling.png
├── 1_Tabel_Komparasi_Model.csv
├── 1b_Lampiran_Grid_Search_Lengkap.csv
├── 2_Tabel_Hasil_Backtest.csv
├── 3_Tabel_Rolling_Forecast.csv
└── README.md
Install library yang dibutuhkan:
install.packages(c("readxl", "forecast", "tseries", "MASS", "lmtest"))Sesuaikan setwd() di baris awal script ke folder tempat Book1.xlsx disimpan, lalu jalankan script dari atas ke bawah. Script akan otomatis membuat folder images/ dan menyimpan 9 plot ke dalamnya, serta menyimpan semua output analisis ke file txt dan csv di working directory yang sama.
Analisis ini sengaja tidak menggunakan auto.arima() maupun EACF untuk identifikasi model. Seluruh identifikasi model murni berdasarkan interpretasi visual plot ACF dan PACF, sesuai ketentuan tugas.








