Ich habe einen Datensatz mit der Annahme, dass die nächsten Nachbarn die besten Prädiktoren sind. Nur ein perfektes Beispiel für einen Zwei-Wege-Gradienten, der
Angenommen, wir haben einen Fall, in dem nur wenige Werte fehlen, und wir können dies auf der Grundlage von Nachbarn und Trends leicht vorhersagen.
Entsprechende Datenmatrix in R (Dummy-Beispiel für Workout):
miss.mat <- matrix (c(5:11, 6:10, NA,12, 7:13, 8:14, 9:12, NA, 14:15, 10:16),ncol=7, byrow = TRUE)
miss.mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 5 6 7 8 9 10 11
[2,] 6 7 8 9 10 NA 12
[3,] 7 8 9 10 11 12 13
[4,] 8 9 10 11 12 13 14
[5,] 9 10 11 12 NA 14 15
[6,] 10 11 12 13 14 15 16
Anmerkungen: (1) Es wird angenommen, dass die Eigenschaft fehlender Werte zufällig ist. Sie kann überall vorkommen.
(2) Alle Datenpunkte stammen von einer einzelnen Variablen, aber es wird davon ausgegangen, dass ihr Wert durch die neighbors
benachbarten Zeilen und Spalten beeinflusst wird . Die Position in der Matrix ist also wichtig und kann als andere Variable betrachtet werden.
Ich hoffe, dass ich in einigen Situationen einige Abweichungen (möglicherweise Fehler) vorhersagen und die Abweichung korrigieren kann (nur ein Beispiel, lassen Sie uns einen solchen Fehler in den Dummy-Daten erzeugen):
> mat2 <- matrix (c(4:10, 5, 16, 7, 11, 9:11, 6:12, 7:13, 8:14, 9:13, 4,15, 10:11, 2, 13:16),ncol=7, byrow = TRUE)
> mat2
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 4 5 6 7 8 9 10
[2,] 5 16 7 11 9 10 11
[3,] 6 7 8 9 10 11 12
[4,] 7 8 9 10 11 12 13
[5,] 8 9 10 11 12 13 14
[6,] 9 10 11 12 13 4 15
[7,] 10 11 2 13 14 15 16
Die obigen Beispiele dienen nur der Veranschaulichung (können visuell beantwortet werden), das tatsächliche Beispiel kann jedoch verwirrender sein. Ich bin auf der Suche nach einer robusten Methode für eine solche Analyse. Ich denke das sollte möglich sein. Welche Methode wäre geeignet, um diese Art von Analyse durchzuführen? Vorschläge für R-Programme / -Pakete für diese Art der Analyse?
quelle
Antworten:
In der Frage wird nach Möglichkeiten gefragt, wie die nächsten Nachbarn auf robuste Weise verwendet werden können, um lokalisierte Ausreißer zu identifizieren und zu korrigieren. Warum nicht genau das tun?
Die Prozedur besteht darin, eine robuste lokale Glättung zu berechnen, die Residuen auszuwerten und alle zu großen zu nullen. Dies erfüllt alle Anforderungen direkt und ist flexibel genug, um sich an unterschiedliche Anwendungen anzupassen, da man die Größe der lokalen Nachbarschaft und die Schwelle zur Identifizierung von Ausreißern variieren kann.
(Warum ist Flexibilität so wichtig? Weil bei einem solchen Verfahren bestimmte lokalisierte Verhaltensweisen mit hoher Wahrscheinlichkeit als "äußerlich" eingestuft werden können. Daher können alle derartigen Verfahren als reibungslos angesehen werden . Sie beseitigen einige Details zusammen mit den offensichtlichen Ausreißern. Der Analyst muss eine gewisse Kontrolle über den Kompromiss zwischen der Beibehaltung von Details und der Nichterkennung lokaler Ausreißer haben.)
Ein weiterer Vorteil dieses Verfahrens besteht darin, dass keine rechteckige Wertematrix erforderlich ist. Tatsächlich kann es sogar auf unregelmäßige Daten angewendet werden, indem ein lokaler Glätter verwendet wird, der für solche Daten geeignet ist.
R
Neben den meisten Statistikpaketen mit vollem Funktionsumfang sind mehrere robuste lokale Smoothers integriert, zloess
. Das folgende Beispiel wurde damit bearbeitet. Die Matrix hat Zeilen und 49 Spalten - fast 4000 Einträge. Es handelt sich um eine komplizierte Funktion mit mehreren lokalen Extrema sowie einer ganzen Linie von Punkten, an denen es nicht unterscheidbar ist (eine "Falte"). Um etwas mehr als 5 % der Punkte - ein sehr hoher Anteil zu betrachten „abgelegenen“ - wurden Gauß - Fehler , deren Standardabweichung hinzugefügt ist nur 1 / 20 der Standardabweichung der ursprünglichen Daten. Dieser synthetische Datensatz bietet viele der herausfordernden Merkmale realistischer Daten.Beachten Sie, dass (gemäß
R
Konventionen) die Matrixzeilen als vertikale Streifen gezeichnet werden. Alle Bilder mit Ausnahme der Residuen sind schattiert, um kleine Abweichungen in ihren Werten anzuzeigen. Ohne dies wären fast alle lokalen Ausreißer unsichtbar!Durch den Vergleich der "unterstellten" (fixierten) mit den "echten" (nicht kontaminierten) Originalbildern wird deutlich, dass das Entfernen der Ausreißer einige, aber nicht alle Falten (die von unten verlaufen ) geglättet hat bis ( 49 , 30 ) ; es ist als hellcyanfarbener Winkelstreifen in der "Residuen" -Darstellung erkennbar).( 0 , 79 ) ( 49 , 30 )
Die Flecken in der Darstellung "Residuen" zeigen die offensichtlichen lokal isolierten Ausreißer. In diesem Diagramm wird auch eine andere Struktur (z. B. der Diagonalstreifen) angezeigt, die den zugrunde liegenden Daten zugeordnet werden kann. Man könnte dieses Verfahren verbessern, indem man ein räumliches Modell der Daten ( über geostatistische Methoden) verwendet, aber dies zu beschreiben und zu veranschaulichen, würde uns hier zu weit führen.
Übrigens wurde in diesem Code gemeldet, dass nur der 200 eingeführten Ausreißer gefunden wurden. Dies ist kein Fehlschlag des Verfahrens. Da die Ausreißer normalverteilt waren, lag ihre Größe bei etwa der Hälfte nahe bei Null - 3 oder darunter, verglichen mit zugrunde liegenden Werten mit einem Bereich von über 600 -, die keine nachweisbare Veränderung der Oberfläche bewirkten.102 200 3 600
quelle
Ich würde dir raten, dir diesen Artikel anzuschauen [0]. Das Problem, das angesprochen werden soll, scheint gut zu Ihrer Beschreibung zu passen, mit der Ausnahme, dass die vom Autor vorgeschlagene Methode etwas raffinierter ist als die NN-Eingabe (obwohl sie etwas Ähnliches als Ausgangspunkt verwendet).
Der erste Schritt jeder Iteration ist der Datenimputationsschritt. Dies geschieht wie beim EM-Algorithmus: Die fehlenden Zellen werden mit dem Wert gefüllt, den sie haben sollen (dies ist der E-Schritt).
Um das Papier zusammenzufassen, hier ist der allgemeine Algorithmus, den sie vorschlagen:
Dann machen Sie bis zur Konvergenz:
Dieser Ansatz bietet Ihnen auch eine Vielzahl von Diagnosetools, mit denen Sie die Qualität der Imputation überprüfen können. Sie können beispielsweise auch mehrere Zeichnungen aus erstellenN(ttl−1,LLDD(LL)′)
Ich weiß nicht , von einem fertig gemacht R Implementierung für diesen Ansatz, aber man kann leicht aus den Teilkomponenten (vor allem einen robusten PCA - Algorithmus) erzeugt werden, und diese sind in R implementiert, finden Sie in das rrcov Paket (das Papier ist ruhig informativ zu diesem Thema).
quelle