Misalkan saya memiliki satu set besar data multivarian dengan setidaknya tiga variabel. Bagaimana saya bisa menemukan outlier? Scatterplots berpasangan tidak akan berfungsi karena dimungkinkan untuk pencilan yang ada dalam 3 dimensi yang bukan pencilan di salah satu dari subruang 2 dimensi.
Saya tidak memikirkan masalah regresi, tetapi data multivariat yang sebenarnya. Jadi jawaban yang melibatkan regresi yang kuat atau leverage komputasi tidak membantu.
Salah satu kemungkinan adalah menghitung skor komponen utama dan mencari pencilan di sebar bivariat dari dua skor pertama. Apakah itu dijamin berhasil? Apakah ada pendekatan yang lebih baik?
multivariate-analysis
outliers
Rob Hyndman
sumber
sumber
Jawaban:
Silahkan lihat di mvoutlier paket yang mengandalkan memerintahkan jarak mahalanobis kuat, seperti yang disarankan oleh @drknexus.
sumber
Saya pikir jawaban Robin Girard akan bekerja cukup baik untuk 3 dan mungkin 4 dimensi, tetapi kutukan dimensi akan mencegahnya bekerja lebih dari itu. Namun, sarannya membawa saya ke pendekatan terkait yaitu menerapkan estimasi kepadatan kernel yang divalidasi silang ke tiga skor komponen utama pertama. Kemudian set data yang sangat tinggi masih dapat ditangani dengan baik.
Singkatnya, untuk i = 1 ke n
berakhir untuk
Sortir Li (untuk i = 1, .., n) dan outlier adalah yang memiliki kemungkinan di bawah ambang tertentu. Saya tidak yakin apa yang akan menjadi ambang batas yang baik - saya akan meninggalkan itu untuk siapa pun yang menulis makalah tentang ini! Salah satu kemungkinan adalah dengan melakukan boxplot dari nilai-nilai log (Li) dan melihat outlier apa yang terdeteksi pada ujung negatif.
sumber
Anda dapat menemukan ringkasan pedagogis dari berbagai metode yang tersedia di (1)
Untuk beberapa --recent-- perbandingan numerik dari berbagai metode yang tercantum di sana, Anda dapat memeriksa (2) dan (3) .
ada banyak perbandingan numerik yang lebih lama (dan kurang lengkap), biasanya ditemukan dalam buku. Anda akan menemukan satu di halaman 142-143 dari (4), misalnya.
Perhatikan bahwa semua metode yang dibahas di sini memiliki implementasi open source R, terutama melalui paket rrcov .
sumber
Saya akan melakukan semacam "tinggalkan satu algoritma pengujian" (n adalah jumlah data):
untuk i = 1 hingga n
berakhir untuk
Ini akan bekerja jika n cukup besar ... Anda juga dapat menggunakan "tinggalkan strategi" yang bisa lebih relevan ketika Anda memiliki "grup" outlier ...
sumber
Anda dapat menemukan kandidat untuk "pencilan" di antara titik-titik dukungan ellipsoid dengan volume minimum. ( Algoritme yang efisien untuk menemukan titik-titik ini dalam dimensi yang cukup tinggi, baik secara tepat maupun kira-kira, diciptakan dalam serentetan makalah pada tahun 1970-an karena masalah ini terkait erat dengan pertanyaan dalam desain eksperimental.)
sumber
Pendekatan baru yang saya lihat adalah dengan Analisis Komponen Utama IT Jolliffe . Anda menjalankan PCA pada data Anda (Catatan: PCA bisa menjadi alat penjelajahan data yang sangat berguna dengan caranya sendiri), tetapi alih-alih melihat beberapa Komponen Utama (PC) pertama, Anda membuat plot beberapa PC terakhir. PC ini adalah hubungan linier antara variabel Anda dengan varians sekecil mungkin. Dengan demikian mereka mendeteksi "tepat" atau dekat dengan hubungan multivarian yang tepat dalam data Anda.
Plot skor PC untuk PC terakhir akan menunjukkan outlier yang tidak mudah terdeteksi dengan melihat secara individual pada masing-masing variabel. Salah satu contoh adalah untuk tinggi dan berat badan - beberapa yang memiliki tinggi "di atas rata-rata" dan berat "di bawah rata-rata" akan terdeteksi oleh PC tinggi dan berat badan terakhir (dengan asumsi ini berkorelasi positif), bahkan jika tinggi dan beratnya tidak " ekstrim "secara individual (mis. seseorang yang 180cm dan 60kg).
sumber
Saya tidak melihat ada yang menyebutkan fungsi pengaruh . Saya pertama kali melihat ide ini dalam buku multivariat Gnanadesikan .
Dalam satu dimensi outlier adalah nilai yang sangat besar atau sangat kecil. Dalam analisis multivariat, ini adalah pengamatan yang dihapus dari sebagian besar data. Tetapi metrik apa yang harus kita gunakan untuk mendefinisikan ekstrim untuk pencilan? Ada banyak pilihan. Jarak Mahalanobis hanya satu. Saya pikir mencari setiap jenis pencilan itu sia-sia dan kontraproduktif. Saya akan bertanya mengapa Anda peduli dengan pencilan itu? Dalam mengestimasi mean, mereka dapat memiliki pengaruh besar pada estimasi tersebut. Penduga yang kuat menurunkan berat badan dan mengakomodasi pencilan tetapi mereka tidak secara resmi menguji mereka. Sekarang dalam regresi, outlier - seperti poin leverage - dapat memiliki efek besar pada parameter kemiringan dalam model. Dengan data bivariat mereka dapat terlalu mempengaruhi estimasi koefisien korelasi dan dalam tiga atau lebih dimensi koefisien korelasi berganda.
Fungsi pengaruh diperkenalkan oleh Hampel sebagai alat dalam estimasi yang kuat dan Mallows menulis makalah yang tidak dipublikasikan yang menganjurkan penggunaannya. Fungsi pengaruh adalah fungsi dari titik Anda berada dalam ruang n-dimensi dan parameter. Ini pada dasarnya mengukur perbedaan antara estimasi parameter dengan titik dalam perhitungan dan dengan titik yang ditinggalkan. Daripada bersusah payah melakukan perhitungan dari dua perkiraan dan mengambil perbedaan, seringkali Anda dapat memperoleh formula untuk itu. Kemudian kontur pengaruh konstan memberi tahu Anda arah yang ekstrem sehubungan dengan perkiraan parameter ini dan karenanya memberi tahu Anda di mana di ruang n-dimensi untuk mencari pencilan.
Untuk lebih lanjut, Anda dapat melihat makalah saya tahun 1983 di American Journal of Matematika dan Ilmu Manajemen berjudul "Fungsi pengaruh dan aplikasinya untuk validasi data." Dalam validasi data kami ingin mencari outliers yang memengaruhi tujuan penggunaan data. Perasaan saya adalah bahwa Anda harus mengarahkan perhatian Anda ke pencilan yang sangat memengaruhi parameter yang ingin Anda perkirakan dan tidak terlalu peduli dengan orang lain yang tidak.
sumber
Ini mungkin overshoot, tetapi Anda dapat melatih Hutan Acak tanpa pengawasan pada data dan menggunakan ukuran kedekatan objek untuk mendeteksi outlier. Lebih detail di sini .
sumber
Untuk dimensi moderat, seperti 3, maka semacam teknik cross-validasi kernel seperti yang disarankan di tempat lain tampaknya masuk akal dan merupakan yang terbaik yang bisa saya lakukan.
Untuk dimensi yang lebih tinggi, saya tidak yakin bahwa masalahnya dapat dipecahkan; itu mendarat tepat di wilayah 'kutukan dimensi'. Masalahnya adalah bahwa fungsi jarak cenderung konvergen ke nilai yang sangat besar dengan sangat cepat saat Anda meningkatkan dimensi, termasuk jarak yang diperoleh dari distribusi. Jika Anda mendefinisikan outlier sebagai "titik dengan fungsi jarak yang relatif besar relatif terhadap yang lain", dan semua fungsi jarak Anda mulai menyatu karena Anda berada di ruang dimensi tinggi, well, Anda dalam kesulitan .
Tanpa semacam asumsi distribusi yang akan memungkinkan Anda mengubahnya menjadi masalah klasifikasi probabilistik, atau setidaknya beberapa rotasi yang memungkinkan Anda memisahkan ruang Anda menjadi "dimensi kebisingan" dan "dimensi informatif", saya berpikir bahwa geometri ruang dimensi tinggi akan melarang identifikasi outlier yang mudah - atau setidaknya kuat -.
sumber
Saya tidak yakin apa yang Anda maksudkan ketika Anda mengatakan bahwa Anda tidak memikirkan masalah regresi tetapi tentang "data multivariat sejati". Respons awal saya adalah menghitung jarak Mahalanobis karena tidak mengharuskan Anda menentukan IV atau DV tertentu, tetapi pada intinya (sejauh yang saya mengerti) itu terkait dengan statistik leverage.
sumber
Saya tidak sadar bahwa ada orang yang melakukan ini, tetapi saya biasanya suka mencoba pengurangan dimensionalitas ketika saya memiliki masalah seperti ini. Anda mungkin melihat ke dalam metode dari banyak pembelajaran atau pengurangan dimensi non-linear .
Contohnya adalah peta Kohonen . Referensi yang baik untuk R adalah "Peta Self-and Super-Organizing in R: The kohonen Package" .
sumber
Respons pertama saya adalah jika Anda dapat melakukan regresi multivariat pada data, maka untuk menggunakan residu dari regresi tersebut untuk mengenali outlier. (Saya tahu Anda mengatakan itu bukan masalah regresi, jadi ini mungkin tidak membantu Anda, maaf!)
Saya menyalin beberapa dari pertanyaan Stackoverflow yang sebelumnya saya jawab yang memiliki beberapa contoh kode R
Pertama, kita akan membuat beberapa data, dan menodainya dengan pencilan;
Sering kali paling berguna untuk memeriksa data secara grafis (otak Anda jauh lebih baik dalam melihat outlier daripada matematika)
Anda kemudian dapat menggunakan statistik untuk menghitung nilai cut off kritis, di sini menggunakan Lund Test (Lihat Lund, RE 1975, "Tabel untuk Sebuah Perkiraan Tes untuk Outliers dalam Model Linear", Technometrics, vol. 17, no. 4, hlm. 473 -476 dan Prescott, P. 1975, "Sebuah Perkiraan Tes untuk Pencilan dalam Model Linier", Technometrics, vol. 17, no. 1, hlm. 129-132.)
Jelas ada tes outlier lain selain tes Lund (Grubbs muncul dalam pikiran), tapi saya tidak yakin mana yang lebih cocok untuk data multivariat.
sumber
vw-top-errors
@ goo.gl/l7SLlB (perhatikan bahwa contoh-contoh di sana kebetulan memiliki Y, tapi saya menggunakan teknik yang sama, sangat berhasil pada masalah yang tidak terawasi juga dengan memperbaiki Y.)Salah satu jawaban di atas menyentuh jarak mahalanobis .... mungkin langkah lebih jauh dan menghitung interval kepercayaan simultan akan membantu mendeteksi outlier!
sumber