x13_arima adalah algoritma peramalan deret waktu musiman yang dibangun di atas paket open-source X-13ARIMA-SEATS. Algoritma ini berfungsi seperti filter: memisahkan sinyal mendasar dalam data Anda dari kebisingan dan pola musiman, lalu memproyeksikan sinyal tersebut ke depan untuk menghasilkan prediksi.
Gunakan x13_arima jika data Anda memiliki struktur musiman yang diketahui—seperti penjualan bulanan, pendapatan kuartalan, atau trafik mingguan—dan Anda menginginkan kontrol penuh atas orde model. Jika Anda tidak yakin orde mana yang harus digunakan, gunakan x13_auto_arima sebagai gantinya. Cukup tentukan batas atas untuk setiap orde, dan x13_auto_arima akan mencari nilai optimal secara otomatis.
Cara kerja
x13_arima melakukan fitting terhadap model Seasonal ARIMA, yang dinyatakan sebagai ARIMA(p,d,q)(P,D,Q)m:
| Bagian | Parameter | Makna |
|---|---|---|
| Non-musiman | (p,d,q) | Order autoregressive, order differencing, order moving average |
| Musiman | (P,D,Q) | Order autoregressive musiman, differencing musiman, order moving average musiman |
| Periode | m | Jumlah pengamatan per musim (misalnya, 12 untuk data bulanan dalam siklus tahunan) |
ARIMA (Autoregressive Integrated Moving Average) diperkenalkan oleh Box dan Jenkins pada awal 1970-an dan juga dikenal sebagai model Box-Jenkins.
Batasan
| Batas | Nilai |
|---|---|
| Baris per kelompok | Maksimum 1.200 record |
| Kolom | Satu kolom numerik per eksekusi |
Konfigurasi komponen
Metode 1: konfigurasi di Konsol PAI (direkomendasikan)
Pada halaman pipeline Machine Learning Designer, tambahkan komponen x13_arima dan konfigurasikan parameter berikut.
Tab Fields Setting
| Parameter | Wajib | Deskripsi |
|---|---|---|
| Time Series Column | Ya | Mengurutkan kolom numerik. Tidak memengaruhi nilai-nilainya. |
| Value Column | Ya | Kolom numerik yang akan diprediksi. |
| Stratification Column | Tidak | Nama kolom yang dipisahkan koma (misalnya, col0,col1). Model terpisah difit untuk setiap kelompok. |
Parameters Setting tab
| Parameter | Wajib | Rentang | Default | Deskripsi |
|---|---|---|---|---|
| Format (p,d,q) | Ya | Bilangan bulat non-negatif dalam [0, 36] | — | Order ARIMA non-musiman. p: order autoregressive. d: order differencing. q: order moving average. |
| Start Date | Tidak | year.season (misalnya, 1986.1) | 1.1 | Posisi awal deret waktu. Lihat format deret waktu. |
| Series Frequency | Tidak | Bilangan bulat positif dalam [1, 12] | 12 | Jumlah pengamatan per periode satuan. Nilai 12 berarti data bulanan dalam siklus tahunan. |
| Format (sp,sd,sq) | Tidak | Bilangan bulat non-negatif dalam [0, 36] | Non-musiman | Order ARIMA musiman. sp: order autoregressive musiman. sd: differencing musiman. sq: order moving average musiman. |
| Seasonal Cycle | Tidak | (0, 12] | 12 | Panjang periode musiman. |
| Prediction Entries | Tidak | Bilangan bulat positif dalam (0, 120] | 12 | Jumlah langkah masa depan yang akan diprediksi. |
| Prediction Confidence Level | Tidak | (0, 1) | 0,95 | Lebar interval kepercayaan untuk batas prediksi. |
Tab Tuning
| Parameter | Deskripsi |
|---|---|
| Cores | Jumlah core. Ditentukan oleh sistem secara default. |
| Memory | Memori per core, dalam MB. Ditentukan oleh sistem secara default. |
Metode 2: jalankan perintah PAI
Gunakan komponen SQL Script atau ODPS SQL untuk memanggil x13_arima secara langsung.
PAI -name x13_arima
-project algo_public
-DinputTableName=pai_ft_x13_arima_input
-DseqColName=id
-DvalueColName=number
-Dorder=3,1,1
-Dstart=1949.1
-Dfrequency=12
-Dseasonal=0,1,1
-Dperiod=12
-DpredictStep=12
-DoutputPredictTableName=pai_ft_x13_arima_out_predict
-DoutputDetailTableName=pai_ft_x13_arima_out_detailParameter
| Parameter | Wajib | Default | Deskripsi |
|---|---|---|---|
inputTableName | Ya | — | Nama tabel input. |
inputTablePartitions | Tidak | Seluruh tabel | Partisi yang akan dibaca dari tabel input. |
seqColName | Ya | — | Kolom deret waktu. Hanya digunakan untuk mengurutkan kolom valueColName. |
valueColName | Ya | — | Kolom numerik yang akan diprediksi. |
groupColNames | Tidak | — | Kolom pengelompokan, dipisahkan koma (misalnya, col0,col1). Model terpisah difit untuk setiap kelompok. |
order | Ya | — | Order non-musiman dalam format p,d,q. Bilangan bulat non-negatif dalam [0, 36]. |
start | Tidak | 1.1 | Posisi awal deret waktu dalam format n1.n2. Lihat format deret waktu. |
frequency | Tidak | 12 | Jumlah pengamatan per periode satuan. Rentang: (0, 12]. Nilai 12 berarti 12 bulan per tahun. |
seasonal | Tidak | Non-musiman | Order musiman dalam format sp,sd,sq. Bilangan bulat non-negatif dalam [0, 36]. |
period | Tidak | Sama dengan frequency | Panjang periode musiman. Rentang: (0, 100]. |
maxiter | Tidak | 1500 | Jumlah maksimum iterasi pelatihan. |
tol | Tidak | 1e-5 | Toleransi konvergensi (DOUBLE). |
predictStep | Tidak | 12 | Jumlah langkah masa depan yang akan diprediksi. Rentang: (0, 365]. |
confidenceLevel | Tidak | 0,95 | Tingkat kepercayaan untuk batas prediksi. Rentang: (0, 1). |
outputPredictTableName | Ya | — | Tabel output untuk hasil prediksi. |
outputDetailTableName | Ya | — | Tabel output untuk detail model. |
outputTablePartition | Tidak | Tanpa partisi | Spesifikasi partisi untuk tabel output. |
coreNum | Tidak | Default sistem | Jumlah core. Harus bilangan bulat positif. Digunakan bersama dengan memSizePerCore. |
memSizePerCore | Tidak | Default sistem | Memori per core, dalam MB. Rentang: [1024, 65536]. |
lifecycle | Tidak | — | Siklus hidup tabel output di MaxCompute. |
Alokasi resource default
| Kondisi | coreNum | memSizePerCore |
|---|---|---|
groupColNames tidak diatur | 1 | 4096 MB |
groupColNames diatur | pembulatan ke bawah(total baris / 120.000) | 4096 MB |
Format deret waktu
Parameter start dan frequency secara bersama-sama menentukan bagaimana data Anda dipetakan ke waktu kalender. Bayangkan data sebagai urutan nilai yang ditempatkan ke dalam kalender dua tingkat: unit utama ts1 (misalnya, tahun) dan sub-unit ts2 (misalnya, bulan).
frequency— jumlah sub-unitts2per unit utamats1start— ditulis sebagain1.n2, artinyan2-nyats2padan1-nyats1
| Granularitas | ts1 | ts2 | frequency | Contoh start |
|---|---|---|---|---|
| Bulanan | Tahun | Bulan | 12 | 1949.2 = Februari 1949 |
| Kuartalan | Tahun | Kuartal | 4 | 1949.2 = Kuartal II 1949 |
| Harian (siklus mingguan) | Minggu | Hari | 7 | 1949.2 = Hari ke-2 minggu ke-1949 |
| Unit tunggal kustom | Apa saja | — | 1 | 1949.1 = unit ke-1949 |
Contoh
Contoh ini menggunakan set data AirPassengers, yang mencatat jumlah penumpang maskapai internasional bulanan dari tahun 1949 hingga 1960. Untuk detail set data, lihat AirPassengers (R datasets).
Persiapkan tabel input
Tabel input memiliki dua kolom: id (nomor urut) dan number (jumlah penumpang).
| id | number |
|---|---|
| 1 | 112 |
| 2 | 118 |
| 3 | 132 |
| 4 | 129 |
| 5 | 121 |
| ... | ... |
Buat tabel dan unggah data menggunakan client MaxCompute. Untuk instruksi instalasi, lihat Client MaxCompute (odpscmd). Untuk penggunaan perintah Tunnel, lihat Perintah Tunnel.
create table pai_ft_x13_arima_input(id bigint, number bigint);
tunnel upload xxxx/airpassengers.csv pai_ft_x13_arima_input -h true;Set data ini menggunakan frekuensi bulanan yang dimulai dari Januari 1949, sehingga start=1949.1 dan frequency=12. Tabel berikut menunjukkan bagaimana 14 nilai [1, 2, 3, ..., 15] akan dipetakan jika start=1949.3 dan frequency=12 (bulanan, dimulai Maret 1949):
| Tahun | Jan | Feb | Mar | Apr | Mei | Jun | Jul | Agt | Sep | Okt | Nov | Des |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1949 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ||
| 1950 | 11 | 12 | 13 | 14 | 15 |
Contoh berikut menunjukkan pemetaan deret waktu tambahan untuk granularitas kuartalan, mingguan, dan unit tunggal menggunakan urutan nilai yang sama [1, 2, 3, ..., 15]:
Kuartalan (frequency=4, start=1949.3)
| Tahun | Qtr1 | Qtr2 | Qtr3 | Qtr4 |
|---|---|---|---|---|
| 1949 | 1 | 2 | ||
| 1950 | 3 | 4 | 5 | 6 |
| 1951 | 7 | 8 | 9 | 10 |
| 1952 | 11 | 12 | 13 | 14 |
| 1953 | 14 | 15 |
Prediksi dimulai dari kuartal kedua tahun 1953.
Harian dengan siklus mingguan (frequency=7, start=1949.3)
| Minggu | Min | Sen | Sel | Rab | Kam | Jum | Sab |
|---|---|---|---|---|---|---|---|
| 1949 | 1 | 2 | 3 | 4 | 5 | ||
| 1950 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 1951 | 13 | 14 | 15 |
Prediksi dimulai dari hari keempat minggu ke-1951.
Unit tunggal (frequency=1, start=1949.1)
| Siklus | p1 |
|---|---|
| 1949 | 1 |
| 1950 | 2 |
| 1951 | 3 |
| 1952 | 4 |
| 1953 | 5 |
| 1954 | 6 |
| 1955 | 7 |
| 1956 | 8 |
| 1957 | 9 |
| 1958 | 10 |
| 1959 | 11 |
| 1960 | 12 |
| 1961 | 13 |
| 1962 | 14 |
| 1963 | 15 |
Prediksi dimulai pada tahun 1963.
Jalankan perintah PAI
Jalankan perintah berikut menggunakan komponen SQL Script atau ODPS SQL:
PAI -name x13_arima
-project algo_public
-DinputTableName=pai_ft_x13_arima_input
-DseqColName=id
-DvalueColName=number
-Dorder=3,1,1
-Dseasonal=0,1,1
-Dstart=1949.1
-Dfrequency=12
-Dperiod=12
-DpredictStep=12
-DoutputPredictTableName=pai_ft_x13_arima_out_predict
-DoutputDetailTableName=pai_ft_x13_arima_out_detailTabel output
outputPredictTableName — hasil prediksi
| Kolom | Deskripsi |
|---|---|
pdate | Tanggal prediksi. |
forecast | Nilai yang diprediksi. |
lower | Batas bawah interval kepercayaan (default: 95%). |
upper | Batas atas interval kepercayaan (default: 95%). |

outputDetailTableName — detail model
| Kolom | Deskripsi |
|---|---|
key | Jenis catatan: model (spesifikasi model), evaluation (metrik evaluasi), parameters (parameter pelatihan), atau log (log pelatihan). |
summary | Konten detail untuk key yang sesuai. |

FAQ
Mengapa semua hasil prediksi bernilai sama?
Model kembali ke model rata-rata, yang menghasilkan rata-rata data pelatihan untuk semua langkah prediksi. Hal ini terjadi ketika pelatihan gagal karena ketidakstabilan setelah differencing temporal, non-konvergensi, atau varians nol. Untuk melihat error pasti, buka Logview untuk pekerjaan tersebut dan periksa file stderr untuk node individual.
Bagaimana cara memilih nilai p, d, q, sp, sd, dan sq?
Jika Anda tidak yakin dengan pengaturan parameter, gunakan x13_auto_arima sebagai gantinya. Cukup tentukan batas atas untuk setiap orde, dan x13_auto_arima akan mencari nilai optimal secara otomatis.
Error: `Number of observations after differencing and/or conditional AR estimation is 9, which is less than the minimum series length required for the model estimated, 24`
Data pelatihan terlalu singkat untuk model yang ditentukan. Ubah parameter frequency atau tambahkan lebih banyak data historis.
Error: `Order of the MA operator is too large`
Dalam kebanyakan kasus, error ini terjadi karena data pelatihan tidak mencukupi. Tambahkan lebih banyak data pelatihan.
Error: `Series to be modelled and/or seasonally adjusted must have at least 3 complete years of data`
Ketika Anda menentukan parameter musiman (seasonal), input harus berisi minimal tiga tahun data lengkap.
Langkah selanjutnya
x13_auto_arima — secara otomatis memilih orde SARIMA dalam batas atas yang Anda tentukan
SQL Script — menjalankan perintah PAI dalam pipeline
Client MaxCompute (odpscmd) — mengunggah data ke tabel MaxCompute