Mam pewne dane, których gładko używam loess
. Chciałbym znaleźć punkty przegięcia wygładzonej linii. czy to możliwe? Jestem pewien, że ktoś wymyślił wymyślną metodę rozwiązania tego ... to znaczy ... w końcu to R!
Nie przeszkadza mi zmiana funkcji wygładzania, której używam. Po prostu użyłem, loess
ponieważ tego właśnie używałem w przeszłości. Ale każda funkcja wygładzania jest w porządku. Zdaję sobie sprawę, że punkty przegięcia będą zależeć od używanej funkcji wygładzania. Nic mi nie jest. Chciałbym zacząć od posiadania dowolnej funkcji wygładzania, która może pomóc wypluć punkty przegięcia.
Oto kod, którego używam:
x = seq(1,15)
y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9)
plot(x,y,type="l",ylim=c(3,10))
lo <- loess(y~x)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
out = predict(lo,xl)
lines(xl, out, col='red', lwd=2)
Odpowiedzi:
Z perspektywy używania R do znajdowania przegięć na wygładzonej krzywej, wystarczy znaleźć te miejsca na wygładzonych wartościach Y, w których znak zmiany przełączników y.
Następnie możesz dodać punkty do wykresu, na których występują te zmiany.
Z punktu widzenia znalezienia statystycznie znaczących punktów przegięcia zgadzam się z @nico, że powinieneś przyjrzeć się analizie zmiany punktu, czasami nazywanej również regresją segmentową.
źródło
Na kilku poziomach występują problemy.
Po pierwsze, less jest po prostu płynniejszy i istnieje wiele, wiele do wyboru. Optymiści twierdzą, że prawie każdy rozsądny wygładzacz znajdzie prawdziwy wzór i że prawie wszyscy rozsądni wygładzacze zgadzają się co do prawdziwych wzorów. Pesymiści twierdzą, że to jest problem i że „rozsądne wygładzanie” i „prawdziwe wzorce” są tu definiowane wzajemnie. Do rzeczy, dlaczego less i dlaczego uważasz, że to dobry wybór tutaj? Wybór nie dotyczy tylko jednej wygładzającej lub pojedynczej implementacji wygładzającej (nie wszystko, co pod nazwą less lub lowess jest identyczne w oprogramowaniu), ale także jednego stopnia wygładzania (nawet jeśli jest to wybrane przez rutyna dla ciebie). Wspominasz o tym punkcie, ale to nie dotyczy.
Mówiąc dokładniej, jak pokazuje twój przykład zabawki, podstawowe funkcje, takie jak punkty zwrotne, mogą łatwo nie zostać zachowane przez lessa (nie można też wyróżnić lessa). Twoje pierwsze lokalne minimum znika, a drugie lokalne minimum jest zastępowane przez konkretną płynność, którą pokazujesz. Odmiany zdefiniowane przez zera drugiej pochodnej zamiast pierwszej mogą być jeszcze bardziej zmienne.
źródło
Istnieje wiele świetnych podejść do tego problemu. Niektóre obejmują. (1) - punkt wymiany - pakiet (2) - segmentowany - pakiet. Ale musisz wybrać liczbę punktów wymiany. (3) MARS zaimplementowany w pakiecie –arth
W zależności od kompromisu / wariancji wszystkie dają nieco inne informacje. -segmentowane- jest warte zobaczenia. Różną liczbę modeli punktów wymiany można porównać z AIC / BIC
źródło
Być może możesz użyć biblioteki fda, a gdy oszacujesz odpowiednią funkcję ciągłą, możesz łatwo znaleźć miejsca, w których druga pochodna wynosi zero.
FDA CRAN
FDA Intro
źródło
Wielokrotnie odwiedzałem blog na temat pakietu zmian (> 650 od 11 listopada 2014 r.), Więc oto zaktualizowany post wykorzystujący CausalImpact. http://r-datameister.blogspot.com/2014/11/causality-in-time-series-look-at-2-r.html
źródło