Wykrywanie nowego trendu

0

Hej!
Kilkanaście dni już nad tym siedzę i nie znalazłem wystarczająco dobrego rozwiązania. Załóżmy, że są dane punkty na płaszczyźnie:

(x1,y2), (x2,y2), ..., (xn,yn)
które spełniają warunek:
x[i+1]-x[i] = 1, dla "i" z przedziału [1, n-1]

Będę stosował zapis równoważny: x[i] = xi (z definicji)

Dla danego punktu (xp,yp) potrzebuję wyznaczyć wartość k (k<p) z przedziału, dla której punkt x[k] jest punktem "przełamania" łamanej powstałej z połączenia odcisków prostych rekresji liniowej punktów y[i] z lewej i prawej strony punktu x[k].

Przykład:
Niech punkty i przykładowe odcinki regresji wyglądają tak:
user image
Dla punktu zielonego (punkt startowy; punkty na prawo od niego nie mają znaczenia) chcę wyznaczyć wartość k=21, dla której to x[k] jest punktem łamania (punkt czerwony).

Mielibyście jakiś pomysł na to?

0

Lokalne minimum | extremum.

0

Na rysunku tak mi akurat wyszło, lecz środkowa linia może być równie dobrze opadająca (trochę mniej niż ta lewa) i wtedy lokalne ekstrema nic nie dadzą :/

0

Ja bym zrobił tak, dopasowywałbym prosta do każdego przedziału i liczył współczynnik korelacji dla tych dopasowań.
Następnie tak bym dobierał miejsce(a) w którym następuje zmiana przedziału w taki sposób, żeby wartość bezwzględna iloczynów współczynników korelacji była największa. W takim wypadku masz standardowy problem optymalizacyjny.

edit: Nie zdziwiłbym się, gdy by można było jeszcze prościej: dodajesz kolejne punkty do prostej (aktualizując wszystkie parametry dopasowania) i jeśli kolejny punkt powoduje duże popsucie (jego odległość od prostej jest większa niż 2-3 krotność średniej odległości od prostej dla pozostałych punktów) dopasowania uznać go za początek nowej prostej.

Optymalnie było by połączyć obie metody (pierwsza jest dokładna i powolna, a druga szybka i mniej dokładna).

0

Przez dopasowywanie prostej do każdego przedziału domyślam się, że chodzi Ci o obliczanie prostej regresji biorąc każdy zbiór przyległych punktów (od np. trzech do wszystkich wcześniejszych niż ten zielony). Tak?
Możesz powiedzieć coś więcej o obliczaniu tej korelacji i potem o tym doborze miejsca (a)?

0

poczytaj o regresji liniowej, współczynnik korelacji opisuje jak dobra jest prosta - im bliżej 1 lub -1 tym bardziej punkty ułożone są na prostej.

0

Dzięki, MarekR22. Rozważałem właśnie coś takiego (oba z podanych przez Ciebie sposobów), ale nie wiedziałem, co wykorzystać do oceny stopnia dopasowania. Już wiem :)

0

Ten wsp. korelacji jednak się u mnie nie sprawdza. Mam niezbyt wiele tych punktów: w granicach 30-50 :/

Pomyślałem, by zrobić tak, że obliczam średnie z wszystkich 2, 3, 4 i 5 kolejnych obliczonych współczynników kierunkowych prostych regresji i na tej podstawie oceniać, kiedy następuje przełamanie.
Mam więc np. macierz:

0  średnia2_1  średnia2_2  średnia2_3  średnia2_4  ...  średnia2_n
0  0           średnia3_1  średnia3_2  średnia3_3  ...  średnia3_n-1
0  0           0           średnia4_1  średnia4_2  ...  średnia4_n-2
0  0           0           0           średnia5_1  ...  średnia5_n-3

Jesteście w stanie podpowiedzieć, jak z niej wyciągnąć pozycję przełamania?

1 użytkowników online, w tym zalogowanych: 0, gości: 1