Saya mengerti kita harus menggunakan ARIMA untuk pemodelan seri waktu non-stasioner. Juga, semua yang saya baca mengatakan ARMA seharusnya hanya digunakan untuk seri waktu stasioner.
Apa yang saya coba pahami adalah, apa yang terjadi dalam praktik ketika salah mengklasifikasikan model, dan berasumsi d = 0
untuk deret waktu yang non-stasioner? Sebagai contoh:
controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)
data kontrol terlihat seperti ini:
[1] 0.0000000 0.1240838 -1.4544087 -3.1943094 -5.6205257
[6] -8.5636126 -10.1573548 -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515 -9.3330560
[36] -7.5676563 -6.3691600 -6.8471371 -7.5982880 -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890
Dengan asumsi saya tidak tahu datanya ARIMA(1,1,1)
, saya mungkin akan melihatnya pacf(controlData)
.
Lalu saya menggunakan Dickey-Fuller untuk melihat apakah datanya tidak stasioner:
require('tseries')
adf.test(controlData)
# Augmented Dickey-Fuller Test
#
# data: controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary
adf.test(controlData, k = 1)
# Augmented Dickey-Fuller Test
#
#data: controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary
Jadi, saya mungkin berasumsi bahwa data tersebut adalah ARIMA (2,0, *) Kemudian gunakan auto.arima(controlData)
untuk mencoba mendapatkan yang terbaik?
require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData
# ARIMA(2,0,1) with non-zero mean
#
# Coefficients:
# ar1 ar2 ma1 intercept
# 1.4985 -0.5637 0.6427 -11.8690
# s.e. 0.1508 0.1546 0.1912 3.2647
#
# sigma^2 estimated as 0.8936: log likelihood=-64.01
# AIC=138.02 AICc=139.56 BIC=147.05
Jadi, meskipun data masa lalu dan masa depan adalah ARIMA (1,1,1), saya mungkin tergoda untuk mengklasifikasikannya sebagai ARIMA (2,0,1). tsdata(auto.arima(controlData))
terlihat bagus juga.
Inilah yang akan ditemukan oleh pemodel informasi:
informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData
# ARIMA(1,1,1)
#
# Coefficients:
# ar1 ma1
# 0.4936 0.6859
# s.e. 0.1564 0.1764
#
# sigma^2 estimated as 0.9571: log likelihood=-62.22
# AIC=130.44 AICc=131.04 BIC=135.79
1) Mengapa kriteria informasi ini lebih baik daripada model yang dipilih oleh auto.arima(controlData)
?
Sekarang, saya hanya membandingkan data nyata, dan 2 model:
plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")
2) Bermain sebagai penasihat iblis, konsekuensi apa yang akan saya bayarkan dengan menggunakan ARIMA (2, 0, 1) sebagai model? Apa risiko dari kesalahan ini?
3) Saya lebih khawatir tentang implikasi untuk prediksi ke depan multi-periode. Saya menganggap mereka akan kurang akurat? Saya hanya mencari beberapa bukti.
4) Apakah Anda menyarankan metode alternatif untuk pemilihan model? Apakah ada masalah dengan alasan saya sebagai pemodel "tidak tahu"?
Saya benar-benar ingin tahu apa konsekuensi lain dari kesalahan klasifikasi semacam ini. Saya telah mencari beberapa sumber dan tidak dapat menemukan apa pun. Semua literatur yang saya dapat temukan hanya menyentuh pada subjek ini, sebagai gantinya hanya menyatakan data harus stasioner sebelum melakukan ARMA, dan jika tidak stasioner, maka perlu dibedakan d kali.
Terima kasih!