Saya berurusan dengan data linear dengan outlier, beberapa di antaranya berada pada 5 standar deviasi dari garis regresi yang diperkirakan. Saya mencari teknik regresi linier yang mengurangi pengaruh poin-poin ini.
Sejauh ini yang saya lakukan adalah memperkirakan garis regresi dengan semua data, kemudian membuang titik data dengan residu kuadrat yang sangat besar (katakanlah 10% teratas) dan ulangi regresi tanpa poin-poin tersebut.
Dalam literatur ada banyak pendekatan yang mungkin: kuadrat terkecil, regresi kuantil, m-estimator, dll. Saya benar-benar tidak tahu pendekatan mana yang harus saya coba, jadi saya mencari saran. Yang penting bagi saya adalah bahwa metode yang dipilih harus cepat karena regresi yang kuat akan dihitung pada setiap langkah rutin optimasi. Terima kasih banyak!
sumber
Jawaban:
Jika data Anda mengandung outlier tunggal, maka itu dapat ditemukan dengan andal menggunakan pendekatan yang Anda sarankan (tanpa iterasi). Pendekatan formal untuk ini adalah
robustbase
quantreg
R
Dalam 20 tahun terakhir (dan khususnya 10 tahun terakhir) sejumlah besar algoritma pendeteksi outlier yang cepat dan andal telah dirancang untuk mengatasi masalah kombinatorial ini. Ini sekarang banyak diimplementasikan dalam paket statistik paling populer (R, Matlab, SAS, STATA, ...).
Buku referensi terbaru tentang masalah identifikasi outlier adalah:
Metode-metode ini (dan banyak variasi lainnya) diimplementasikan (antara lain) dalam paket.
robustbase
R
sumber
Untuk regresi sederhana (x tunggal), ada sesuatu yang bisa dikatakan untuk garis Theil-Sen dalam hal ketahanan terhadap outlier y dan untuk poin-poin yang berpengaruh serta efisiensi yang umumnya baik (pada normal) dibandingkan dengan LS untuk lereng. Titik kerusakan untuk lereng hampir 30%; selama intersep (ada berbagai kemungkinan intersep yang digunakan orang) tidak memiliki rincian yang lebih rendah, seluruh prosedur mengatasi fraksi kontaminasi yang cukup baik.
Kecepatannya mungkin terdengar seperti buruk - median slope nampak sebagai bahkan dengan median - tetapi ingatan saya adalah bahwa hal itu dapat dilakukan lebih cepat jika kecepatan benar-benar masalah ( , saya percaya)(n2) O(n2) O(n) O(nlogn)
Sunting: user603 meminta keuntungan dari regresi Theil daripada regresi L1. Jawabannya adalah hal lain yang saya sebutkan - poin berpengaruh:
Garis merah adalah kecocokan (dari fungsi dalam paket). Hijau cocok dengan kemiringan Theil. Yang diperlukan hanyalah salah ketik tunggal dalam nilai x - seperti mengetik 533 bukannya 53 - dan hal semacam ini bisa terjadi. Jadi kecocokan tidak kuat untuk satu kesalahan ketik di x-space.L1 L1
rq
quantreg
sumber
Sudahkah Anda melihat RANSAC (Wikipedia) ?
Ini harus baik dalam menghitung model linier yang masuk akal bahkan ketika ada banyak pencilan dan kebisingan, karena dibangun dengan asumsi bahwa hanya sebagian dari data yang benar-benar akan menjadi bagian dari mekanisme.
sumber
Saya menemukan regresi kesalahan dihukum paling baik. Anda juga dapat menggunakannya secara iteratif dan sampel ulang, yang tidak sangat konsisten dengan solusi. Ide dasarnya adalah untuk menambah model Anda dengan kesalahan: mana adalah vektor kesalahan yang tidak diketahui. Sekarang Anda melakukan regresi pada . Menariknya Anda tentu saja dapat menggunakan "laso leburan" untuk ini ketika Anda dapat memperkirakan kepastian pengukuran Anda di muka dan menempatkan ini sebagai bobot ke dan untuk menyelesaikan tugas baru yang sedikit berbeda y = A x + e e ∥ y - A x - e ∥ 2 2 + λ ∥ e ∥ 1 W = d i a g ( w i ) ∥ y - A x - e ∥ 2 2 + λ ∥ W e ∥ 1l1
Informasi lebih lanjut dapat ditemukan di sini: http://statweb.stanford.edu/~candes/papers/GrossErrorsSmallErrors.pdf
sumber