Längstes Intervall mit hoher Korrelation zweier Zeitreihen finden

Neue Frage »

DevNull00 Auf diesen Beitrag antworten »
Längstes Intervall mit hoher Korrelation zweier Zeitreihen finden
Hi,

ich möchte einen Algorithmus entwickeln, der zwei Zeitreihen (Zuordnung Jahr -> Anzahl) vergleicht und das Interval (Startjahr - Endjahr) mit der höchsten Korrelation findet.

Als Korrelationsmaß eignet sich meiner Meinung nach (korrigiert mich, falls das nicht stimmt) der Rangkorrelationskoeffizient von Spearman am besten. Dieses Maß habe ich bereits implementiert und es scheint zu funktionieren.

Ich berechne für jedes mögliche Interval mit (Start < Ende, Start >= Minimum der vorkommenden Jahre, Ende <= Maximum der vorkommenden Jahre) den Spearman-Koeffizient. Der naive Ansatz wäre jetzt, einfach nach dem resultierenden Koeffizienten zu sortieren. Leider kommen (wie erwartet) dabei nur sehr kurze Intervalle an erster Stelle, da ein Interval mit Länge 1 viel einfacher gut korreliert als eins mit Länge 100.

Was ich möchte, ist ein Kompromiss aus Länge und Korrelation. Das heißt, die Korrelation im gefundenen Interval muss nicht zwingend 1 sein. Mein erster Ansatz war, für jedes Interval order = SpearmanCoeff * Length/Maxlength zu berechnen und dann zu sortieren, allerdings erhalte ich so in den meisten Fällen einfach die gesamte Länge als Interval zurück, auch wenn die Korrelation dort eigentlich nicht so gut ist wie in einem Teilinterval.

Gibt es hier Ideen, wie man die beiden Kriterien (Korrelation/Länge) sinnvoll kombinieren könnte?

Oder sollte ich evtl. besser einen ganz anderen Ansatz wählen?

Grüße
DevNull00
HAL 9000 Auf diesen Beitrag antworten »

Versuchs doch mal mit sqrt(Length/Maxlength) statt nur Length/Maxlength .

Im vorliegenden Fall eher ein heuristischer Ansatz, aber inspiriert dadurch, dass sqrt(n) in der Statistik häufig eine Rolle spielt (z.B. Standardabweichung Mittelwertschätzer ist proportional zu 1/sqrt(Stichprobengröße) u.v.m.).
DevNull00 Auf diesen Beitrag antworten »

Danke für den Tip. Leider bringt das keine Verbesserung. Ich habe auch schon andere Varianten vesucht, z.b.

a* coeff + (1-a) * sqrt(len/maxlen)

Gibt es denn keine bestehenden Lösungen für solche Probleme, die ich mir einfach mal anschauen könnte? Habe lange gesucht, aber nichts gefunden.
HAL 9000 Auf diesen Beitrag antworten »

Und so eine Art Bayessche Korrektur

(Basiswert * C + SpearmanCoeff * Length) / (C + Length)

mit bei dir vermutlich Basiswert=0 sowie einem angepassten Wert C>0, der dafür sorgt, dass zu kurze Intervalle nicht zum Zuge kommen - hat das auch nichts gebracht?
DevNull00 Auf diesen Beitrag antworten »

Hi,

das sieht vielversprechend aus, ich probiere mal herum.

Warum heißt das Bayessche Korrektur? Ich finde dazu im Netz nicht wirklich was.

Grüße
DevNull00
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »