Memperkirakan model yang sama dalam beberapa seri waktu


26

Saya memiliki latar belakang pemula dalam deret waktu (beberapa estimasi / perkiraan ARIMA) dan saya menghadapi masalah yang tidak sepenuhnya saya pahami. Bantuan apa pun akan sangat dihargai.

Saya menganalisis beberapa seri waktu, semua dalam interval waktu yang sama dan semua dari frekuensi yang sama, semua menggambarkan tipe data yang serupa. Setiap seri hanya satu variabel, tidak ada prediktor lain yang sesuai yang saya lihat.

Saya telah diminta untuk memperkirakan model tunggal yang menggambarkan SEMUA seri - misalnya, bayangkan saya dapat menemukan satu ARIMA (p, d, q) dengan pesanan, koefisien, dll yang sama yang dapat cocok dengan semua seri. Atasan saya tidak ingin saya memperkirakan setiap seri secara terpisah, juga tidak ingin saya melakukan semacam model VAR dengan dependensi di antara seri.

Pertanyaan saya adalah: apa yang akan saya sebut model seperti itu, dan bagaimana saya bisa memperkirakan / memperkirakannya? Jika lebih mudah bagi Anda untuk menggunakan contoh kode, saya berbicara SAS dan R.

Jawaban:


8

Anda bisa melakukan pencarian kisi: mulai dengan ARIMA (1,0,0) dan coba semua kemungkinan hingga ARIMA (5,2,5) atau sesuatu. Pasangkan model untuk setiap seri, dan perkirakan pengukuran kesalahan skala-independen seperti MAPE atau MASE (MASE mungkin akan lebih baik). Pilih model ARIMA dengan MASE rata-rata terendah di semua model Anda.

Anda dapat meningkatkan prosedur ini dengan memvalidasi silang pengukuran kesalahan Anda untuk setiap seri, dan juga dengan membandingkan hasil Anda dengan perkiraan naif .

Mungkin ide yang bagus untuk bertanya mengapa Anda mencari model tunggal untuk menggambarkan semua seri. Kecuali mereka dihasilkan oleh proses yang sama, ini sepertinya bukan ide yang bagus.


2
Terima kasih - saya akan coba ini. Saya setuju bahwa ini sepertinya bukan ide terbaik. Argumen yang saya dapatkan adalah bahwa setiap seri tidak memiliki pengamatan yang cukup (~ 28) untuk estimasi yang baik dan akan lebih kuat untuk memperkirakan semua seri. Saya tidak yakin saya setuju dengan argumen itu.
sparc_spread

21

Salah satu cara untuk melakukannya adalah dengan membangun seri waktu yang lama dengan semua data Anda, dan dengan urutan nilai yang hilang antara seri untuk memisahkannya. Misalnya, dalam R, jika Anda memiliki tiga seri ( x, ydan z) masing-masing dengan panjang 100 dan frekuensi 12, Anda dapat bergabung dengan mereka sebagai berikut

combined <- ts(c(x,rep(NA,56),y,rep(NA,56),z,rep(NA,56)),frequency=12)

Perhatikan bahwa jumlah nilai yang hilang dipilih untuk memastikan periode musiman dipertahankan. Saya telah menyelesaikan tahun terakhir dengan 8 nilai yang hilang dan kemudian menambahkan empat tahun yang hilang (48 nilai) sebelum seri berikutnya. Itu harus cukup untuk memastikan korelasi serial hilang di antara seri.

Kemudian Anda dapat menggunakan auto.arima()untuk menemukan model terbaik:

library(forecast)
fit <- auto.arima(combined)

Terakhir, Anda dapat menerapkan model gabungan untuk setiap seri secara terpisah untuk mendapatkan perkiraan:

fit.x <- Arima(x,model=fit)
fit.y <- Arima(y,model=fit)
fit.z <- Arima(z,model=fit)

5
+1, trik rapi. Dilihat oleh komentar OP untuk jawaban lain, saya akan menyarankan semacam model data panel, tapi ini jauh lebih baik.
mpiktas

Ini sangat membantu, sangat kami hargai. Bisakah Anda menjelaskan lebih banyak lagi: jumlah nilai yang hilang dipilih untuk memastikan periode musiman dipertahankan ? Maaf saya tidak sepenuhnya mengikuti - terima kasih.
sparc_spread

1
Jika ada musiman dalam data (seperti yang sering terjadi dengan pengamatan bulanan), Anda ingin seri panjang masih memiliki Januari 12 kelipatan 12, Februari 12 kelipatan 12, dan seterusnya. Kemudian, ketika model sedang dipilih, musiman dapat dimodelkan dengan tepat.
Rob Hyndman

3
Untuk menambah trik ini - Anda bisa menambahkan regressor eksternal (xreg) yang menunjukkan keanggotaan kategori. Ini akan menjelaskan cara terpisah untuk seri yang berbeda, sambil tetap menjaga koefisien lainnya yang sama.
Jameson Quinn

6

Memperkirakan model tunggal untuk beberapa seri waktu adalah bidang ekonometrik data panel . Namun dalam kasus Anda tanpa variabel penjelas @Rob jawaban Hyndman mungkin paling cocok. Namun jika ternyata rangkaian waktu berbeda (mengujinya, karena dalam kasus ini metode @Rob Hyndman harus gagal!), Tetapi struktur ARMA sama, maka Anda harus menggunakan Arellano-Bond (maaf wikipedia memiliki tidak ada halaman di atasnya, jadi cari di google) ketikkan estimator. Model dalam kasus itu adalah:

ysayat=αsaya+ρ1ysaya,t-1+...+ρhalysaya,t-hal+εsayat

sayaεsayatsaya


1
Sangat menghargai solusi Anda dan yang lainnya juga. Anda menyebutkan bahwa: Tetapi jika ternyata bahwa rangkaian waktu berbeda (mengujinya, karena dalam kasus ini metode @Rob Hyndman harus gagal!) Dapatkah Anda menjelaskan lebih lanjut mengapa ini? Terima kasih.
sparc_spread

2
@ sparc_spread, misalkan hanya dua seri. Satu dipusatkan pada sekitar 0 dengan varians 1 dan yang lainnya berpusat pada 1000 dengan varians 1. Lalu Jika kedua seri cocok menggunakan koefisien yang sama, itu berarti kita membatasi alpha_1 = alpha_2, sehingga prediksi untuk kedua seri akan ada di sekitar 500, sangat buruk. Pada dasarnya, memperlakukan semua seri sebagai bagian dari model yang sama mungkin memerlukan beberapa pemasukan kembali / normalisasi sebelum pemasangan model bersama.
zkurtz

4

Alternatif untuk pendekatan Rob Hyndman, untuk membuat satu seri data, adalah dengan menggabungkan data. Ini mungkin tepat jika seri waktu berganda Anda mewakili pembacaan bising dari satu set mesin yang merekam peristiwa yang sama. (Jika setiap seri waktu berada pada skala yang berbeda, Anda perlu menormalkan data terlebih dahulu.)

CATATAN: Anda masih berakhir dengan 28 pembacaan, hanya sedikit noise, jadi ini mungkin tidak sesuai untuk situasi Anda.

t1=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t2=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t3=(t1+t2)/2

masukkan deskripsi gambar di sini


Ini hanya akan bekerja jika semua sinyal serupa di alam (misalnya periodik) semua dalam fase - dalam contoh Anda jika dua gelombang sinus 180 derajat dari fase mereka akan benar-benar membatalkan!
tdc

3
Ya, rata-rata data Anda hanya sesuai ketika setiap seri tanggal dianggap mewakili data yang sama, dan (Anda senang berasumsi) mereka hanya berbeda karena masing-masing memiliki noise yang berbeda.
Darren Cook

1

Saya akan melihat model Markov yang tersembunyi dan jaringan Bayesian yang dinamis. Mereka memodelkan data deret waktu. Mereka juga dilatih menggunakan berbagai contoh rangkaian waktu, misalnya serangkaian waktu tekanan darah ganda dari berbagai individu. Anda harus menemukan paket dalam Python dan R untuk membangunnya. Anda mungkin harus menentukan struktur untuk model ini.


0

Saya mencoba melakukan hal yang sama. Rupanya, ada sesuatu yang disebut model 'Multivariate AutoRegressive' di luar sana. Saya sudah menemukan referensi untuk itu, tetapi tidak bagaimana menggunakannya. Berdasarkan kertas yang ditautkan, saya kira itu telah diterapkan di R.

http://journal.r-project.org/archive/2012-1/RJournal_2012-1_Holmes~et~al.pdf


Pendekatan standar adalah autoregresi vektor dan ada paket R yang disebut var .
Xi'an

Apakah autoregesi vektor berbeda dari autoregresi pada data panel? Atau apakah ini masalah bidang yang berbeda, nama yang berbeda? Paket PLM disarankan untuk data panel. cran.r-project.org/web/packages/plm/vignettes/plm.pdf clidyn.ethz.ch/papers/arfit.pdf
Mox
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.