Wie kann man den Theil-Sen-Schätzer effizient berechnen?

8

Der Theil-Sen-Schätzer ist für mich von Interesse, aber wenn ich ihn selbst implementiere, erhalte ich etwas, das als O (n ^ 2) skaliert. Laut Wikipedia kann es genau in O (n log (n)) berechnet werden. Kann mich jemand auf eine effiziente Implementierung hinweisen (Python oder Mathematica wären am besten, Matlab oder R wären tolerierbar) oder auf andere Weise in einfachen Worten erklären, wie die effizienten Versionen funktionieren?

mdeceglie
quelle

Antworten:

3

Laut Wikipedia kann es genau in O (n log (n)) berechnet werden.

Wikipedia verweist auf nicht weniger als sechs Artikel, in denen verschiedene deterministische oder randomisierte Algorithmen mit -Leistung beschrieben werden, genau in dem Abschnitt, in dem die Existenz solcher Algorithmen erwähnt wird (und unter bestimmten Umständen auch ein noch schnellerer).Ö(nLogn)

Deterministisch:

Cole, Richard; Salowe, Jeffrey S.; Steiger, WL; Szemerédi, Endre (1989), Ein Algorithmus für die optimale Auswahl der Steigung, SIAM Journal on Computing 18 (4): 792–810, doi: 10.1137 / 0218055, MR 1004799.

Katz, Matthew J.; Sharir, Micha (1993), Optimale Steigungsauswahl über Expander, Information Processing Letters 47 (3): 115–122, doi: 10.1016 / 0020-0190 (93) 90234-Z, MR 1237287.

Brönnimann, Hervé; Chazelle, Bernard (1998), Optimale Steigungsauswahl über Stecklinge, Computational Geometry Theory and Applications 10 (1): 23–29, doi: 10.1016 / S0925-7721 (97) 00025-4, MR 1614381.

 

Zufällig:

Dillencourt, Michael B.; Mount, David M.; Netanyahu, Nathan S. (1992), Ein randomisierter Algorithmus zur Steigungsauswahl, International Journal of Computational Geometry & Applications 2 (1): 1–27, doi: 10.1142 / S0218195992000020, MR 1159839.

Matoušek, Jiří (1991), Randomisierter optimaler Algorithmus für die Steigungsauswahl, Information Processing Letters 39 (4): 183–187, doi: 10.1016 / 0020-0190 (91) 90177-J, MR 1130747.

Blunck, Henrik; Vahrenhold, Jan (2006), "In-Place Randomized Slope Selection", Internationales Symposium für Algorithmen und Komplexität, Lecture Notes in Computer Science 3998, Berlin: Springer-Verlag, S. 30–41, doi: 10.1007 / 11758471_6, MR 2263136 .

Welches wolltest du?

Glen_b -Reinstate Monica
quelle
3
Ja, ich weiß, wie ich feststellen muss, wenn Referenzen gemacht werden. Ich hätte gerne die, die HIER relativ EINFACH erklärt werden kann. Alternativ diejenige, die implementiert wurde, so dass man nur den Code verwenden kann.
Mdeceglie
Ich bevorzuge eine Methode, die es genau berechnet, anstatt etwas, das jedes Mal eine etwas andere Antwort gibt.
Mdeceglie
Warum das Downvote?
COOLSerdash
3
Ö(nLog(n))
2
italianice - Keiner der Algorithmen ist sehr einfach; Die Papiere, in denen sie erklärt werden, lassen einige Details aus (da dies offensichtlich genug ist, dass ein Experte die ausgelassenen Details ausfüllen kann). All dies müsste erklärt werden - ich kann nicht einmal sehen, dass das Einfachste in weniger als vielen, vielen tausend Wörtern (wahrscheinlich Zehntausenden plus Diagrammen) behandelt wird. Soweit ich sehen kann, handelt es sich bei allen um Computergeometrie. Die randomisierten Algorithmen sind in der Regel etwas einfacher, aber das sagt nicht viel. Wenn Sie dies wirklich brauchen, ist es möglicherweise am besten, nach einer Implementierung zu suchen.
Glen_b -State Monica