Ich habe es mit linearen Daten mit Ausreißern zu tun, von denen einige um mehr als 5 Standardabweichungen von der geschätzten Regressionslinie abweichen. Ich suche nach einer linearen Regressionstechnik, die den Einfluss dieser Punkte verringert.
Bisher habe ich die Regressionsgerade mit allen Daten geschätzt, dann den Datenpunkt mit sehr großen quadratischen Residuen (sagen wir die oberen 10%) verworfen und die Regression ohne diese Punkte wiederholt.
In der Literatur gibt es viele mögliche Ansätze: am wenigsten zugeschnittene Quadrate, Quantilregression, m-Schätzer usw. Ich weiß wirklich nicht, welchen Ansatz ich versuchen soll, also suche ich nach Vorschlägen. Für mich ist wichtig, dass die gewählte Methode schnell ist, da die robuste Regression bei jedem Schritt einer Optimierungsroutine berechnet wird. Danke vielmals!
quelle
Antworten:
Wenn Ihre Daten einen einzelnen Ausreißer enthalten, können sie mit dem von Ihnen vorgeschlagenen Ansatz zuverlässig gefunden werden (allerdings ohne die Iterationen). Ein formeller Ansatz hierfür ist
Um mehr als einen Ausreißer über viele Jahre hinweg zu finden, war die führende Methode die sogenannte Bestimations - Ansatzfamilie. Dies ist eine ziemlich breite Familie von Schätzern, zu denen Hubers Schätzer der Regression, Koenkers L1-Regression sowie der von Procastinator in seinem Kommentar zu Ihrer Frage vorgeschlagene Ansatz gehören. Die Schätzer mit konvexen Funktionen haben den Vorteil, dass sie in etwa die gleiche numerische Komplexität haben wie eine reguläre Regressionsschätzung. Der große Nachteil ist, dass sie die Ausreißer nur zuverlässig finden können, wenn:M M ρM M M ρ
Eine gute Implementierung von ( ) Regressionsschätzungen finden Sie im ( ) -Paket. l 1M l1
robustbase
quantreg
R
Wenn Ihre Daten mehr als Ausreißer enthalten, die möglicherweise auch außerhalb des Entwurfsbereichs liegen, dann bedeutet das Auffinden, dass ein kombinatorisches Problem gelöst wird (entsprechend der Lösung eines Schätzers mit neuem absteigende / nicht konvexe Funktion). Mρ⌊np+1⌋ M ρ
In den letzten 20 Jahren (und insbesondere in den letzten 10 Jahren) wurde eine Vielzahl schneller und zuverlässiger Ausreißererkennungsalgorithmen entwickelt, um dieses kombinatorische Problem näherungsweise zu lösen. Diese sind mittlerweile in den gängigsten Statistikpaketen (R, Matlab, SAS, STATA, ...) weit verbreitet.
Die numerische Komplexität der Ermittlung von Ausreißern mit diesen Ansätzen liegt jedoch typischerweise in der Größenordnung von . Die meisten Algorithmen können in der Praxis für Werte von im mittleren Teenageralter verwendet werden. In der Regel sind diese Algorithmen in (Anzahl der Beobachtungen) linear, sodass die Anzahl der Beobachtungen kein Problem darstellt. Ein großer Vorteil ist, dass die meisten dieser Algorithmen peinlich parallel sind. In jüngerer Zeit wurden viele Ansätze speziell für höherdimensionale Daten vorgeschlagen.p nO(2p) p n
Da Sie in Ihrer Frage nicht angegeben haben , werde ich einige Referenzen für den Fall . Im Folgenden finden Sie einige Artikel, die dies in dieser Reihe von Übersichtsartikeln näher erläutern:p < 20p p<20
Ein aktuelles Nachschlagewerk zum Problem der Ausreißeridentifikation ist:
Diese (und viele andere Variationen dieser) Methoden sind (unter anderem) im Paket implementiert.
robustbase
R
quelle
Für die einfache Regression (single x) gibt es für die Theil-Sen-Linie etwas zu sagen, was die Robustheit gegenüber y-Ausreißern und einflussreichen Punkten sowie die im Allgemeinen gute Effizienz (im Normalfall) im Vergleich zu LS für die Steigung betrifft. Der Durchschlagspunkt für die Steigung liegt bei fast 30%; Solange der Abschnitt (es gibt eine Vielzahl möglicher Abschnitte, die von Menschen verwendet wurden) keine geringere Aufschlüsselung aufweist, kommt das gesamte Verfahren mit einem beträchtlichen Kontaminationsanteil recht gut zurecht.
Die Geschwindigkeit mag sich schlecht anhören - der Median von Steigungen scheint selbst mit einem Median - aber ich erinnere mich, dass es schneller geht wenn Geschwindigkeit wirklich ein Problem ist ( , glaube ich)(n2) O(n2) O(n) O(nlogn)
Edit: user603 hat um einen Vorteil der Theil-Regression gegenüber der L1-Regression gebeten. Die Antwort ist die andere Sache, die ich erwähnt habe - einflussreiche Punkte:
Die rote Linie ist die Anpassung (aus der Funktion im Paket). Das Grün passt zu einem Theil-Hang. Alles, was es braucht, ist ein Tippfehler im x-Wert - wie die Eingabe von 533 anstelle von 53 - und so etwas kann passieren. Daher ist die Anpassung für einen einzelnen Tippfehler im x-Raum nicht robust.L1 L1
rq
quantreg
quelle
Haben Sie sich RANSAC (Wikipedia) angesehen ?
Auf diese Weise sollte ein vernünftiges lineares Modell berechnet werden können, auch wenn es viele Ausreißer und Rauschen gibt, da davon ausgegangen wird, dass nur ein Teil der Daten tatsächlich zum Mechanismus gehört.
quelle
Ich fand die bestrafte Fehlerregression am besten. Sie können es auch iterativ verwenden und Proben neu gewichten, die mit der Lösung nicht sehr konsistent sind. Die Grundidee ist, Ihr Modell mit Fehlern zu erweitern: wobei der unbekannte Fehlervektor ist. Nun führen Sie die Regression für . Interessanterweise können Sie hierfür natürlich "Fused Lasso" verwenden, wenn Sie die Sicherheit Ihrer Messungen im Voraus abschätzen und diese als Gewichtung in und die neue geringfügig andere Aufgabe lösen könnenl1
Weitere Informationen finden Sie hier: http://statweb.stanford.edu/~candes/papers/GrossErrorsSmallErrors.pdf
quelle