ARIMA Dijelaskan untuk Analis, Bukan untuk Statistikawan
Blog/Tips & Trik/ARIMA Dijelaskan untuk Analis, Bukan untuk Statistikawan

ARIMA Dijelaskan untuk Analis, Bukan untuk Statistikawan

BimaBima
·28 Oktober 2025·13 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

ARIMA ngeramal angka masa depan dari pola angka masa lalu, dan tiga huruf di ARIMA(p,d,q) itu jawaban dari tiga pertanyaan. Huruf p nanya berapa banyak nilai sebelumnya yang dipakai, huruf d nanya berapa kali data perlu diselisihkan biar polanya stabil, huruf q nanya berapa banyak kesalahan ramalan sebelumnya yang ikut dipakai buat mengoreksi. Buat data bulanan berpola musiman, kamu butuh versi SARIMA yang nambahin empat angka lagi buat sisi musimannya.

ARIMA ngeramal angka masa depan dari pola angka masa lalu. Tiga huruf di ARIMA(p,d,q) itu jawaban dari tiga pertanyaan, dan kamu bisa paham semuanya tanpa satu pun notasi matematika.

Huruf p: berapa banyak nilai sebelumnya yang dipakai buat nebak nilai sekarang. Huruf d: berapa kali data perlu diselisihkan biar polanya stabil. Huruf q: berapa banyak kesalahan ramalan sebelumnya yang dipakai buat mengoreksi tebakan.

Sisanya di artikel ini cara nentuin ketiganya, dan gimana tahu hasilnya bisa dipakai atau nggak.

Apa itu ARIMA sebenernya?

ARIMA adalah model peramalan yang cuma pakai riwayat satu deret angka buat nebak kelanjutannya. Nggak ada variabel luar, nggak ada faktor tambahan. Cuma angka itu sendiri dan urutannya. Namanya singkatan dari AutoRegressive Integrated Moving Average, dan tiap bagian nyumbang satu huruf ke ARIMA(p,d,q).

Bagian AutoRegressive artinya nilai hari ini dipengaruhi nilai hari-hari sebelumnya. Kalau penjualan kemarin tinggi, penjualan hari ini cenderung tinggi juga.

Bagian Integrated ngurusin tren. Kalau angka kamu terus naik dari tahun ke tahun, model nggak bisa langsung kerja. Datanya harus diubah dulu jadi selisih antar periode.

Bagian Moving Average bukan rata-rata bergerak yang biasa kamu bikin di Excel. Ini soal koreksi. Kalau model meleset kelewat tinggi bulan lalu, dia nurunin tebakan bulan ini.

Itu semua yang perlu kamu pahami buat mulai.

Kenapa data harus stabil dulu?

ARIMA nganggep sifat data nggak berubah sepanjang waktu. Rata-ratanya di sekitar level yang sama, naik turunnya di kisaran yang sama.

Data penjualan yang terus naik jelas nggak begitu. Rata-rata tahun ini beda jauh dari rata-rata tiga tahun lalu.

Solusinya selisih. Alih-alih ngeramal angka penjualannya, kamu ngeramal perubahannya dari bulan sebelumnya.

Penjualan: 100, 112, 121, 135, 148
Selisih:        12,   9,  14,  13

Deret aslinya naik terus. Deret selisihnya muter di sekitar 12. Yang kedua itu yang bisa dimodelkan.

Jumlah selisih yang kamu ambil itulah nilai d. Sekali selisih berarti d sama dengan 1.

Cara ngecek apakah udah cukup: uji Augmented Dickey-Fuller. Di Python fungsinya adfuller dari statsmodels.

from statsmodels.tsa.stattools import adfuller

hasil = adfuller(data['penjualan'])
print('p-value:', hasil[1])

Kalau p-value di bawah 0,05, datanya udah cukup stabil. Kalau di atas, ambil selisih sekali lalu uji lagi.

Kalau setelah dua kali selisih masih belum lolos, jangan lanjut nyelisihin. Itu biasanya tanda ada perubahan level mendadak di data kamu, misalnya buka cabang baru atau ganti sistem pencatatan.

Gimana cara nentuin p dan q?

Ada dua cara, dan aku pakai dua-duanya.

Cara pertama: baca grafik ACF dan PACF. Dua grafik ini nunjukin seberapa kuat nilai sekarang berkaitan dengan nilai beberapa periode sebelumnya.

Aturan bacanya sederhana:

  • PACF putus tajam setelah batang ke-2, ACF turun landai. Coba p = 2, q = 0.
  • ACF putus tajam setelah batang ke-1, PACF turun landai. Coba p = 0, q = 1.
  • Dua-duanya turun landai. Coba kombinasi kecil kayak (1,d,1).

Jujur aja, di data bisnis nyata grafiknya jarang sebersih di buku teks. Jangan habiskan waktu berjam-jam nebak dari grafik.

Cara kedua: coba beberapa kombinasi, bandingin skornya. Jalanin model buat p dan q dari 0 sampai 3, catat nilai AIC-nya, ambil yang paling kecil.

from statsmodels.tsa.arima.model import ARIMA
import itertools

hasil = []
for p, q in itertools.product(range(4), range(4)):
    try:
        model = ARIMA(train, order=(p, 1, q)).fit()
        hasil.append((p, 1, q, model.aic))
    except Exception:
        continue

hasil.sort(key=lambda x: x[3])
print(hasil[:5])

Rincian parameter dan cara bacanya ada di dokumentasi ARIMA statsmodels.

Catatan penting: AIC paling kecil bukan jaminan ramalan paling akurat. Selalu uji di potongan data terakhir yang nggak ikut dilatih.

Alur kerja lengkap dari nol

  1. Plot datanya dulu. Lihat trennya, lihat polanya, lihat apakah ada titik aneh. Langkah ini sering langsung jawab setengah pertanyaan kamu.
  2. Pisahin data latih dan data uji. Simpan 20 persen terakhir buat pengujian, jangan diacak. Urutan waktunya harus tetap.
  3. Cek kestabilan pakai uji ADF, tentukan nilai d.
  4. Cari p dan q lewat perbandingan AIC di data latih.
  5. Latih model dengan kombinasi terbaik, lalu ramal sepanjang periode data uji.
  6. Hitung errornya. Aku pakai MAPE karena gampang dijelasin ke orang non teknis dalam bentuk persen.
  7. Plot sisa kesalahan model. Kalau masih kelihatan pola berulang, ada informasi yang belum ketangkep.
  8. Latih ulang pakai seluruh data, baru ramal ke depan.

Langkah 7 yang paling sering dilewatin dan paling sering nyelametin. Sisa kesalahan yang masih berpola artinya modelnya belum selesai.

Contoh kasus: ramal penjualan bulanan toko_berkah

Data yang dipakai: penjualan bulanan Januari 2021 sampai Desember 2024, total 48 titik. Data latih 40 bulan pertama, data uji 8 bulan terakhir.

Uji ADF di data asli ngasih p-value 0,41. Belum stabil. Setelah selisih sekali, p-value turun jadi 0,008. Nilai d ditetapkan 1.

Pencarian p dan q dari 0 sampai 3 ngasih tiga kandidat teratas:

ModelAICMAPE di data uji
ARIMA(2,1,2)612,414,8%
ARIMA(1,1,1)614,113,2%
ARIMA(3,1,1)615,716,3%

Perhatikan baris kedua. AIC-nya bukan yang terkecil, tapi errornya di data uji paling rendah.

Ini kejadian yang cukup sering. Model dengan skor statistik terbaik belum tentu yang paling berguna.

Tapi 13,2 persen masih terlalu besar buat rencana stok. Waktu aku plot sisa kesalahannya, polanya jelas: model selalu meleset kelewat rendah di bulan yang kena Ramadan.

Setelah ditambahin bagian musiman jadi SARIMA(1,1,1)(1,1,1,12), MAPE turun jadi 8,7 persen. Setelah ditambahin lagi variabel penanda Ramadan, turun lagi jadi 6,1 persen.

Perbaikan terbesar datang bukan dari nyetel p dan q, tapi dari nyadar ada pola berulang yang belum dimasukin. Cara nanganin bagian Ramadan-nya aku tulis terpisah di efek Ramadan pada model peramalan.

Kapan ARIMA bukan pilihan yang tepat?

Kalau kamu punya faktor penjelas di luar waktu. Belanja iklan, jumlah cabang, harga pesaing. ARIMA nggak bisa pakai itu. Regresi atau SARIMAX dengan variabel tambahan lebih pas. Dasar cara bacanya ada di panduan regresi linear.

Kalau datanya kurang dari 50 titik. Buat data bulanan berpola musiman, kamu butuh minimal tiga tahun penuh.

Kalau ada perubahan besar yang permanen. Toko pindah lokasi, harga naik 40 persen, produk utama dihentikan. Data sebelum dan sesudah kejadian itu praktis dua deret berbeda.

Kalau yang kamu butuhin ramalan harian jangka panjang. ARIMA bagus buat beberapa periode ke depan. Makin jauh ramalannya, makin lebar rentang ketidakpastiannya sampai nggak berguna.

Kalau data kamu penuh angka nol. Barang yang lakunya seminggu sekali nggak cocok dimodelkan begini. Metode khusus permintaan jarang lebih tepat.

Kesalahan umum

Ngacak data waktu bikin data latih dan data uji. Urutan waktu itu inti dari model ini. Ngacaknya bikin model belajar dari masa depan, dan hasil pengujiannya jadi terlalu bagus buat dipercaya.

Ngejar AIC terkecil. Bandingin di data uji, bukan cuma di skor.

Nyelisihin berlebihan. Kalau d sampai 2 atau 3, cek dulu apakah masalahnya di data, bukan di jumlah selisih.

Ngebuang outlier tanpa mikir. Lonjakan Lebaran itu pola berulang, bukan gangguan. Yang layak dibuang cuma kesalahan pencatatan.

Lupa balikin hasil ke skala asli. Kalau kamu modelkan selisih atau logaritma, ramalannya masih dalam bentuk itu. Banyak orang lupa langkah balik ini dan bingung kenapa angkanya kecil banget.

Ngasih satu angka ke atasan tanpa rentang. Selalu sertakan batas atas dan bawah. Ramalan tanpa rentang ketidakpastian ngasih rasa pasti yang palsu.

Pertanyaan yang sering muncul

Kapan ARIMA lebih cocok dari regresi biasa?

Waktu satu-satunya penjelas yang kamu punya adalah riwayat angka itu sendiri. Kalau ada faktor luar yang ngaruh, regresi atau SARIMAX dengan variabel tambahan lebih masuk akal.

Berapa titik data minimal buat pakai ARIMA?

Sekitar 50 titik buat data non musiman. Buat data musiman bulanan, minimal tiga tahun penuh dan empat tahun lebih aman. Di bawah itu model nggak bisa bedain pola musiman dari kejadian sekali lewat.

Apakah auto ARIMA bisa dipercaya?

Bisa buat titik awal, jangan buat keputusan akhir. Pencarian otomatis milih berdasarkan skor statistik, dan skor terbaik nggak selalu berarti ramalan terbaik di data baru. Selalu uji di potongan data terakhir.

Apa bedanya ARIMA dan SARIMA?

SARIMA nambahin empat angka lagi khusus buat pola musiman, termasuk panjang siklusnya. Buat data bulanan berulang tahunan, panjang siklusnya 12. Kalau data kamu punya pola tahunan yang jelas, hampir selalu SARIMA yang kamu butuhin.

Langkah berikutnya

Yang perlu kamu bawa: p itu berapa nilai lalu yang dipakai, d itu berapa kali diselisihkan, q itu berapa kesalahan lalu yang dikoreksi. Sisanya soal disiplin menguji di data yang belum pernah dilihat model.

Dan dari kasus toko_berkah tadi, perbaikan terbesar datang dari nyadar ada pola musiman yang belum dimasukin, bukan dari nyetel angka p dan q.

Kalau kamu belum punya tempat buat ngejalanin kodenya, mulai dari Google Colab. Setelah ramalannya jadi, langkah lanjutannya biasanya ngitung cadangan stok, dan itu ada di query SQL safety stock.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Pandas groupby: Agregasi Data ala Pivot di Python (2026)
Tips & Trik
20 Juli 2026•9 menit baca

Pandas groupby: Agregasi Data ala Pivot di Python (2026)

groupby ngelompokin baris berdasarkan kolom, lalu ngitung ringkasan per grup kayak total atau rata-rata. Ini pivot-nya pandas.

BimaBima
Pandas to_excel: Ekspor DataFrame ke Excel (2026)
Tips & Trik
18 Juli 2026•8 menit baca

Pandas to_excel: Ekspor DataFrame ke Excel (2026)

to_excel nyimpen DataFrame pandas jadi file Excel .xlsx. Ini cara pakainya, dari satu sheet sampai banyak sheet, plus setelan yang bikin hasilnya rapi.

BimaBima
Pandas read_excel: Baca File Excel di Python
Tips & Trik
16 Juli 2026•8 menit baca

Pandas read_excel: Baca File Excel di Python

pandas read_excel baca file Excel jadi DataFrame, bisa pilih sheet tertentu dan lompatin baris judul yang berantakan. Ini cara pakai plus parameter penting dengan contoh data toko.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore