Deteksi Outlier dalam Time-Series: Bagaimana cara mengurangi false positive?


11

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!


2
Cara alami dan sederhana yang dapat memecahkan masalah Anda - yang disebabkan (setidaknya sebagian) karena varians yang sangat bervariasi - adalah dengan menerapkan transformasi penstabil varians, seperti transformasi Anscombe atau Freeman-Tukey , ke data sebelum mencari outlier.
whuber

Jawaban:


3

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.)


1

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.


0

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.


Pencilan tidak perlu menyiratkan pergeseran yang berarti .... Faktanya, perubahan yang digerakkan atau diperbesar antara rezim dengan cara yang berbeda tidak perlu melibatkan pencilan sama sekali. Anda tahu ini dengan sangat baik, tetapi apa yang saya pikir tersirat adalah bahwa akan sangat membantu orang lain untuk menyempurnakan jawaban Anda.
Nick Cox

Terima kasih semuanya. Saya tertarik pada signifikansi dunia nyata. Setelah mengidentifikasi pencilan, saya menimbang signifikansinya dengan, katakanlah, proporsi kunjungan dibandingkan dengan total kunjungan untuk mendapatkan signifikansi terakhirnya. Meskipun proporsi itu sangat kecil dalam kasus 2 kunjungan, karena nilai yang diharapkan adalah 1 ± 0,001, 'jarak' dari titik aktual dari batas yang diharapkan sangat tinggi (misalnya 2 / 0,002 di mana 0,002 adalah 'iqr') . Jadi, masalah ini menjadi sangat penting pada akhirnya. Ada ide?
Stergios

Saya akan menunjukkan bahwa penggunaan "outlier" yang diperluas di sini jauh lebih luas bahkan daripada rasa murah hati dari apa pun yang ekstrem yang umum dalam banyak literatur. Pembaca yang berpengalaman akan tahu bahwa @IrishStat mengikuti analisis deret waktunya.
Nick Cox

0

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.

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.