Saya mencoba untuk mengotomatisasi deteksi outlier dalam time-series dan saya menggunakan modifikasi dari solusi yang diusulkan oleh Rob Hyndman di sini .
Katakanlah, saya mengukur kunjungan harian ke situs web dari berbagai negara. Untuk beberapa negara di mana kunjungan hariannya beberapa hundrend atau ribuan, metode saya tampaknya cukup berhasil.
Namun, dalam kasus di mana suatu negara hanya mengarah pada 1 atau 2 kunjungan per hari, batas algoritme sangat sempit (misalnya 1 ± 0,001) dan oleh karena itu 2 kunjungan dianggap sebagai pencilan. Bagaimana saya bisa secara otomatis mendeteksi kasus-kasus seperti itu dan bagaimana saya bisa memperlakukan mereka untuk mengidentifikasi pencilan? Saya tidak ingin menetapkan ambang manual, katakanlah, 100 kunjungan per hari.
Terima kasih!
Jawaban:
Jangan berharap banyak untuk jumlah kecil dan terpisah. Pergi dari 1 ke 2 kunjungan adalah peningkatan 100%, dan pergi dari 0 ke 1 kunjungan adalah peningkatan tanpa batas. Pada level rendah Anda mungkin berurusan dengan model nol-inflasi , dan itu bisa sangat bising di sana.
Dalam pengalaman saya, menghitung data dengan campuran jumlah besar dan kecil seperti ini menghasilkan dua masalah dengan jumlah kecil Anda: 1) mereka terlalu kasar untuk melakukan banyak hal, 2) mereka dihasilkan oleh proses yang berbeda. (Pikirkan kantor pos pedesaan yang kecil versus kantor pos kota besar). Jadi, Anda perlu setidaknya membagi pemodelan Anda menjadi dua: lakukan apa yang berhasil Anda lakukan untuk jumlah yang lebih besar, dan lakukan sesuatu yang berbeda - lebih kasar dan lebih mendekati - dengan jumlah kecil. Tapi jangan berharap banyak dari jumlah kecil.
Berita baiknya adalah bahwa penghitungan besar, menurut definisi, memasukkan lebih banyak transaksi Anda, sehingga model Anda yang lebih baik mencakup lebih banyak data, meskipun mungkin tidak mencakup sebagian besar situs Anda.
(Saya katakan "pemodelan" bersifat umum, tetapi tentu saja deteksi outlier mengasumsikan model tertentu dan menemukan poin yang sangat tidak mungkin dengan asumsi model itu.)
sumber
Setiap nilai dari deret waktu Anda adalah sampel dari distribusi probabilitas. Anda harus terlebih dahulu menemukan apa yang dimaksud dengan distribusi probabilitas dan kemudian mendefinisikan apa arti kata langka dalam distribusi itu.
Jadi hitung cdf empiris, dan hitung interval kepercayaan 95%. Kapan pun sesuatu di luar wilayah itu terjadi, maka menurut definisi Anda tahu itu pasti peristiwa langka.
sumber
Adalah suatu hal untuk mendeteksi Pencilan pada tingkat kepercayaan tertentu dan yang lain untuk menempatkan spesifikasi kedua yang selanjutnya akan membatasi penerimaan pencilan. Saya pernah ditanya pertanyaan berikut "Bisakah AUTOBOX mendeteksi pergeseran rata-rata unit xx pada tingkat kepercayaan yang ditentukan sebelumnya". Pada dasarnya yang diperlukan adalah tes ganda. AUTOBOX adalah bagian dari perangkat lunak yang saya bantu kembangkan yang mungkin Anda anggap hemat karena tidak ada perangkat lunak gratis yang menerapkan uji ganda ini.
Terima kasih Nick: Saya menggunakan pergeseran level sebagai contoh khusus dari "pencilan" atau secara umum dampak deterministik yang diidentifikasi secara empiris. Bentuk lain dari "pencilan" adalah Pulsa, Pulsa Musiman, dan Tren Waktu Lokal DAN kombinasi tertentu seperti perubahan sementara ke tingkat yang baru. Poin utamanya adalah mungkin ada dua hipotesis yang berperan mencerminkan signifikansi statistik dan signifikansi dunia nyata. Pelanggan yang awalnya membawa masalah ini menjadi perhatian saya tertarik pada keduanya.
sumber
Anda mengalami masalah itu karena data Anda jauh dari distribusi normal. Jika distribusinya sangat asimetris, dengan gundukan, gundukan atau ekor yang terlalu panjang / pendek, Anda akan mengalami masalah. Ide yang bagus adalah menerapkan transformasi seperti Box Cox atau Yeo-Johnson sebelum menggunakan metode Anda. Dalam contoh Anda jika Anda menggunakan F (x) = log (1 + x) Anda menghindari masalah besarnya yang berbeda dan Anda dapat mengkonversi kembali menggunakan: exp (z) -1
Ada beberapa prosedur yang bisa Anda gunakan untuk menemukan secara otomatis lambda yang baik untuk transformasi Box-Cox. Saya pribadi menggunakan median semua metode fungsi boxcoxnc dari paket AID di R. Jika data Anda tidak benar-benar positif, Anda harus menambahkan 1 atau nomor positif lainnya sebelum menggunakannya.
sumber