Czy są jakieś pakiety do częściowej regresji liniowej, które mogą automatycznie wykrywać wiele węzłów? Dzięki. Kiedy korzystam z pakietu strucchange. Nie mogłem wykryć punktów zmiany. Nie mam pojęcia, jak wykrywa punkty zmiany. Na podstawie wykresów widziałem, że jest kilka punktów, które mogą pomóc mi je wybrać. Czy ktoś mógłby podać tutaj przykład?
regression
change-point
Honglang Wang
źródło
źródło
segmented
pakiet jest tym, czego szukasz.segmented
pakietem R : stackoverflow.com/a/18715116/857416Odpowiedzi:
Czy MARS miałby zastosowanie? R ma pakiet,
earth
który go implementuje.źródło
Ogólnie rzecz biorąc, trochę dziwne jest dopasowanie czegoś jako liniowego kawałka. Jednak jeśli naprawdę chcesz to zrobić, algorytm MARS jest najbardziej bezpośredni. Będzie budować funkcję jeden węzeł na raz; a następnie zwykle przycina liczbę węzłów, aby zwalczyć nadmiernie ala drzewa decyzyjne. Możesz uzyskać dostęp do algorytmu MARS w R za pośrednictwem
earth
lubmda
. Ogólnie rzecz biorąc, jest on zgodny z GCV, który nie jest tak daleko od pozostałych kryteriów informacyjnych (AIC, BIC itp.)MARS tak naprawdę nie zapewni ci „optymalnego” dopasowania, ponieważ węzły są hodowane pojedynczo. Naprawdę trudno byłoby dopasować naprawdę „optymalną” liczbę węzłów, ponieważ możliwe kombinacje umieszczania węzłów szybko by wybuchły.
Ogólnie dlatego ludzie zwracają się w kierunku wygładzania splajnów. Większość wygładzających splajnów ma kształt sześcienny, dzięki czemu można oszukać ludzkie oko, by nie zauważył nieciągłości. Byłoby jednak możliwe wykonanie liniowego wygładzania splajnu. Dużą zaletą wygładzania splajnów jest ich pojedynczy parametr do optymalizacji. To pozwala szybko osiągnąć naprawdę „optymalne” rozwiązanie bez konieczności przeszukiwania mnóstwa permutacji. Jeśli jednak naprawdę chcesz szukać punktów przegięcia i masz wystarczająco dużo danych, aby to zrobić, prawdopodobnie najlepszym rozwiązaniem byłby MARS.
Oto przykładowy kod karanych wygładzaniem liniowym splajnów w R:
Rzeczywiste wybrane węzły niekoniecznie korelują z żadnym prawdziwym punktem przegięcia.
źródło
Kilka lat temu zaprogramowałem to od zera i mam plik Matlab do wykonywania regresji liniowej na komputerze. Około 1 do 4 punktów przerwania jest obliczeniowo możliwe dla około 20 punktów pomiaru. 5 lub 7 punktów przerwania zaczyna być naprawdę za dużo.
Podejście czysto matematyczne, jak widzę, polega na wypróbowaniu wszystkich możliwych kombinacji, jak sugeruje użytkownik mbq w pytaniu powiązanym z komentarzem pod twoim pytaniem.
Ponieważ wszystkie dopasowane linie są kolejne i przylegają do siebie (bez nakładania się), kombinatoryka podąży za trójkątem Paskal. Gdyby segmenty linii nakładały się między wykorzystanymi punktami danych, uważam, że kombinatoryka podążyłaby za liczbami Stirlinga drugiego rodzaju.
Moim zdaniem najlepszym rozwiązaniem jest wybór kombinacji dopasowanych linii, która ma najniższe odchylenie standardowe wartości korelacji R ^ 2 dopasowanych linii. Spróbuję wyjaśnić na przykładzie. Pamiętaj jednak, że pytanie, ile punktów przerwania należy znaleźć w danych, jest podobne do pytania „Jak długie jest wybrzeże Wielkiej Brytanii?” jak w jednym z artykułów Benoita Mandelbrotsa (matematyka) na temat fraktali. I istnieje kompromis między liczbą punktów przerwania a głębokością regresji.
Teraz do przykładu.
Załóżmy, że mamy idealne dane w funkcji ( i są liczbami całkowitymi):x x yy x x y
Te wartości y mają wykres:
Który ma wyraźnie dwa punkty przerwania. Dla celów argumentu obliczymy wartości korelacji R ^ 2 (z formułami komórek Excela (europejski styl przecinek-kropka)):
dla wszystkich możliwych nie nakładających się kombinacji dwóch dopasowanych linii. Wszystkie możliwe pary wartości R ^ 2 mają wykres:
Pytanie brzmi, którą parę wartości R ^ 2 powinniśmy wybrać i jak uogólnić do wielu punktów przerwania, jak podano w tytule? Jednym wyborem jest wybór kombinacji, dla której suma korelacji R-kwadrat jest najwyższa. Kreśląc to, otrzymujemy górną niebieską krzywą poniżej:
Niebieska krzywa, suma wartości R-kwadrat, jest najwyższa pośrodku. Jest to lepiej widoczne z tabeli o wartości jako najwyższej wartości. Jednak moim zdaniem minimum czerwonej krzywej jest dokładniejsze. To znaczy, minimalne odchylenie standardowe wartości R ^ 2 dopasowanych linii regresji powinno być najlepszym wyborem.1 , 0455
Regresja liniowa według kawałków - Matlab - wiele punktów przerwania
źródło
Istnieje całkiem niezły algorytm opisany w Tomé i Miranda (1984) .
Kod i GUI są dostępne zarówno w Fortran, jak i IDL na ich stronie internetowej: http://www.dfisica.ubi.pt/~artome/linearstep.html
źródło
... przede wszystkim musisz to zrobić iteracyjnie i pod pewnymi kryteriami informacyjnymi, takimi jak AIC AICc BIC Cp; ponieważ można uzyskać „idealne” dopasowanie, jeśli liczba węzłów K = liczba punktów danych N, ok. ... najpierw wstaw K = 0; oszacuj L = K + 1 regresji, oblicz na przykład AICc; następnie załóż minimalną liczbę punktów danych w oddzielnym segmencie, powiedzmy L = 3 lub L = 4, ok ... wstaw K = 1; zacznij od L-tych danych jako pierwszego węzła, oblicz SS lub MLE, ... i krok po kroku następny punkt danych jako węzeł, SS lub MLE, aż do ostatniego węzła na danych N-L; wybierz układ z najlepszym dopasowaniem (SS lub MLE) oblicz AICc ... ... wstaw K = 2; ... użyj wszystkich poprzednich regresji (to jest ich SS lub MLE), ale krok po kroku podziel jeden segment na wszystkie możliwe części ... wybierz układ z najlepszym dopasowaniem (SS lub MLE) oblicz AICc ... jeśli ostatni AICc występuje wyżej niż poprzedni: zatrzymaj iteracje! To optymalne rozwiązanie zgodnie z kryterium AICc, ok
źródło
Kiedyś natknąłem się na program o nazwie Joinpoint . Na swojej stronie internetowej mówią, że pasuje to do modelu punktów łączenia, w którym „kilka różnych linii jest połączonych razem w„ punktach połączenia ”. I dalej: „Użytkownik podaje minimalną i maksymalną liczbę punktów łączenia. Program rozpoczyna się od minimalnej liczby punktów łączenia (np. 0 punktów łączenia, co jest linią prostą) i sprawdza, czy więcej punktów łączenia jest statystycznie znaczących i należy je dodać do modelu (do tej maksymalnej liczby). ”
NCI używa go do modelowania trendów wskaźników zachorowań na raka, być może pasuje to również do twoich potrzeb.
źródło
Aby dopasować do danych, funkcja kawałkowa:
Na przykład, przy dokładnych danych dostarczonych przez Mats Granvik, wynik jest następujący:
Bez rozproszonych danych ten przykład nie jest bardzo znaczący. Inne przykłady z rozproszonymi danymi pokazano w odnośniku.
źródło
Możesz skorzystać z
mcp
pakietu, jeśli znasz liczbę punktów zmiany do wnioskowania. Daje to dużą elastyczność modelowania i wiele informacji o punktach zmiany i parametrach regresji, ale kosztem szybkości.Witryna mcp zawiera wiele zastosowanych przykładów, np.
Następnie możesz wizualizować:
Lub podsumuj:
Oświadczenie: Jestem programistą mcp.
źródło