Pembaruan: Inti masalahnya adalah bahwa untuk mencapai kompleksitas waktu O(nlog(n)) , seseorang perlu dalam urutan penyimpanan O(n) .
Tidak, O(nlog(n)) adalah teori batas bawah untuk kompleksitas waktu (lihat (1)) memilih kth elemen antara semua n(n−1)2 mungkin|xi−xj|:1≤i<j≤n.
Anda bisa mendapatkan ruang O(1) , tetapi hanya dengan secara naif memeriksa semua kombinasi xi−xj dalam waktu O(n2) .
Berita baiknya adalah Anda dapat menggunakan penaksir skala τ (lihat (2) dan (3) untuk versi yang ditingkatkan dan beberapa perbandingan waktu), yang diimplementasikan dalam fungsi
scaleTau2()
dalam R
paket robustbase
. Estimator τ univariat adalah penduga skala dua langkah (yaitu re-weighted). Ini memiliki efisiensi Gaussian 95 persen, titik rincian 50 persen, dan kompleksitas O(n) waktu dan O(1) ruang (ditambah dapat dengan mudah dibuat 'online', mengurangi setengah dari biaya komputasi dalam penggunaan berulang - meskipun Anda harus menggali ke dalam R
kode untuk mengimplementasikan opsi ini, ini agak mudah dilakukan).
- Kompleksitas seleksi dan peringkat dalam X + Y dan matriks dengan kolom diurutkan GN Frederickson dan DB Johnson, Jurnal Ilmu Komputer dan Sistem Volume 24, Edisi 2, April 1982, Halaman 197-208.
- Yohai, V. dan Zamar, R. (1988). Perkiraan titik breakdown yang tinggi dari regresi dengan meminimalkan skala yang efisien. Jurnal Asosiasi Statistik Amerika 83 406-413.
- Maronna, R. dan Zamar, R. (2002). Perkiraan lokasi dan dispersi yang kuat untuk set data dimensi tinggi. Technometrics 44 307-317
Edit Untuk menggunakan ini
- Nyalakan
R
(gratis dan dapat diunduh dari sini )
- Instal paket dengan mengetik:
install.packages("robustbase")
- Muat paket dengan mengetik:
library("robustbase")
- Muat file data Anda dan jalankan fungsinya:
mydatavector <- read.table("address to my file in text format", header=T)
scaleTau2(mydatavector)