Bagaimana cara menentukan Forecastability of time series?

10

Salah satu masalah penting yang dihadapi oleh peramal adalah apakah seri yang diberikan dapat diperkirakan atau tidak?

Saya menemukan sebuah artikel berjudul " Entropi sebagai Indikator A Priori dari Kemampuan Prakiraan " oleh Peter Catt yang menggunakan Perkiraan Entropi (ApEn) sebagai ukuran relatif untuk menentukan seri waktu tertentu yang dapat diperkirakan.

Artikel itu mengatakan,

"Nilai ApEn yang lebih kecil menunjukkan peluang yang lebih besar bahwa satu set data akan diikuti oleh data yang serupa (keteraturan). Sebaliknya, nilai ApEn yang lebih besar menunjukkan kemungkinan lebih rendah untuk mengulangi data yang serupa (ketidakteraturan). Oleh karena itu, nilai yang lebih besar membawa lebih banyak gangguan , keacakan dan kompleksitas sistem. "

Dan diikuti oleh rumus matematika untuk menghitung ApEn. Ini adalah pendekatan yang menarik karena memberikan nilai numerik yang dapat digunakan untuk menilai perkiraan dalam arti relatif. Saya tidak tahu apa artinya Perkiraan Entropi, saya membaca lebih banyak tentang itu.

Ada paket yang disebut pracma di Ryang memungkinkan Anda menghitung Apen. Untuk tujuan ilustrasi, saya menggunakan 3 seri waktu yang berbeda dan menghitung angka ApEn.

  1. Seri 1: Seri waktu AirPassenger yang terkenal - sangat deterministik dan kita harus dapat memperkirakan dengan mudah.
  2. Seri 2: Sunspot Time Series - terdefinisi dengan sangat baik tetapi harus lebih mudah diprediksi dibandingkan seri 1.
  3. Seri 3: Nomor Acak Tidak ada cara untuk meramalkan seri ini.

Jadi jika kita menghitung ApEn, Seri 1 harus kurang dari Seri 2 harus sangat sangat kurang Seri 3.

Di bawah ini adalah cuplikan R yang menghitung ApEn untuk ketiga seri.

library("pracma")
> series1 <- approx_entropy(AirPassengers)
> series1
[1] 0.5157758
> series2 <- approx_entropy(sunspot.year)
> series2
[1] 0.762243
> series3 <- approx_entropy(rnorm(1:30))
> series3
[1] 0.1529609

Ini bukan yang saya harapkan. Seri acak memiliki angka yang lebih rendah daripada seri AirPassenger yang didefinisikan dengan baik. Bahkan jika saya meningkatkan angka acak menjadi 100, saya masih mendapatkan yang berikut ini yang kurang dari seri 2 / Sunspot.yealry yang didefinisikan dengan baik.

> series3 <- approx_entropy(rnorm(1:100))
> series3
[1] 0.747275

Di bawah ini adalah pertanyaan saya:

  1. Ada 2 parameter dalam menghitung ApEn ( mdan r)? Cara menentukannya. Saya menggunakan default pada Rkode di atas.
  2. Apa yang saya lakukan salah yang menunjukkan bahwa salah bahwa ApEn lebih rendah untuk angka acak vs seri yang didefinisikan dengan baik seperti sunspot.yearly.
  3. Haruskah saya menasionalisasi / menurunkan seri dan kemudian memperkirakan ApEn. Namun penulis telah menerapkan ApEn langsung ke seri.
  4. Apakah ada cara lain untuk menentukan apakah seri tersebut dapat diperkirakan?
peramal cuaca
sumber
Seperti yang dinyatakan dalam artikel perkiraan entropi tidak boleh digunakan pada deret waktu singkat, N <200. Lebih penting lagi, artikel menggunakan sampel entropi bukan perkiraan entropi. Pracma mengandung keduanya. Terima kasih
Apakah ini menjelaskan variabel penjelas? Misalnya, jika Anda memperkirakan pengurangan akun perusahaan, itu mungkin berkorelasi dengan pengeluaran pemasaran, dan pengeluaran itu sangat dapat diperkirakan, bahkan, itu direncanakan beberapa bulan ke depan. Bagaimana ini akan dipertanggungjawabkan dalam pendekatan yang diusulkan?
Aksakal
@Aksakal, tidak ada variabel penjelas. Saya sedang mencari peramalan runtun waktu univariat skala besar (tanpa variabel penjelas) di mana kita membutuhkan ukuran objektif untuk menilai perkiraan. Juga, dalam banyak contoh, peramalan univariat jauh lebih akurat daripada model yang dibuat dengan variabel penjelas.
peramal
1
Kemungkinan duplikat dari Menilai prakiraan seri waktu
Tim
1
Perasaan saya adalah bahwa ini adalah pertanyaan yang jauh lebih sempit daripada duplikat yang disarankan. Voting biarkan terbuka, tetapi sarankan OP mempertimbangkan judul yang lebih spesifik untuk menghindari membingungkan keduanya. Katakan, "Bagaimana cara menentukan perkiraan seri waktu menggunakan perkiraan entropi ?"
Sean Easter

Jawaban:

7

Parameter mdan r, yang terlibat dalam perhitungan perkiraan entropi (ApEn) dari deret waktu, adalah panjang jendela (urutan) dan toleransi (nilai filter) , yang sesuai. Bahkan, dari segi m, rserta N(jumlah titik data), Apen yang didefinisikan sebagai "logaritma natural dari prevalensi relatif pola berulang dari panjang mdibandingkan dengan mereka yang panjang m + 1" (Balasis, Daglis, Anastasiadis & Eftaxias 2011 , hal. 215):

ApEn(m,r,N)=Φm(r)Φm+1(r),

where 

Φm(r)=ΣilnCim(r)/(Nm+1)

Oleh karena itu, tampak bahwa mengubah toleransi rmemungkinkan untuk mengontrol granularity (temporal) dari penentuan entropi deret waktu. Namun demikian, menggunakan nilai default untuk keduanya mdan rparameter dalam pracmapanggilan fungsi entropi berfungsi dengan baik. Satu-satunya perbaikan yang perlu dilakukan untuk melihat hubungan nilai entropi yang benar untuk ketiga seri waktu (entropi yang lebih rendah untuk seri yang lebih jelas, entropi yang lebih tinggi untuk lebih banyak data acak) adalah meningkatkan panjang vektor data acak :

 library(pracma)
 set.seed(10)
 all.series <- list(series1 = AirPassengers,
                    series2 = sunspot.year,
                    series3 = rnorm(500)) # <== size increased
 sapply(all.series, approx_entropy)
  series1   series2   series3 
  0.5157758 0.7622430 1.4741971 

Hasilnya seperti yang diharapkan - sebagai prediktabilitas fluktuasi menurun dari yang paling ditentukan series1untuk sebagian besar acak series 3, entropi mereka akibatnya meningkatkan: ApEn(series1) < ApEn(series2) < ApEn(series3).

Dalam kaitan dengan lainnya langkah-langkah dari forecastability , Anda mungkin ingin memeriksa berarti kesalahan berskala mutlak (Mase) - lihat diskusi ini untuk lebih jelasnya. Analisis komponen diramalkan juga tampaknya menjadi menarik dan baru pendekatan untuk menentukan forecastability dari time series. Dan, diharapkan, ada Rpaket untuk itu, juga - ForeCA .

library(ForeCA)
sapply(all.series,
       Omega, spectrum.control = list(method = "wosa"))
 series1   series2   series3 
 41.239218 25.333105  1.171738 

Ω[0,1]Ω(whitenoise)=0%Ω(sinusoid)=100%

Referensi

Balasis, G., Daglis, IA, Anastasiadis, A., & Eftaxias, K. (2011). Deteksi perubahan kompleksitas dinamis dalam waktu Dst sSeries menggunakan konsep entropi dan analisis rentang rescaled. Dalam W. Liu dan M. Fujimoto (Eds.), The Dynamic Magnetosphere, Buku Sopron Khusus IAGA, Seri 3, 211. doi: 10.1007 / 978-94-007-0501-2_12. Peloncat. Diperoleh dari http://members.noa.gr/anastasi/papers/B29.pdf

Georg M. Goerg (2013): Analisis Komponen yang Dapat Diprediksi. JMLR, W&CP (2) 2013: 64-72. http://machinelearning.wustl.edu/mlpapers/papers/goerg13

Aleksandr Blekh
sumber
Saya juga menguji pracma::sample_entropy()fungsi dan mengoreksi hubungan hasil di seluruh deret waktu dalam skenario itu juga.
Aleksandr Blekh
@forecaster: Sama-sama.
Aleksandr Blekh
1
Lihat juga makalah ini notsoirrational.files.wordpress.com/2015/04/schulz15.pdf yang menggunakan data eksperimental untuk menjustifikasi ukuran prediksi mereka. Ini juga menghubungkan beberapa pekerjaan dengan pekerjaan ForeCA yang disebutkan dalam posting ini
Georg M. Goerg
@ GeorgM.Goerg: Terima kasih atas saran, tautan & suntingan.
Aleksandr Blekh
@forecaster: Dengan senang hati.
Aleksandr Blekh
0

Setiap seri waktu terdiri dari 3 komponen: Tren, Musim, dan Acak. Jika data menunjukkan tren yang kuat dan atau sangat musiman, maka prediksi akan relatif mudah. Jika sebagian besar data acak, maka menurut definisi Anda tidak dapat memprediksi apa pun.

Model Markov Tersembunyi
sumber