Bagaimana cara mengoreksi pencilan yang pernah terdeteksi untuk peramalan data deret waktu?

10

Saya mencoba mencari cara memperbaiki outlier setelah saya menemukan / mendeteksi mereka dalam data deret waktu. Beberapa metode, seperti nnetar di R, memberikan beberapa kesalahan untuk deret waktu dengan outlier besar / besar. Saya sudah berhasil memperbaiki nilai yang hilang, tetapi outlier masih merusak perkiraan saya ...

Mila
sumber
apa yang Anda maksud dengan "mengoreksi"?
rbatt
Mengganti atau mengganti ... Atau haruskah itu hanya mengurangi ...?
Mila
3
Apakah outlier itu "nyata"? Maksud saya, apakah outlier disebabkan oleh ketidakmampuan model untuk memprediksi kejadian ekstrim atau guncangan? Atau apakah itu "kesalahan" seperti masalah entri data?
probabilityislogic

Jawaban:

9

Sekarang ada fasilitas dalam paket perkiraan untuk R untuk mengidentifikasi dan mengganti outlier. (Ini juga menangani nilai yang hilang.) Karena Anda tampaknya sudah menggunakan paket perkiraan, ini mungkin solusi yang nyaman bagi Anda. Sebagai contoh:

fit <- nnetar(tsclean(x))

The tsclean()fungsi akan cocok dengan tren yang kuat menggunakan loess (untuk seri non-musiman), atau tren yang kuat dan komponen musiman menggunakan STL (untuk seri musiman). Sisa dihitung dan batas berikut dihitung:

manaq0,1danq0,9adalah persentil ke-10 dan ke-90 residual masing-masing.

U=q0.9+2(q0.9q0.1)L=q0.12(q0.9q0.1)
q0.1q0.9

Outliers diidentifikasi sebagai poin dengan residual lebih besar dari atau lebih kecil dari L .UL

Untuk deret waktu non-musiman, outlier diganti dengan interpolasi linier. Untuk deret waktu musiman, komponen musiman dari kesesuaian STL dihilangkan dan deret yang disesuaikan secara musiman diinterpolasi secara linier untuk mengganti outlier, sebelum menyesuaikan kembali hasilnya.

Rob Hyndman
sumber
1
Elaborasi Anda di sini juga membantu: stats.stackexchange.com/questions/1142/… (tsclean call tsoutliers)
4

Ketika Anda mengidentifikasi model ARIMA Anda harus secara bersamaan mengidentifikasi Pulsa / Pergeseran Tingkat / Pulsa Musiman dan / atau Tren Waktu Lokal. Anda bisa mendapatkan beberapa bahan bacaan tentang prosedur Deteksi Intervensi di http://www.ebay.com/ctg/Time-Series-Analysis-Univariate-and-Multivariate-Methods-David-P-Reilly-and-William-Wei-1999 - / 85697 dan http://www.unc.edu/~jbhill/tsay.pdf . Anda mungkin harus mengejar perangkat lunak komersial seperti SAS / SPSS / AUTOBOX untuk mendapatkan hasil yang bermanfaat karena perangkat lunak gratis yang saya lihat inginkan. Secara sepintas saya telah berkontribusi perbaikan teknis utama di bidang ini untuk AUTOBOX.

EDIT:

Pendekatan yang lebih baik lagi adalah mengidentifikasi outlier menggunakan metode ARIMA yang ketat ditambah prosedur Deteksi Intervensi yang mengarah ke parameter ARIMA yang kuat dan perkiraan yang baik. Sekarang pertimbangkan untuk mengembangkan ramalan simulasi yang menggabungkan residu sampel ulang yang bebas dari efek pulsa. Dengan cara ini Anda mendapatkan yang terbaik dari kedua dunia yaitu model yang baik dan pernyataan ketidakpastian yang lebih realistis untuk perkiraan yang tidak mengasumsikan bahwa parameter model yang diestimasi adalah nilai populasi.

IrishStat
sumber
1

Saya setuju dengan @Aksakal. Alih-alih menghapus outlier, pendekatan yang lebih baik adalah menggunakan semacam prosedur statistik untuk berurusan dengan outlier. Saya sarankan Anda menangkan data Anda. Jika diterapkan dengan benar, winorisation dapat menjadi relatif kuat untuk pencilan. Pada halaman ini: http://www.r-bloggers.com/winsorization/ , Anda akan menemukan kode-R untuk mengimplementasikan winorisasi. Jika Anda mempertimbangkan untuk memorisorisasi data Anda, Anda harus berpikir hati-hati tentang ekor distribusi. Apakah outlier diharapkan sangat rendah, atau mereka diharapkan sangat tinggi, atau mungkin keduanya. Ini akan memengaruhi apakah Anda menang pada level 5% atau 10% dan / atau 95% atau 99%.

Daniel
sumber
1
Kemenangan, untuk tujuan memperkirakan rata-rata keseluruhan, mungkin masuk akal dengan tidak adanya tren atau komponen musiman dalam data, tetapi sebaliknya mengancam untuk menghancurkan informasi penting.
whuber
0

Dalam konteks peramalan, menghapus pencilan sangat berbahaya. Misalnya, Anda memperkirakan penjualan toko bahan makanan. Katakanlah ada ledakan gas di gedung tetangga, yang menyebabkan Anda menutup toko selama beberapa hari. Ini adalah satu-satunya waktu toko ditutup dalam 10 tahun. Jadi, Anda mendapatkan deret waktu, mendeteksi outlier, menghapusnya dan memperkirakan. Anda diam-diam berasumsi bahwa hal seperti ini tidak akan terjadi di masa depan. Secara praktis, Anda mengompresi varian yang diamati, dan varian koefisien menyusut. Jadi, jika Anda menunjukkan pita kepercayaan untuk perkiraan Anda, mereka akan lebih sempit daripada jika Anda tidak menghapus pencilan.

Tentu saja, Anda bisa menyimpan pencilan, dan melanjutkan seperti biasa, tetapi ini juga bukan pendekatan yang baik. Alasannya adalah bahwa pencilan ini akan condongkan koefisien.

Saya pikir pendekatan yang lebih baik dalam hal ini memungkinkan untuk distribusi kesalahan dengan ekor gemuk, mungkin distribusi yang stabil. Dalam hal ini pencilan Anda tidak akan terlalu condong ke koefisien. Mereka akan dekat dengan koefisien dengan pencilan yang dihapus. Namun, pencilan akan muncul dalam distribusi kesalahan, varian kesalahan. Pada dasarnya, Anda akan berakhir dengan pita kepercayaan ramalan yang lebih luas.

Pita kepercayaan menyampaikan informasi yang sangat penting. Jika Anda meramalkan bahwa penjualan akan menjadi $ 1.000.000 bulan ini, tetapi ada 5% kemungkinan bahwa mereka akan menjadi $ 10.000, ini berdampak pada keputusan Anda tentang pengeluaran, manajemen kas, dll.

Aksakal
sumber
-1

Untuk melakukan peramalan menggunakan (atau tidak) model dengan pencilan yang dihapus tergantung pada probabilitas pencilan yang terjadi di masa depan dan distribusi efek yang diharapkan, jika memang terjadi. Apakah data pelatihan cukup untuk menjelaskan hal ini? Pendekatan Bayesian seharusnya membantu ...

Ricardo Coqueiro
sumber
1
Ini salah. perkiraan Anda mungkin tidak akurat jika Anda tidak menyesuaikan outlier, terutama jika outlier Anda berada di akhir seri.
peramal