Bagaimana cara menghitung estimator Theil-Sen secara efisien?


8

Estimator Theil-Sen menarik bagi saya, namun ketika saya mengimplementasikannya sendiri saya berakhir dengan sesuatu yang berskala O (n ^ 2). Menurut wikipedia, ini dapat dihitung dengan tepat dalam O (n log (n)). Dapatkah seseorang mengarahkan saya ke implementasi yang efisien (python atau Mathematica akan menjadi yang terbaik, Matlab atau R akan dapat ditoleransi) atau dengan kata lain menjelaskan secara sederhana bagaimana versi efisien bekerja?

Jawaban:


3

Menurut wikipedia, ini dapat dihitung dengan tepat dalam O (n log (n)).

Wikipedia menunjuk ke tidak kurang dari enam makalah yang merinci berbagai algoritma deterministik atau acakO(nlogn) kinerja, tepat di bagian di mana mereka menyebutkan keberadaan algoritma seperti itu (serta menyebutkan yang lebih cepat dalam keadaan tertentu).

Deterministik:

Cole, Richard; Salowe, Jeffrey S .; Steiger, WL; Szemerédi, Endre (1989), Algoritma waktu optimal untuk pemilihan lereng, Jurnal SIAM tentang Komputasi 18 (4): 792–810, doi: 10.1137 / 0218055, MR 1004799.

Katz, Matthew J .; Sharir, Micha (1993), Seleksi lereng optimal melalui ekspander, Information Processing Letters 47 (3): 115-122, doi: 10.1016 / 0020-0190 (93) 90234-Z, MR 1237287.

Brönnimann, Hervé; Chazelle, Bernard (1998), Seleksi lereng optimal melalui stek, Teori Geometri Komputasi dan Aplikasi 10 (1): 23–29, doi: 10.1016 / S0925-7721 (97) 00025-4, MR 1614381.

 

Acak:

Dillencourt, Michael B .; Gunung, David M.; Netanyahu, Nathan S. (1992), Algoritma acak untuk pemilihan lereng, International Journal of Computational Geometry & Applications 2 (1): 1–27, doi: 10.1142 / S0218195992000020, MR 1159839.

Matoušek, Jiří (1991), Algoritma optimal acak untuk pemilihan lereng, Information Processing Letters 39 (4): 183–187, doi: 10.1016 / 0020-0190 (91) 90177-J, MR 1130747.

Blunck, Henrik; Vahrenhold, Jan (2006), "Seleksi lereng secara acak di tempat", Simposium Internasional tentang Algoritma dan Kompleksitas, Catatan Kuliah dalam Ilmu Komputer 3998, Berlin: Springer-Verlag, hlm. 30–41, doi: 10.1007 / 11758471_6, MR 2263136 .

Yang mana yang kamu inginkan?


3
Ya, saya tahu bagaimana memperhatikan ketika referensi dibuat. Saya mau yang bisa dijelaskan di SINI dalam istilah yang SEDERHANA. Atau yang telah diimplementasikan sehingga orang hanya dapat menggunakan kode.
mdeceglie

Saya lebih suka metode yang menghitungnya dengan tepat daripada sesuatu yang memberikan jawaban yang sedikit berbeda setiap kali.
mdeceglie

Mengapa downvote?
COOLSerdash

3
Italia, Anda keliru mengartikan "algoritma acak": ini adalah algoritma yang mengacak masukan mereka untuk menghindari situasi terburuk yang jarang terjadi. Mereka punyaO(nlog(n)) waktu komputasi yang diharapkan - tetapi mereka menghasilkan solusi optimal yang tepat, benar, berulang . Algoritma deterministik yang dikutip oleh Glen_b di sini cenderung rumit, sedangkan beberapa algoritma acak relatif sederhana. Komentar awal dalam makalah terakhir (Henrik Blunck dan Jan Vahrenhold) menjelaskan hal ini dan memberikan gambaran umum dari beberapa algoritma.
whuber

2
italianice - Tidak ada algoritma yang sangat sederhana; kertas-kertas yang menjelaskannya meninggalkan beberapa detail (cukup jelas sehingga seorang ahli dapat mengisi rincian yang dihilangkan); semua itu perlu dijelaskan - saya tidak dapat melihat bahkan yang paling sederhana pun tercakup dalam kurang dari ribuan kata (mungkin puluhan ribu, ditambah diagram). Sejauh yang saya bisa lihat, semua melibatkan geometri komputasi dalam beberapa cara. Algoritma acak cenderung agak sederhana, tetapi itu tidak banyak bicara. Jika Anda benar-benar membutuhkan ini, taruhan terbaik Anda mungkin adalah mencari implementasi.
Glen_b -Reinstate Monica
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.