Menentukan parameter (p, d, q) untuk pemodelan ARIMA

10

Saya cukup baru dalam hal statistik dan R. Saya ingin mengetahui proses untuk menentukan parameter ARIMA untuk dataset saya. Bisakah Anda membantu saya mencari tahu menggunakan R yang sama dan secara teoritis (jika mungkin)?

Rentang data dari Jan-12 hingga Mar-14 dan menggambarkan penjualan bulanan. Berikut kumpulan data:

99 58 52 83 94 73 97 83 86 63 77 70 87 84 60 105 87 93 110 71 158 52 33 68 82 88 84

Dan inilah trennya:

masukkan deskripsi gambar di sini

Data tidak menunjukkan tren, perilaku musiman atau siklus.

Raunak87
sumber

Jawaban:

9

Secara umum, gali ke dalam buku teks analisis deret waktu tingkat lanjut (buku pengantar biasanya akan mengarahkan Anda untuk hanya mempercayai perangkat lunak Anda), seperti Analisis Rangkaian Waktu oleh Box, Jenkins & Reinsel. Anda juga dapat menemukan detail tentang prosedur Box-Jenkins dengan googling. Perhatikan bahwa ada pendekatan lain selain Box-Jenkins, misalnya yang berbasis AIC.

Di R, Anda pertama-tama mengonversi data Anda menjadi objek ts(seri waktu) dan memberi tahu R bahwa frekuensinya adalah 12 (data bulanan):

require(forecast)
sales <- ts(c(99, 58, 52, 83, 94, 73, 97, 83, 86, 63, 77, 70, 87, 84, 60, 105, 87, 93, 110, 71, 158, 52, 33, 68, 82, 88, 84),frequency=12)

Anda dapat memplot fungsi autokorelasi (sebagian):

acf(sales)
pacf(sales)

Ini tidak menyarankan perilaku AR atau MA.

Kemudian Anda cocok dengan model dan memeriksanya:

model <- auto.arima(sales)
model

Lihat ?auto.arimabantuan. Seperti yang kita lihat, auto.arimapilih model sederhana (0,0,0), karena tidak melihat tren atau musiman atau AR atau MA dalam data Anda. Akhirnya, Anda dapat memperkirakan dan merencanakan rangkaian waktu dan perkiraan:

plot(forecast(model))

ramalan cuaca

Lihatlah ?forecast.Arima(perhatikan ibukota A!).

Buku teks online gratis ini merupakan pengantar yang bagus untuk analisis deret waktu dan perkiraan menggunakan R. Sangat direkomendasikan.

Stephan Kolassa
sumber
Halo Stephan, saya telah menambahkan data dan plot untuk dataset saya. Seperti yang Anda lihat bahwa saya hanya memiliki 27 titik data, jadi saya menggunakan asap di sini. Bisakah Anda menyarankan sesuatu di sini.
Raunak87
Saya mengedit jawabannya. Seri Anda tidak menunjukkan banyak struktur, jadi sangat sedikit yang dapat Anda lakukan. Karena Anda pada dasarnya memiliki kebisingan dan sedikit lainnya, Anda mendapatkan interval prediksi yang besar.
Stephan Kolassa
4

Dua hal. Rangkaian waktu Anda adalah bulanan, Anda memerlukan setidaknya 4 tahun data untuk estimasi ARIMA yang masuk akal, sebagaimana tercermin 27 poin tidak memberikan struktur autokorelasi. Ini juga dapat berarti bahwa penjualan Anda dipengaruhi oleh beberapa faktor eksternal, bukannya berkorelasi dengan nilainya sendiri. Coba cari tahu faktor apa yang memengaruhi penjualan Anda dan apakah faktor itu sedang diukur. Kemudian Anda dapat menjalankan regresi atau VAR (Vector Autoregression) untuk mendapatkan perkiraan.

Jika Anda benar-benar tidak memiliki hal lain selain nilai-nilai ini, cara terbaik Anda adalah menggunakan metode smoothing eksponensial untuk mendapatkan perkiraan naif. Perataan eksponensial tersedia dalam R.

Kedua tidak melihat penjualan produk secara terpisah, penjualan dua produk mungkin berkorelasi misalnya peningkatan penjualan kopi dapat mencerminkan penurunan penjualan teh. gunakan informasi produk lainnya untuk meningkatkan perkiraan Anda.

Ini biasanya terjadi dengan data penjualan di ritel atau rantai pasokan. Mereka tidak menunjukkan banyak struktur autokorelasi dalam seri ini. Sementara di sisi lain metode seperti ARIMA atau GARCH biasanya bekerja dengan data pasar saham atau indeks ekonomi di mana Anda biasanya memiliki autokorelasi.

NG_21
sumber
3

Ini benar-benar sebuah komentar tetapi melebihi yang diizinkan jadi saya mempostingnya sebagai jawaban semu karena menyarankan cara yang benar untuk menganalisis data deret waktu. .

Fakta yang terkenal tetapi sering diabaikan di sini dan di tempat lain adalah bahwa ACF / PACF teoretis yang digunakan untuk merumuskan model tentatif ARIMA tidak menggunakan Pulsa / Pergeseran Tingkat / Pulsa Musiman / Pulsa Musiman / Tren Waktu Lokal. Selain itu itu menempatkan parameter konstan dan varians kesalahan konstan sepanjang waktu. Dalam hal ini, observasi ke-21 (nilai = 158) dengan mudah ditandai sebagai pencilan / Denyut nadi dan penyesuaian yang disarankan dari -80 menghasilkan nilai yang dimodifikasi dari 78. ACF / PACF yang dihasilkan dari seri yang dimodifikasi menunjukkan sedikit atau tidak ada bukti struktur stokastik (ARIMA). Dalam hal ini operasi berhasil tetapi pasien meninggal. Sampel ACF didasarkan pada kovarians / varians dan varians yang terlalu tinggi / kembung menghasilkan bias ke bawah pada ACF. Prof Keith Ord pernah menyebut ini sebagai "efek Alice in Wonderland"

IrishStat
sumber
2

Seperti yang telah ditunjukkan oleh Stephan Kolassa, tidak ada banyak struktur dalam data Anda. Fungsi autokorelasi tidak menyarankan struktur ARMA (lihat acf(sales), pacf(sales)) dan forecast::auto.arimatidak memilih perintah AR atau MA.

require(forecast)
require(tsoutliers)
fit1 <- auto.arima(sales, d=0, D=0, ic="bic")
fit1
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept
#        81.3704
#s.e.     4.4070

Namun demikian, perhatikan bahwa nol normalitas dalam residu ditolak pada tingkat signifikansi 5%.

JarqueBera.test(residuals(fit1))[[1]]
#X-squared = 12.9466, df = 2, p-value = 0.001544

Selain Catatan: JarqueBera.testdidasarkan pada fungsi yang jarque.bera.testtersedia dalam paket tseries.

Termasuk outlier aditif pada pengamatan 21 yang terdeteksi dengan tsoutliersmembuat normalitas dalam residu. Dengan demikian, estimasi intersep dan ramalan tidak terpengaruh oleh pengamatan terluar.

res <- tsoutliers::tso(sales, types=c("AO", "TC", "LS"), 
  args.tsmethod=list(ic="bic", d=0, D=0))
res
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept     AO21
#        78.4231  79.5769
#s.e.     3.3885  17.6072
#sigma^2 estimated as 298.5:  log likelihood=-115.25
#AIC=236.49   AICc=237.54   BIC=240.38
#Outliers:
#  type ind time coefhat tstat
#1   AO  21 2:09   79.58  4.52
JarqueBera.test(residuals(res$fit))[[1]]
#X-squared = 1.3555, df = 2, p-value = 0.5077
javlacalle
sumber
1
Tidak masuk akal untuk menggunakan tes Jarque Bera dengan , karena (i) itu bergantung pada perkiraan asimptotik yang tidak masuk sampai mencapai ratusan, dan (ii) tes hipotesis formal benar-benar menjawab pertanyaan yang salah (kita tahu datanya tidak akan benar-benar normal; pertanyaannya adalah seberapa buruk kita mungkin dipengaruhi oleh potensi ketidaknormalan, yang tidak bisa nn=12n
ditanyakan