Bagaimana menafsirkan dan melakukan peramalan menggunakan paket tsoutliers dan auto.arima

9

Saya sudah mendapatkan data bulanan dari tahun 1993 hingga 2015 dan ingin melakukan perkiraan data ini. Saya menggunakan paket tsoutliers untuk mendeteksi outliers, tetapi saya tidak tahu bagaimana cara melanjutkan perkiraan dengan set data saya.

Ini kode saya:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

Ini adalah output saya dari paket tsoutliers

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

Ini plot saya

Saya punya pesan peringatan ini juga.

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

Keraguan:

  1. Jika saya tidak salah, paket tsoutliers akan menghapus outlier yang dideteksi dan melalui penggunaan dataset dengan outlier dihapus, itu akan memberi kita model arima terbaik yang cocok untuk kumpulan data, apakah itu benar?
  2. Set data seri penyetelan digeser ke bawah banyak karena penghapusan pergantian level, dll. Bukankah ini berarti bahwa jika peramalan dilakukan pada seri yang disesuaikan, output ramalan akan sangat tidak akurat, karena data yang lebih baru sudah lebih dari 12, sementara data yang disesuaikan menggesernya menjadi sekitar 7-8.
  3. Apa arti pesan peringatan 4 dan 5? Apakah ini berarti tidak dapat melakukan auto.arima menggunakan seri yang disesuaikan?
  4. Apa arti [12] dalam ARIMA (0,1,0) (0,0,1) [12] artinya? Apakah ini hanya frekuensi / periodisitas dari dataset saya, yang saya set ke bulanan? Dan apakah ini juga berarti bahwa seri data saya juga musiman?
  5. Bagaimana cara mendeteksi musiman di set data saya? Seperti dari visualisasi plot seri waktu, saya tidak dapat melihat tren yang jelas, dan jika saya menggunakan fungsi penguraian, itu akan menganggap bahwa ada tren musiman? Jadi apakah saya hanya percaya apa yang dikatakan para tsoutlier kepada saya, di mana ada tren musiman, karena ada MA pesanan 1?
  6. Bagaimana saya terus melakukan peramalan dengan data ini setelah mengidentifikasi pencilan ini?
  7. Bagaimana cara memasukkan pencilan ini ke model peramalan lainnya - Penghalusan Eksponensial, ARIMA, Model Strutural, Random Walk, theta? Saya yakin saya tidak bisa menghapus outlier karena ada pergeseran level, dan jika saya hanya mengambil data seri yang disesuaikan, nilainya akan terlalu kecil, jadi apa yang harus saya lakukan?

Apakah saya perlu menambahkan outlier ini sebagai regressor di auto.arima untuk perkiraan? Bagaimana cara kerjanya?

Ted
sumber

Jawaban:

5

Komentar-komentar ini terlalu panjang ... dengan demikian merupakan "JAWABAN"

  1. Anda salah itu tidak menyesuaikan dan kemudian mengidentifikasi ARIMA (seperti yang dilakukan AUTOBOX). Diperkirakan tidak ada penyesuaian intervensi dan kemudian bergegas untuk mengidentifikasi model ARIMA yang berpotensi dipengaruhi oleh non-pengobatan anomali. Seringkali seseorang perlu menyesuaikan untuk seri kausal yang ditentukan pengguna dan / atau struktur deterministik yang tidak ditentukan (pencilan / pergeseran level, pulsa musiman, tren waktu lokal) sebelum mengidentifikasi struktur ARIMA. Lihat contoh ini tentang dignosis yang buruk yang membuat kesalahan dengan tidak perlu membedakan seri asli sementara keadaan alami yang benar / benar tidak memerlukan perbedaan apa pun. Non-stasioneritas tidak selalu menyiratkan perlunya perbedaan tetapi sering dapat menyarankan de-arti di sini penyesuaian untuk perubahan tingkat / rata-rata

  2. Peramalan yang benar selalu dilakukan dari seri aslinya sehingga ramalan tersebut harus dipercaya mengingat sejarahnya.

  3. Saya tidak tahu karena saya tidak aktif menggunakan prosedur ini. Saya merekomendasikan hal ini kepada Anda karena Anda meminta solusi berbasis r gratis BUKAN karena saya pikir itu baik atau cukup karena pemodelan ARIMA adalah proses pengecekan ulang mandiri (multi-tahap) berulang.

  4. model ini menyarankan mereka berpikir bahwa data memiliki komponen musiman ma (12) TETAPI ini hanya mencerminkan kebutuhan untuk pulsa musiman.

  5. konsep tren musiman paling tidak jelas.

  6. Jawaban saya akan terlalu jelas dan tidak menonjolkan diri

IrishStat
sumber
1
tu sangat banyak @ricardo
IrishStat
4

Paket 'tsoutliers' mengimplementasikan prosedur yang dijelaskan oleh Chen dan Liu (1993) [1]. Deskripsi paket dan prosedurnya juga diberikan dalam dokumen ini .

Secara singkat, prosedur ini terdiri dari dua tahap utama:

  1. Deteksi pencilan pada model ARIMA yang dipilih.
  2. Pilih dan / atau ganti model ARIMA termasuk outlier yang terdeteksi pada langkah sebelumnya dan hapus outlier yang tidak signifikan pada fit baru.

Seri ini kemudian disesuaikan untuk pencilan yang terdeteksi dan tahap (1) dan (2) diulang sampai tidak ada pencilan yang terdeteksi atau sampai jumlah iterasi maksimum tercapai.


Tahap pertama (pendeteksian outlier) juga merupakan proses berulang. Pada akhir setiap iterasi residual dari model ARIMA disesuaikan untuk outlier yang terdeteksi dalam tahap ini. Proses ini diulangi sampai tidak ada lagi outlier yang ditemukan atau sampai jumlah iterasi maksimum tercapai (secara default 4 iterasi). Tiga peringatan pertama yang Anda dapatkan terkait dengan loop batin ini, yaitu, panggung keluar setelah empat iterasi.

Anda dapat meningkatkan jumlah iterasi maksimum melalui argumen maxit.iloopdalam fungsi tso. Dianjurkan untuk tidak mengatur jumlah iterasi yang tinggi pada tahap pertama dan membiarkan proses beralih ke tahap kedua di mana model ARIMA dipasang kembali atau dipilih lagi.


Peringatan 4 dan 5 terkait dengan proses pemasangan model ARIMA dan memilih model, masing-masing untuk fungsi stats::arimadan forecast:auto.arima. Algoritma yang memaksimalkan fungsi kemungkinan tidak selalu menyatu ke solusi. Anda dapat menemukan beberapa detail yang terkait dengan masalah ini, misalnya, di pos ini dan pos ini


[1] Chung Chen dan Lon-Mu Liu (1993) "Estimasi Bersama Parameter Model dan Efek Outlier dalam Time Series", Jurnal Asosiasi Statistik Amerika , 88 (421), hlm. 284-297. DOI: 10.1080 / 01621459.1993.10594321 .

javlacalle
sumber
berapa banyak waktu yang diperlukan untuk menjalankan tso ()?
Anoop Toffy
@AnoopToffy tergantung pada panjang data, periodisitas, dll. Untuk data tahunan, bulanan, triwulanan, ukuran sampel sekitar 120 pengamatan dan dinamika yang dapat ditangkap secara wajar oleh model ARIMA, algoritme akan berjalan paling banyak sekitar 10 detik (biasanya jauh lebih sedikit).
javlacalle