Mensimulasikan jalur sampel perkiraan dari model tbats

8

Menggunakan paket ramalan yang sangat baik oleh Rob Hyndman, saya menemukan perlunya tidak hanya memiliki interval prediksi, tetapi untuk mensimulasikan sejumlah jalur masa depan, mengingat pengamatan masa lalu dari serangkaian waktu dengan musiman kompleks. Ada sesuatu untuk deret waktu yang kurang kompleks dengan satu atau dua musiman saja (simulate.ets () dalam paket perkiraan), tetapi dalam kasus saya, saya akan memerlukan yang setara dengan simulate.ets () untuk model tbats yang lebih kompleks.

Saya berasumsi bahwa data yang diperlukan untuk membuat jalur seperti itu sudah ada di objek fit, namun kemungkinan untuk membuat jalur sampel tampaknya tidak dapat diakses secara langsung. Oleh karena itu, saya menemukan solusi naif dan ingin tahu, apakah pendekatan ini benar.

require(forecast)
fit = bats(test,use.parallel=T,use.damped.trend=F,use.trend=T,seasonal.periods=seasonal.periods)

Secara naif, saya membayangkan bahwa jalur sampel dapat dibangun dengan menggunakan perkiraan titik dari

fit 

> forecast(fit)
         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
1960.016       24.48576 23.82518 25.14633 23.47550 25.49602
1960.032       24.79870 23.88004 25.71735 23.39374 26.20366
1960.048       25.31743 24.39878 26.23608 23.91247 26.72239
1960.065       25.69254 24.77389 26.61120 24.28759 27.09750 
1960.081       26.06863 25.14998 26.98729 24.66367 27.47359
1960.097       26.43215 25.51350 27.35080 25.02719 27.83711
1960.113       26.77674 25.85809 27.69540 25.37179 28.18170

dan hanya menambahkan nilai yang diambil secara acak dari prosedur pemasangan model.

> fit$errors
Time Series:
Start = c(1959, 2) 
End = c(1960, 1) 
Frequency = 365 
  [1]  0.140656913 -0.455335141 -0.558989185  1.697532911 -0.114406022  0.366182718 -0.377056927  0.396144296

Karenanya, dengan

prediction = forecast(fit)
errors = fit$errors

path = prediction$mean + sample(errors, size = length(prediction$mean))
plot(ts(path))

satu jalur sampel dapat dibangun.

masukkan deskripsi gambar di sini

Apakah ini cara yang valid untuk membangun jalur sampel? Jika tidak, apa cara yang benar?

Terima kasih banyak atas bantuannya!

Peter Lustig
sumber

Jawaban:

2

Tidak, metode itu tidak berlaku secara umum.

Ini contoh sederhana dan ilustratif. Anggap Anda memiliki jalan acak tanpa penyimpangan:

Yt=Yt-1+εt
εtN(0,1)

Proses ini termasuk dalam kelas TBATS (hanya model ETS tipe "ANN" dengan , tanpa musiman yang kompleks, atau transformasi Box-Cox, atau kesalahan ARMA).α=1

Begini tampilannya jika Anda menggunakan metode Anda pada data yang disimulasikan:

masukkan deskripsi gambar di sini

"Jalur simulasi" datar dan memiliki varian kecil, sedangkan data asli akan sedikit menyimpang dari tingkat rata-rata. Itu tidak "terlihat" seperti data asli sama sekali.

Jika kita mengulangi prosedur berkali-kali dan menghitung kuantil empiris untuk 95% tengah distribusi di setiap cakrawala, Anda akan melihat bahwa mereka salah dibandingkan dengan interval prediksi yang dilaporkan oleh forecast.tbats(jika metode ini bekerja, mereka harus cocok dengan luar, interval abu-abu):

masukkan deskripsi gambar di sini

Banyak model deret waktu dapat dilihat sebagai transformasi dari urutan variabel acak yang tidak berkorelasi; transformasi yang tepat tergantung pada model. Diberikan transformasi spesifik, Anda biasanya dapat mengambil residu (sebut saja ), sampel ulang, dan kemudian menerapkan transformasi ini untuk mensimulasikan dari proses yang sama.εt^

Misalnya, jalan acak mengubah urutan variabel tidak berkorelasi dengan rekursi yang disebutkan di atas (jumlah kumulatif). Jika seri asli Anda berakhir pada , Anda dapat mencicipi , dari , dan menerapkan rekursi yang sama untuk dapatkan nilai simulasi untuk , seperti ini:εtTεT+1{ε1^,...,εT^}YT+1

YT+1=YT+εT+1

Jika Anda menghitung kuantil seperti sebelumnya, Anda harus mendekati area abu-abu.

Secara umum, oleh karena itu, jenis bootstrap berbasis model ini memerlukan kode yang sedikit berbeda untuk model yang berbeda, untuk melakukan transformasi yang berbeda pada di-resampled . Fungsi menangani ini untuk Anda untuk kelas ETS, tetapi masih ada tampaknya tidak setara untuk TBATS dalam paket, sejauh yang saya tahu.εtsimulate.ets

Chris Haug
sumber
Adakah rekomendasi tentang cara melakukan ini untuk TBATS tanpa perlu mengarungi pembuatan simulate.tbatsmetode?
Bryan Shalloway
1
Secara pribadi saya belum memiliki kebutuhan untuk itu dan saya tidak tahu implementasi yang ada, tetapi harus relatif mudah untuk diterapkan. Anda dapat menggambar dari atau dengan meng-resampling , seperti dijelaskan di atas. Kemudian hanya melewati mereka melalui rekursi model. Perhatikan bahwa ini akan memberi Anda sampel dari saja, jadi tidak termasuk parameter ketidakpastian, tetapi interval prediksi yang dikutip jarang dilakukan. εTN(0,σ^2)ε^sayahal(YT+1,...,YT+h|Y1,...,YT,θ^)
Chris Haug
-2

Ini mungkin jawaban yang sangat terlambat tetapi saya tidak mengerti mengapa tidak.

Pendekatan Anda tampaknya benar. Tapi, ada cara yang lebih mudah untuk melakukannya.

Anda telah menetapkan nama variabel untuk perkiraan Anda. Anda hanya perlu melakukannya plot(prediction). Dengan menambahkan variabel hyang merupakan jumlah periode perkiraan prediction, Anda dapat mengontrol panjang perkiraan. Misalnya, bisa dibilang prediction <- forecast(fit, h = 48). Perhatikan bahwa nilai htergantung pada seberapa jauh ke masa depan yang ingin Anda lihat.

Mustafa Hasanbulli
sumber
1
Saya tidak tertarik dengan plot itu sendiri, tetapi memiliki akses ke serangkaian perkiraan.
Peter Lustig