Ich habe eine große Menge von Merkmalsvektoren, die ich verwenden werde, um ein Binärklassifizierungsproblem anzugreifen (mit Scikit Learn in Python). Bevor ich mich mit Imputation beschäftige, möchte ich anhand der verbleibenden Teile der Daten feststellen, ob die fehlenden Daten "zufällig" oder nicht zufällig fehlen.
Was ist ein vernünftiger Weg, um diese Frage anzugehen?
Es stellt sich heraus, dass es eine bessere Frage ist, ob die Daten "völlig zufällig fehlen" oder nicht. Was ist ein vernünftiger Weg, um das zu tun?
missing-data
randomness
Lembik
quelle
quelle
Antworten:
Ich habe die Informationen, über die ich gesprochen habe, in meinem Kommentar gefunden.
Aus van Buurens Buch , Seite 31, schreibt er
Es wurden mehrere Tests vorgeschlagen, um MCAR im Vergleich zu MAR zu testen. Diese Tests sind nicht weit verbreitet und ihr praktischer Wert ist unklar. Siehe Enders Für eine Bewertung von zwei Verfahren (2010, S. 17–21). Es ist nicht möglich, zu testen MAR versus MNAR, da die Informationen, die für einen solchen Test benötigt werden, fehlen. "
quelle
Dies ist nur möglich, wenn Sie die fehlenden Daten abrufen konnten. Sie können anhand der beobachteten Daten nicht feststellen, ob die fehlenden Daten zufällig (MAR) oder nicht zufällig (MNAR) vorliegen. Sie können nur feststellen, ob die Daten eindeutig nicht völlig zufällig fehlen (MCAR). Darüber hinaus sollte die Plausibilität von MCAR oder MAR im Gegensatz zu MNAR nur auf der Grundlage Ihrer Kenntnisse geprüft werden (z. B. gemeldete Gründe für das Fehlen von Daten). Alternativ könnten Sie argumentieren, dass es nicht allzu wichtig ist, da der Anteil der fehlenden Daten gering ist und unter MNAR sehr extreme Szenarien auftreten müssten, damit Ihre Ergebnisse verworfen werden (siehe "Tipping Point Analysis").
quelle
Dies klingt unter dem Gesichtspunkt der Klassifizierung durchaus machbar.
Sie möchten fehlende und nicht fehlende Daten mit allen anderen Funktionen klassifizieren. Wenn Sie deutlich bessere Ergebnisse erzielen als zufällige Ergebnisse, fehlen Ihre Daten nicht zufällig.
quelle
Sie möchten wissen, ob eine Korrelation zwischen einem Wert, der in einem Feature fehlt, und dem Wert eines anderen Features besteht.
Erstellen Sie für jedes der Features ein neues Feature, das angibt, ob der Wert fehlt oder nicht (nennen wir sie das Feature "is_missing"). Berechnen Sie Ihr Lieblingskorrelationsmaß (ich schlage vor, hier gegenseitige Informationen zu verwenden) für die is_missing-Merkmale und die übrigen Merkmale.
Beachten Sie, dass, wenn Sie keine Korrelation zwischen zwei Features finden, aufgrund einer Gruppe von Features dennoch eine Korrelation möglich ist (ein Wert fehlt in Abhängigkeit von XOR von zehn anderen Features).
Wenn Sie eine große Anzahl von Funktionen und eine große Anzahl von Werten haben, erhalten Sie aufgrund der Zufälligkeit falsche Korrelationen. Abgesehen von den normalen Methoden zur Bewältigung dieses Problems (Validierungssatz, ausreichend hoher Schwellenwert) können Sie prüfen, ob die Korrelationen symmetrisch und transitiv sind. Wenn dies der Fall ist, ist es wahrscheinlich, dass sie wahr sind, und Sie sollten sie weiter überprüfen.
quelle
Eine Methode, die ich verwende, ist eine Schattenmatrix, in der der Datensatz aus Indikatorvariablen besteht, bei denen eine 1 angegeben wird, wenn ein Wert vorhanden ist, und 0, wenn dies nicht der Fall ist. Das Korrelieren dieser Daten untereinander und mit den Originaldaten kann dabei helfen, festzustellen, ob Variablen zusammen fehlen (MAR) oder nicht (MCAR). An
R
einem Beispiel (aus dem Buch "R in action" von Robert Kabacoff):quelle