Komentar: Pertama saya ingin mengatakan besar terima kasih kepada penulis yang baru tsoutliers paket yang menerapkan Chen dan Liu deteksi time series outlier yang diterbitkan dalam Journal of American Association statistik pada tahun 1993 dalam perangkat lunak Open Source .
Paket mendeteksi 5 jenis pencilan yang berbeda secara iteratif dalam data deret waktu:
- Additive Outlier (AO)
- Innovation Outlier (IO)
- Level Shift (LS)
- Perubahan sementara (TC)
- Pergeseran Tingkat Musiman (SLS)
Yang lebih hebat lagi adalah bahwa paket ini mengimplementasikan auto.arima dari paket perkiraan sehingga mendeteksi outlier tidak ada masalah. Paket ini juga menghasilkan plot yang bagus untuk pemahaman yang lebih baik tentang data deret waktu.
Di bawah ini adalah pertanyaan saya:
Saya mencoba menjalankan beberapa contoh menggunakan paket ini dan itu berhasil. Pencilan aditif dan pergeseran level bersifat intuitif. Namun, saya memiliki 2 pertanyaan berkaitan dengan menyerahkan outlier Perubahan Sementara dan outlier Inovatif yang saya tidak bisa mengerti.
Contoh Perubahan Sementara Sementara:
Perhatikan contoh berikut:
library(tsoutliers)
library(expsmooth)
library(fma)
outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)
Program ini dengan tepat mendeteksi perubahan level dan perubahan sementara di lokasi berikut.
Outliers:
type ind time coefhat tstat
1 LS 12 1935 37.14 3.153
2 TC 20 1943 36.38 3.350
Di bawah ini adalah plot dan pertanyaan saya.
- Bagaimana cara menulis perubahan sementara dalam format persamaan? (Pergeseran level dapat dengan mudah ditulis sebagai variabel biner, kapan saja sebelum 1935 / Obs 12 adalah 0 dan setiap saat setelah 1935 dan setelah adalah 1.)
Persamaan untuk perubahan sementara dalam manual paket dan artikel diberikan sebagai:
di mana adalah 0,7. Saya hanya berusaha menerjemahkan ini ke contoh di atas.
- Pertanyaan kedua saya adalah tentang outlier inovasi, saya belum pernah
menemukan outlier inovasi dalam praktek. contoh numersial atau contoh kasus akan sangat membantu.
Sunting: @Irishstat, fungsi tsoutliers melakukan pekerjaan yang sangat baik dalam mengidentifikasi outlier dan menyarankan model ARIMA yang sesuai. Melihat dataset Nile, lihat aplikasi auto.arima di bawah ini dan kemudian terapkan tsoutliers (dengan default yang mencakup auto.arima):
auto.arima(Nile)
Series: Nile
ARIMA(1,1,1)
Coefficients:
ar1 ma1
0.2544 -0.8741
s.e. 0.1194 0.0605
sigma^2 estimated as 19769: log likelihood=-630.63
AIC=1267.25 AICc=1267.51 BIC=1275.04
Setelah menerapkan fungsi tsoutliers, ia mengidentifikasi outlier LS dan outlier aditif dan merekomendasikan pesanan ARIMA (0,0,0).
nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile
ARIMA(0,0,0) with non-zero mean
Coefficients:
intercept LS29 AO43
1097.7500 -242.2289 -399.5211
s.e. 22.6783 26.7793 120.8446
sigma^2 estimated as 14401: log likelihood=-620.65
AIC=1249.29 AICc=1249.71 BIC=1259.71
Outliers:
type ind time coefhat tstat
1 LS 29 1899 -242.2 -9.045
2 AO 43 1913 -399.5 -3.306
sumber
tsoutliers
telah diubah namanyatso
untuk menghindari konflik dengan fungsi dengan nama yang sama dalam paketforecast
.clang
dangcc
dan tidak berhasil. Saya pikir ini adalah paket yang luar biasa tetapi instalasinya benar-benar membuat saya sedih.Jawaban:
Perubahan sementara, TC, adalah jenis pencilan umum. Persamaan yang diberikan dalam dokumentasi paket dan yang Anda tulis adalah persamaan yang menggambarkan dinamika tipe pencilan ini. Anda dapat menghasilkannya melalui fungsiδ= 0 TC runtuh dalam outlier aditif; di sisi lain,δ= 1 , TC seperti pergeseran level.
filter
seperti yang ditunjukkan di bawah ini. Menyala untuk menampilkannya untuk beberapa nilai delta. UntukDalam contoh Anda, Anda bisa menggunakan fungsi ini
outliers.effects
untuk mewakili efek dari pencilan yang terdeteksi pada seri yang diamati:Pencilan inovasi, IO, lebih aneh. Berlawanan dengan tipe outlier lain yang dipertimbangkan
tsoutliers
, efek IO tergantung pada model yang dipilih dan pada estimasi parameter. Fakta ini bisa merepotkan secara seri dengan banyak outlier. Dalam iterasi pertama dari algoritma (di mana efek dari beberapa outlier mungkin tidak terdeteksi dan disesuaikan) kualitas estimasi model ARIMA mungkin tidak cukup baik untuk secara akurat mendefinisikan IO. Selain itu, karena algoritma membuat kemajuan, model ARIMA baru dapat dipilih. Dengan demikian, dimungkinkan untuk mendeteksi IO pada tahap awal dengan model ARIMA tetapi akhirnya dinamiknya ditentukan oleh model ARIMA lain yang dipilih pada tahap terakhir.Dalam dokumen ini ditunjukkan bahwa, dalam beberapa keadaan, pengaruh IO dapat meningkat ketika tanggal kejadiannya menjadi lebih jauh ke masa lalu, yang merupakan sesuatu yang sulit untuk ditafsirkan atau diasumsikan.
IO memiliki potensi yang menarik karena dapat menangkap outlier musiman. Jenis outlier lainnya yang dipertimbangkan
tsoutliers
tidak dapat menangkap pola musiman. Namun demikian, dalam beberapa kasus mungkin lebih baik untuk mencari kemungkinan pergeseran tingkat musiman, SLS, daripada IO (seperti yang ditunjukkan dalam dokumen yang disebutkan sebelumnya).IO memiliki interpretasi yang menarik. Kadang-kadang dipahami sebagai aditif outlier yang mempengaruhi istilah gangguan dan kemudian menyebar dalam seri sesuai dengan dinamika model ARIMA. Dalam hal ini, IO seperti aditif outlier, keduanya mempengaruhi pengamatan tunggal tetapi IO adalah impuls dalam jangka waktu gangguan sedangkan AO adalah impuls yang ditambahkan langsung ke nilai-nilai yang dihasilkan oleh model ARIMA atau proses pembuatan data. . Apakah outlier mempengaruhi inovasi atau berada di luar istilah gangguan dapat menjadi bahan diskusi.
Dalam referensi sebelumnya Anda dapat menemukan beberapa contoh data nyata di mana IO terdeteksi.
sumber
forecast::auto.arima
bersamatsoutliers
adalah bahwa semuanya menjadi otomatis. Namun, disarankan untuk menjalankan prosedur otomatis dengan opsi alternatif. Pertama-tama Anda dapat melihat ACF atau unit root test dan kemudian memilih model ARIMA untuk diteruskantsoutliers
. Jika ada outlier yang ditemukan untuk model yang Anda ajukan maka Anda dapat mengulangi lagi analisis untuk seri yang disesuaikan. Ini adalah proses berulang. Prosedur otomatis menyediakan panduan yang bermanfaat, tetapi mungkin tidak selalu memberikan solusi terbaik atau unik.maxit.iloop
menjadi 5-6 dan melihat apakah hasilnya berubah. Jika peringatan dikembalikan dengan besarmaxit.iloop
(mis. 20 atau lebih) itu mungkin merupakan tanda bahwa sesuatu tidak dimodelkan dengan benar. Menghapus IO dari jenis outlier yang dapat dipertimbangkan mungkin merupakan opsi yang baik dalam beberapa kasus. Dalam kebanyakan kasus, Anda dapat mengabaikan peringatan itu. Anda dapat menggunakannyasuppressWarnings
untuk menghindarinya.