Saya mencoba melakukan analisis deret waktu dan saya baru di bidang ini. Saya memiliki hitungan harian acara dari 2006-2009 dan saya ingin menyesuaikan model deret waktu untuk itu. Inilah kemajuan yang telah saya buat:
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)
Hasil plot yang saya dapatkan adalah:
Untuk memverifikasi apakah ada musiman dan tren dalam data atau tidak, saya mengikuti langkah-langkah yang disebutkan dalam posting ini :
ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal
dan di blog Rob J Hyndman :
library(fma)
fit1 <- ets(x)
fit2 <- ets(x,model="ANN")
deviance <- 2*c(logLik(fit1) - logLik(fit2))
df <- attributes(logLik(fit1))$df - attributes(logLik(fit2))$df
#P value
1-pchisq(deviance,df)
Kedua kasus menunjukkan bahwa tidak ada musim.
Ketika saya memplot ACF & PACF dari seri ini, inilah yang saya dapatkan:
Pertanyaan saya adalah:
Apakah ini cara untuk menangani data deret waktu harian? Halaman ini menunjukkan bahwa saya harus melihat pola mingguan dan tahunan tetapi pendekatannya tidak jelas bagi saya.
Saya tidak tahu bagaimana melanjutkan setelah saya memiliki plot ACF dan PACF.
Bisakah saya menggunakan fungsi auto.arima?
cocok <- arima (myts, order = c (p, d, q)
***** Hasil Auto.Arima yang Diperbarui ******
Ketika saya mengubah frekuensi data menjadi 7 menurut komentar Rob Hyndman di sini , auto.arima memilih model dan output ARIMA musiman:
Series: timeSeriesObj
ARIMA(1,1,2)(1,0,1)[7]
Coefficients:
ar1 ma1 ma2 sar1 sma1
0.89 -1.7877 0.7892 0.9870 -0.9278
s.e. NaN NaN NaN 0.0061 0.0162
sigma^2 estimated as 21.72: log likelihood=-4319.23
AIC=8650.46 AICc=8650.52 BIC=8682.18
****** Cek Musiman Terkini ******
Ketika saya menguji musiman dengan frekuensi 7, ini menghasilkan True tetapi dengan musiman 365,25, itu output salah. Apakah ini cukup untuk menyimpulkan kurangnya musiman musiman?
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
pengembalian:
True
sementara
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
pengembalian:
False
sumber
str(x)
dihasilkan?R
sederhana tidak memiliki kemampuan untuk menanganinya. Saya akan mencari solusi komersial jika ada inventaris tinggi / biaya pembuatan yang terlibat untuk produk yang Anda coba ramalkan.R
memiliki batasan parah untuk tugas perkiraan seperti milik Anda. Lihatlah pertanyaan tentang perkiraan harian di tempat lain di situs ini.Jawaban:
ACF dan PACF Anda menunjukkan bahwa Anda setidaknya memiliki musiman musiman, yang ditunjukkan oleh puncak pada keterlambatan 7, 14, 21 dan seterusnya.
Anda mungkin juga memiliki musim musiman, meskipun itu tidak jelas dari rangkaian waktu Anda.
Taruhan terbaik Anda, mengingat kemungkinan adanya beberapa musiman, mungkin merupakan
tbats
model, yang secara eksplisit memodelkan beberapa jenis musiman. Muatforecast
paket:Output Anda dari
str(x)
menunjukkan bahwax
belum membawa informasi tentang berpotensi memiliki beberapa musiman. Lihatlah?tbats
, dan bandingkan output daristr(taylor)
. Tetapkan musiman:Sekarang Anda dapat memuat
tbats
model. (Bersabarlah, ini mungkin perlu waktu.)Akhirnya, Anda dapat memperkirakan dan merencanakan:
Anda tidak boleh menggunakan
arima()
atauauto.arima()
, karena ini hanya dapat menangani satu jenis musiman: baik mingguan atau tahunan. Jangan tanya saya apa yangauto.arima()
akan dilakukan pada data Anda. Mungkin memilih salah satu musiman, atau mungkin mengabaikannya sama sekali.EDIT untuk menjawab pertanyaan tambahan dari komentar:
Menghitung model pada data bulanan mungkin bisa dilakukan. Maka Anda dapat, misalnya, membandingkan AIC antara model dengan dan tanpa musiman.
Namun, saya lebih suka menggunakan sampel penahan untuk menilai model peramalan. Tahan 100 poin data terakhir. Pasangkan model dengan musiman musiman dan mingguan untuk sisa data (seperti di atas), lalu paskan dengan musiman musiman hanya mingguan, misalnya, menggunakan
auto.arima()
padats
denganfrequency=7
. Prakiraan menggunakan kedua model ke dalam periode ketidaksepakatan. Periksa mana yang memiliki kesalahan lebih rendah, menggunakan MAE, MSE atau apa pun yang paling relevan dengan fungsi kerugian Anda. Jika ada sedikit perbedaan antara kesalahan, ikuti model yang lebih sederhana; jika tidak, gunakan yang dengan kesalahan lebih rendah.Bukti puding ada di makan, dan bukti dari model deret waktu dalam ramalan.
Untuk memperbaiki masalah, jangan gunakan sampel penahan tunggal (yang mungkin menyesatkan, mengingat uptick di akhir seri Anda), tetapi gunakan prakiraan asal bergulir, yang juga dikenal sebagai "validasi silang serangkaian waktu" . (Saya sangat merekomendasikan bahwa seluruh buku teks peramalan online gratis .
Model ARIMA standar menangani musiman dengan perbedaan musiman. Untuk data bulanan musiman, Anda tidak akan memodelkan deret waktu mentah, tetapi deret waktu perbedaan antara Maret 2015 dan Maret 2014, antara Februari 2015 dan Februari 2014 dan seterusnya. (Untuk mendapatkan prakiraan pada skala asli, tentu saja Anda perlu mengabaikannya lagi.)
Tidak ada cara langsung yang jelas untuk memperluas ide ini ke beberapa musiman.
Tentu saja, Anda dapat melakukan sesuatu menggunakan ARIMAX, misalnya, dengan memasukkan boneka bulanan untuk memodelkan musiman tahunan, lalu memodelkan residu menggunakan ARIMA musiman mingguan. Jika Anda ingin melakukan ini di R, gunakan
ts(x,frequency=7)
, buat matriks boneka bulanan dan masukkan itu ke dalamxreg
parameterauto.arima()
.Saya tidak ingat publikasi apa pun yang secara khusus memperluas ARIMA ke beberapa musiman, meskipun saya yakin seseorang telah melakukan sesuatu di sepanjang baris dalam paragraf saya sebelumnya.
sumber
R
, karenaR
tidak memiliki kemampuan untuk menangani ARIMA multiseasonal.tbats
model yang mirip.Cara terbaik untuk mendekomposisi data musiman menggunakan paket R yang ada adalah ceemdan () di Rlibeemd. Teknik ini mengekstrak musiman dari beberapa periode. Standarnya bekerja dengan baik. Ia menggunakan transformasi Hilbert-Huang alih-alih transformasi Fourier. Transformasi Fourier memiliki kelemahan yang parah karena hanya dapat menangani data linear dan stasioner ketika sebagian besar rangkaian minat tidak. Misalnya, jalan acak y_t = y_ {t-1} + e_t adalah jalan acak paling sederhana dan sering dijumpai. Metode lain mempertahankan amplitudo variasi musiman tetap ketika sering bervariasi dalam praktiknya.
sumber
Pertanyaan yang Anda ajukan telah dibahas dalam Perkiraan R Time Series: Pertanyaan tentang output saya . Harap perhatikan dengan seksama jawaban terinci saya dan semua komentar dalam diskusi termasuk yang ke pertanyaan awal karena saya percaya mereka relevan dengan masalah Anda. Anda mungkin benar-benar mengambil data yang disediakan di pos dan menggunakannya sebagai momen pengajaran untuk diri sendiri. Gunakan seluruh diskusi sebagai primer untuk apa yang harus Anda lakukan.
sumber