Mam do czynienia z danymi liniowymi z wartościami odstającymi, z których niektóre są o 5 standardowych odchyleń od szacowanej linii regresji. Szukam techniki regresji liniowej, która zmniejsza wpływ tych punktów.
Jak dotąd oszacowałem linię regresji ze wszystkimi danymi, a następnie odrzuciłem punkt danych z bardzo dużymi kwadratowymi resztkami (powiedzmy 10%) i powtórzyłem regresję bez tych punktów.
W literaturze istnieje wiele możliwych podejść: najmniej przycięte kwadraty, regresja kwantylowa, estymatory m itp. Naprawdę nie wiem, które podejście powinienem wypróbować, dlatego szukam sugestii. Dla mnie ważne jest to, że wybrana metoda powinna być szybka, ponieważ solidna regresja będzie obliczana na każdym etapie procedury optymalizacji. Wielkie dzięki!
źródło
Odpowiedzi:
Jeśli dane zawierają jedną wartość odstającą, można je wiarygodnie znaleźć przy użyciu zaproponowanego przez Ciebie podejścia (bez iteracji). Formalne podejście do tego jest
W celu znalezienia więcej niż jednej wartości odstającej od wielu lat wiodącą metodą była tak zwana rodzina metod szacowaniaJest to dość szeroka rodzina estymatorów, która obejmuje estymator regresji Hubera, regresję L1 Koenkera, a także podejście zaproponowane przez Procastinator w jego komentarzu do twojego pytania. The estymatory o wypukłym funkcji mają tę zaletę, że mają o tej samej złożoności numerycznej jako stałego oszacowania regresji. Dużą wadą jest to, że mogą niezawodnie znaleźć wartości odstające, tylko jeśli:M M ρM M M ρ
Możesz znaleźć dobrą implementację oszacowań regresji ( ) w pakiecie ( ) . L 1M l1
robustbase
quantreg
R
Jeśli Twoje dane zawierają więcej niż odstająca potencjalnie również zależna od przestrzeni projektowej, wówczas znalezienie ich sprowadza się do rozwiązania problemu kombinatorycznego (równoważnie rozwiązanie estymatora z ponownym funkcja decending / non-wypukła ). Mρ⌊np+1⌋ M ρ
W ciągu ostatnich 20 lat (a zwłaszcza ostatnich 10) opracowano dużą liczbę szybkich i niezawodnych algorytmów wykrywania wartości odstających, aby w przybliżeniu rozwiązać ten problem kombinatoryczny. Są one obecnie szeroko implementowane w najpopularniejszych pakietach statystycznych (R, Matlab, SAS, STATA, ...).
Niemniej jednak złożoność numeryczna znalezienia wartości odstających przy tych podejściach jest zazwyczaj rzędu . Większość algorytmów można zastosować w praktyce dla wartości w wieku dojrzewania. Zazwyczaj algorytmy te są liniowe w (liczbie obserwacji), więc liczba obserwacji nie stanowi problemu. Dużą zaletą jest to, że większość tych algorytmów jest żenująco równoległa. Niedawno zaproponowano wiele podejść zaprojektowanych specjalnie dla danych o wyższych wymiarach.p nO(2p) p n
Biorąc pod uwagę, że nie podałeś w swoim pytaniu, wymienię niektóre odniesienia dla sprawy . Oto kilka artykułów, które wyjaśniają to bardziej szczegółowo w tej serii artykułów przeglądowych:p < 20p p<20
Najnowszy podręcznik dotyczący problemu identyfikacji wartości odstających to:
Te (i wiele innych odmian tych) metod są implementowane (między innymi) w pakiecie.
robustbase
R
źródło
W przypadku prostej regresji (pojedynczy x) można powiedzieć coś o linii Theil-Sen pod względem odporności na odchylenia Y i wpływowych punktów, a także ogólnie dobrej wydajności (normalnej) w porównaniu do LS dla zbocza. Punkt przebicia stoku wynosi prawie 30%; o ile przechwytywanie (istnieje wiele możliwych przechwyceń, z których ludzie korzystali) nie ma mniejszego podziału, cała procedura dość dobrze radzi sobie ze znaczną częścią zanieczyszczenia.
Jego prędkość może brzmieć tak, jakby była zła - mediana wygląda na nawet z medianą - ale pamiętam, że można to zrobić szybciej jeśli prędkość naprawdę stanowi problem ( , myślę)(n2) O(n2) O(n) O(nlogn)
Edycja: użytkownik603 poprosił o przewagę regresji Theil nad regresją L1. Odpowiedź to inna rzecz, o której wspomniałem - wpływowe punkty:
Czerwona linia to dopasowanie (od funkcji w pakiecie). Kolor zielony pasuje do stoku Theil. Wystarczy jedna literówka w wartości x - jak pisanie 533 zamiast 53 - i takie rzeczy mogą się zdarzyć. Dlatego dopasowanie nie jest odporne na pojedynczą literówkę w przestrzeniL1 L1
rq
quantreg
źródło
Czy spojrzałeś na RANSAC (Wikipedia) ?
Powinno to być dobre w obliczaniu rozsądnego modelu liniowego, nawet gdy występuje dużo wartości odstających i szumu, ponieważ opiera się on na założeniu, że tylko część danych faktycznie należy do mechanizmu.
źródło
Znalazłem najlepszą regresję błędów za pomocą . Możesz także użyć iteracyjnie i ponownie zważyć próbki, które nie są zbyt spójne z rozwiązaniem. Podstawową ideą jest rozszerzenie modelu o błędy: gdzie jest nieznanym wektorem błędów. Teraz wykonujesz regresję na . Co ciekawe, możesz oczywiście użyć do tego „skondensowanego lassa”, kiedy możesz z góry oszacować pewność swoich pomiarów i umieścić to jako ważenie w i rozwiązać nowe, nieco inne zadaniel1
Więcej informacji można znaleźć tutaj: http://statweb.stanford.edu/~candes/papers/GrossErrorsSmallErrors.pdf
źródło