Jak scharakteryzować nagłą zmianę?

13

To pytanie może być zbyt proste. Jeśli chodzi o tymczasowy trend danych, chciałbym dowiedzieć się, w którym momencie następuje „nagła” zmiana. Na przykład na pierwszym rysunku pokazanym poniżej chciałbym znaleźć punkt zmiany za pomocą metody statystycznej. I chciałbym zastosować taką metodę w niektórych innych danych, których punkt zmiany nie jest oczywisty (jak na 2. rysunku). Czy istnieje zatem wspólna metoda do tego celu?

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

użytkownik2230101
źródło
3
termin „punkt zwrotny” ma szczególne znaczenie, które moim zdaniem nie odnosi się do nagłej zmiany poziomu (w górę lub w dół). Używasz również wyrażenia „punkt zmiany” i myślę, że to prawdopodobnie lepszy wybór. Proszę, nie myśl, że jest to „zbyt podstawowe”; nawet podstawowe pytania są mile widziane bez potrzeby przeprosin, a to pytanie nie jest w ogóle podstawowe.
Glen_b
Dzięki. W pytaniu zmieniłem „punkt zwrotny” na „punkt zmiany”.
user2230101,

Odpowiedzi:

11

Jeśli obserwacje danych szeregów czasowych są skorelowane z wcześniejszymi obserwacjami, artykuł Chen i Liu (1993) może cię zainteresować. Opisuje metodę wykrywania przesunięć poziomów i tymczasowych zmian w ramach modeli szeregów czasowych autoregresyjnej średniej ruchomej.[1]

[1]: Chen, C. i Liu, LM. (1993),
„Joint Estimation of Model Parameters and Outlier Effects in Time Series”,
Journal of the American Statistics Association , 88 : 421, 284-297

javlacalle
źródło
+1 Próbowałem (ale nie udało mi się) zapamiętać wystarczająco dużo o tym papierze, aby go znaleźć. To dobra referencja.
Glen_b
6

Ten problem w statystykach jest określany jako (jednoczynnikowy) wykrywanie zdarzeń czasowych. Najprostszym pomysłem jest zastosowanie średniej ruchomej i odchylenia standardowego. Każdy odczyt, który jest „poza” 3 odchyleniami standardowymi (zasada praktyczna) jest uważany za „zdarzenie”. Istnieją oczywiście bardziej zaawansowane modele wykorzystujące HMM lub regresję. Oto wstępny przegląd tego pola .

użytkownik1669710
źródło
5
Jest to jedyny publicznie dostępny post w całej sieci, w którym znajduje się fraza „Wykrywanie zdarzeń czasowych o jednym przebiegu”! Jakie jest twoje źródło tego terminu?
whuber
Przepraszam, jeśli to było mylące. Wykrywanie zdarzeń jest bardziej powszechnym terminem, a Czasowy jest czasem używany osobno. Jednowymiarowy nie jest powszechnie stosowany, ponieważ podejścia są zwykle wielowymiarowe, ale jest to jego szczególny przypadek.
user1669710,
1
zredagował odpowiedź w celu włączenia komentarza @whuber
user1669710
@ ser1669710 Dzięki. Właśnie tego szukam. Wydaje się, że średnia krocząca nie może rozwiązać mojego problemu. Muszę spojrzeć na bardziej skomplikowany model.
user2230101,
Chciałbym dowiedzieć się więcej o wykrywaniu zdarzeń czasowych. Prezentowane przez Ciebie slajdy są fajne, ale zastanawiałem się, czy masz link do artykułu przeglądowego, który opisuje pole nieco bardziej formalnie?
aaragon
1

jotja={0x<xja1xxja
x1<x2)<<xmjotjajotzaprjaljotremidomimbmirxja

jot1jot2)x1x2)

Russ Lenth
źródło
1
PS - @ user1669710 i ja jednocześnie opublikowaliśmy odpowiedzi. Głosowałem na ten, ponieważ jest on oczywiście lepiej zbadany. Ale zostawiam to tutaj, ponieważ jest to alternatywa, która działa i jest łatwa do wdrożenia.
Russ Lenth
1
Ponieważ wykorzystuje ona regresję krokową i wykorzystuje wiele zmiennych kandydujących, procedura ta wygląda podejrzanie. Gdzie zostało zbadane i jakie ma właściwości? Jak wypada w porównaniu z innymi metodami wymiany ?
whuber
@ whuber, mój punkt dokładnie. Dlatego głosowałem na inną odpowiedź. Nie będzie to zbyt korzystne porównanie, jeśli masz bardzo szczegółowy zestaw wartości punktów zmiany. I może nawet nie porównać tego korzystnie. Po prostu przedstawiam to jako metodę ad hoc i myślę, że przedstawiłem to jako takie. Myślę jednak, że taka metoda może być dobrym sposobem na uzyskanie wartości początkowych dla metody nieliniowej.
Russ Lenth
Idea leży u podstaw niektórych z bardziej skutecznych metod Changepoint znalazłem, ale korzystanie z regresji krokowej w poszczególnych marek mnie podejrzewają (choć nie jestem pewien), że ta metoda może nie nawet produkować rozsądne punkty wyjścia dla innych metod, aby poprawić. Dlatego jestem ciekawy, czy w ogóle zostało to zbadane.
whuber
Myślę, że nie byłoby problemów z wyborem wszystkich podzbiorów, o ile tak naprawdę istnieje określona liczba skoków (powiedzmy dwa), ponieważ znaleźlibyśmy dwa skoki, które najlepiej wyjaśniają dane. Inne metody selekcji mogą być problematyczne, podobnie jak w innych sytuacjach. Myślę, że zależy to od tego, jak ważne jest uzyskanie najlepszej odpowiedzi, w porównaniu z dobrą odpowiedzią, a nie szybką odpowiedzią. Nie wszystkie problemy są takie same, podobnie jak wszyscy klienci. Najlepszą odpowiedzią na świecie jest całkowita porażka, jeśli nie potrafisz tego wyjaśnić.
Russ Lenth
1

Istnieje pokrewny problem dzielenia serii lub sekwencji na czary o idealnie stałych wartościach. Zobacz Jak mogę grupować dane liczbowe w naturalnie tworzące się „nawiasy”? (np. dochód)

Nie jest to ten sam problem, ponieważ pytanie nie wyklucza czarów z powolnym dryfowaniem w dowolnym kierunku lub we wszystkich kierunkach, ale bez gwałtownych zmian.

Bardziej bezpośrednią odpowiedzią jest stwierdzenie, że szukamy dużych skoków, więc jedynym prawdziwym problemem jest zdefiniowanie skoku. Pierwszym pomysłem jest więc spojrzenie na pierwsze różnice między sąsiednimi wartościami. Nie jest nawet jasne, że musisz to udoskonalić, usuwając najpierw hałas, ponieważ jeśli skoki nie można odróżnić od różnic w hałasie, z pewnością nie mogą być gwałtowne. Z drugiej strony pytający najwyraźniej chce, aby nagła zmiana obejmowała zarówno zmianę narastającą, jak i stopniową, więc wydaje się, że potrzebne jest pewne kryterium, takie jak wariancja lub zakres w oknach o stałej długości.

Nick Cox
źródło
1

Obszarem statystyk, którego szukasz, jest analiza zmian. Jest tu strona internetowa , która daje przegląd obszaru, a także stronę z oprogramowaniem.

Jeśli jesteś Rużytkownikiem, polecam changepointpakiet zmian średnich i strucchangepakiet zmian regresji. Jeśli chcesz być Bayesianem, bcppakiet też jest dobry.

Ogólnie rzecz biorąc, musisz wybrać próg wskazujący siłę zmian, których szukasz. Istnieją oczywiście wybory progowe, które ludzie popierają w pewnych sytuacjach, a także można użyć asymptotycznych poziomów zaufania lub ładowania początkowego, aby uzyskać pewność siebie.

adunaic
źródło
1
OP zidentyfikował dwa przykłady, z których jeden nazwałbym krokiem, a drugi rampą, chociaż zawsze istnieje możliwość sporów o słowa. Zobacz także moją odpowiedź tutaj. Jak te metody radzą sobie z rampami? Czy mają milczący lub wyraźny model stopniowej zmiany?
Nick Cox,
Dzięki za pytanie, Nick. Zasadniczo zależy to od długości rampy. Jeśli jest to krótka rampa, jest ona traktowana jako 1 zmiana, jeśli rampa jest dłuższa, wówczas często metody punktu zmiany identyfikują 2 zmiany, 1 na początku rampy i 1 na końcu. Oczywiście zależy to od założonego modelu bazowego.
adunaic
1

Ten problem wnioskowania ma wiele nazw, w tym punkty zmiany, punkty przełączania, punkty przerwania, regresja linii przerywanej, regresja łamanego pręta, regresja dwuliniowa, regresja liniowa fragmentaryczna, lokalna regresja liniowa, regresja segmentowa i modele nieciągłości.

Oto przegląd pakietów punktów zmiany z zaletami / wadami i sprawdzonymi przykładami. Jeśli znasz liczbę punktów wymiany a priori, sprawdź mcppakiet. Najpierw symulujmy dane:

df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))

Pierwszym problemem są trzy segmenty tylko przechwytujące:

model = list(
  y ~ 1,  # Intercept
  ~ 1,  # etc...
  ~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")

Możemy wykreślić wynikowe dopasowanie:

plot(fit)

wprowadź opis zdjęcia tutaj

Tutaj punkty zmiany są bardzo dobrze zdefiniowane (wąskie). Podsumujmy dopasowanie, aby zobaczyć ich wywnioskowane lokalizacje ( cp_1i cp_2):

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: y ~ 1
  2: y ~ 1 ~ 1
  3: y ~ 1 ~ 1

Population-level parameters:
    name   mean lower upper Rhat n.eff
    cp_1   3.05   3.0   3.1    1  6445
    cp_2  11.05  11.0  11.1    1  6401
   int_1   0.14  -1.9   2.1    1  5979
   int_2 179.86 178.8 180.9    1  6659
   int_3  22.76  19.8  25.5    1  5906
 sigma_1   4.68   4.1   5.3    1  5282

Możesz wykonywać znacznie bardziej skomplikowane modele mcp, w tym modelowanie autoregresji rzędu N (przydatne w szeregach czasowych) itp. Oświadczenie: Jestem programistą mcp.

Jonas Lindeløv
źródło