Szukam biblioteki Pythona, która może przeprowadzać regresję segmentową (zwaną także regresją częściową) .
Przykład :
python
linear-regression
library
software-recommendation
Franck Dernoncourt
źródło
źródło
Odpowiedzi:
numpy.piecewise
mogę to zrobić.Przykład podano tutaj na SO . Dla kompletności, oto przykład:
źródło
Metoda zaproponowana przez Vito MR Muggeo [1] jest stosunkowo prosta i wydajna. Działa dla określonej liczby segmentów i dla funkcji ciągłej. Pozycje punktów przerwania szacuje się iteracyjnie , wykonując dla każdej iteracji segmentową regresję liniową umożliwiającą skoki w punktach przerwania. Na podstawie wartości skoków odejmuje się kolejne pozycje punktu przerwania, aż nie będzie już nieciągłości (skoki).
W szczególności zbieżność lub wynik może zależeć od pierwszego oszacowania punktów przerwania.
Ta metoda jest stosowana w R pakietu podzieloną na odcinki .
Oto implementacja w Pythonie:
Przykład:
[1]: Muggeo, VM (2003). Szacowanie modeli regresji z nieznanymi punktami przerwania. Statystyka w medycynie, 22 (19), 3055-3071.
źródło
Szukałem tej samej rzeczy i niestety wydaje się, że w tej chwili jej nie ma. Kilka sugestii dotyczących dalszego postępowania można znaleźć w poprzednim pytaniu .
Alternatywnie możesz zajrzeć do niektórych bibliotek R, np. Podzielonych na segmenty, SiZer, strucchange i jeśli coś tam działa, spróbuj osadzić kod R w pythonie za pomocą rpy2 .
Edytowanie w celu dodania linku do py-earth , „Implementacja Pythona wielowymiarowych splajnów regresji adaptacyjnej Jerome Friedmana”.
źródło
Istnieje post na blogu z rekurencyjną implementacją regresji częściowej. To rozwiązanie pasuje do regresji nieciągłej.
Jeśli jesteś niezadowolony z nieciągłego modelu i chcesz ciągłego ustawiania, proponuję poszukać twojej krzywej na podstawie
k
krzywych w kształcie litery L, używając Lasso do rzadkości:Ten kod zwróci wektor szacowanych współczynników:
Ze względu na podejście Lasso jest rzadkie: model znalazł dokładnie jeden punkt przerwania na 10 możliwych. Liczby 0,57 i 0,825 odpowiadają 0,5 i 1,25 w prawdziwej MZD. Chociaż nie są bardzo blisko, dopasowane krzywe to:
To podejście nie pozwala dokładnie oszacować punktu przerwania. Ale jeśli twój zestaw danych jest wystarczająco duży, możesz grać z innym
k
(być może dostroić go przez krzyżową weryfikację) i wystarczająco dokładnie oszacować punkt przerwania.źródło