Ableiten wahrscheinlicher Daten basierend auf anderen verwandten Daten in einem unvollständigen Datensatz

7

Ich mache meine ersten Schritte in den Bereichen Datenwissenschaft und maschinelles Lernen. Ich experimentiere mit einem Projekt, bei dem ich keine Ahnung habe, mit welchen Ansätzen ich beginnen könnte, daher würde ich mich über Hinweise freuen:

Ich habe einen Datensatz (zur Erklärung) der Studienabschlüsse. Der Datensatz ist insofern vollständig, als er die gesamte Population enthält. Alle Aufzeichnungen sollten ein Abschlussdatum haben.

Aufgrund eines fehlgeschlagenen Datensatzes fehlt bei älteren Datensätzen jedoch das Abschlussdatum.

Es hat die folgenden Funktionen:

  • Für Abschlüsse seit 2014 haben wir ein Abschlussdatum
  • Bei Abschlüssen vor 2014 fehlt das Abschlussdatum
  • Für alle Schüler haben wir ein Geburtsdatum
  • Für viele Studenten wird der Abschluss mit dem Geburtsdatum korreliert. Zum Beispiel kann es oft vorkommen, dass sie 21 Jahre nach ihrer Geburt ihren Abschluss machen. Einige werden jedoch reife Studenten sein, so dass sie viele Jahre nach dem 21. Lebensjahr ihren Abschluss machen können.
  • Die Zertifikat-IDs sind mehr oder weniger sequentiell und numerisch. Es ist davon auszugehen, dass nahe beieinander liegende Zertifikats-IDs Studenten darstellen, die ungefähr zur gleichen Zeit ihren Abschluss machen
  • Die Metapher ist etwas fehlerhaft; davon ausgehen, dass die Studierenden an jedem Tag ihren Abschluss machen können

Meine Herausforderung besteht darin, einen Ansatz zu entwickeln , der auf der Grundlage des Geburtsdatums ein Abschlussdatum für alle Schüler ableitet.

Der Ansatz, über den ich nachgedacht habe, sieht ungefähr so ​​aus:

  1. Verwenden Sie für alle Schüler, für die beide Daten verfügbar sind, einen Modus (Graduierungsalter).
  2. Gruppieren Sie die Schüler gemäß der ID des sequentiellen Zertifikats in Klassen von (sagen wir) 1000
  3. Finden Sie in jedem Fach den häufigsten Geburtsmonat und das häufigste Geburtsjahr für die Schüler
  4. Fügen Sie den Modus (Graduierungsalter) zum häufigsten Monat / Jahr für einen bestimmten Fach hinzu und weisen Sie ihn als Abschlussdatum für alle Schüler im Fach zu

Ein Beispiel in Pandas könnte folgendermaßen aussehen:

graduations = [
       # Old data with missing graduation dates
       {'certificate_id': '090029, 'birth_date': '01/01/1983', 'graduation_date': NaT},
       {'certificate_id': '090048, 'birth_date': '04/01/1983', 'graduation_date': NaT},
       ...
       # This is 'normal' students graduating roughly 21 years after
       # their birth date
       {'certificate_id': '120015, 'birth_date': '01/01/1993', 'graduation_date': 01/03/2014},
       {'certificate_id': '120019, 'birth_date': '01/04/1993', 'graduation_date': 04/03/2014},
       # However there are many exceptions, mature students or those
       # graduating early
       {'certificate_id': '120150, 'birth_date': '01/01/1966', 'graduation_date': 05/03/2014},
       {'certificate_id': '120155, 'birth_date': '01/04/1996', 'graduation_date': 06/03/2014}, 
       ]

       df = pd.DataFrame(graduations)

Jede Hilfe wäre willkommen, auch wenn Sie mir sagen können, wie diese Art von Problem heißt, damit ich weiter recherchieren kann, oder wenn Sie mich wissen lassen, dass dies mit diesem Datensatz nicht möglich ist. Ich bin mir momentan nicht mal sicher, was die richtigen Tags sind!

etwas ab
quelle
4
Sie haben einige beeindruckende Möglichkeiten, tiefgreifende, aber subtile Vorurteile zu erzeugen. Das vielleicht wichtigste zu erkennende Problem betrifft die Verzerrung in Ihrer Teilstichprobe bekannter Abschlussdaten. Dies ist nicht repräsentativ, da es möglicherweise noch viele (ältere) Studenten gibt, die noch keinen Abschluss haben - und daher tendenziell länger dauern als die meisten anderen. Es ist vergleichbar mit dem bekannten Friedhofsproblem: Wenn Sie Geburts- und Sterbedaten aus Grabsteinen entnehmen, werden Sie feststellen, dass die Lebensdauer in letzter Zeit dramatisch kürzer geworden ist!
whuber
Danke für deinen Kommentar. Ich glaube, ich habe eine Analogie überstrapaziert, um die Dinge einfacher zu machen. In diesem Fall kann davon ausgegangen werden, dass alle Datensätze im Datensatz ein Abschlussdatum haben sollten. Das heißt, es handelt sich um historische Aufzeichnungen. Die Daten sind aufgrund eines Fehlers bei der Aufzeichnung und nicht bei der Stichprobe unvollständig. Der Datensatz ist eine vollständige Grundgesamtheit mit nur fehlenden Daten in einer Spalte.
etwas vom
1
Diese Informationen sind von so grundlegender Bedeutung, dass Sie Ihren Beitrag so bearbeiten sollten, dass er sie enthält.
whuber
1
Vielen Dank für Ihren Kommentar @ DavidC.Norris; im Allgemeinen denke ich , es in Pandas Einsatz richtig ist NaNfür NULL. Siehe: pandas.pydata.org/pandas-docs/stable/missing_data.html . Als ich das jedoch noch einmal las, stellte ich fest, dass ich es technisch hätte tun sollen NaT(keine Zeit) - ich habe dies bearbeitet.
etwas vom
2
Die Leute haben subtil angedeutet, und ich denke, ich würde tatsächlich sagen: Wenn Sie Ihre Analyse überdenken können, um diese Daten als zensiert zu behandeln, anstatt zu versuchen, Daten zu unterstellen, denke ich wirklich, dass Sie das tun sollten. Sie geben nicht genügend Details an, um zu wissen, ob dies ein vernünftiger Vorschlag ist. Wenn Sie jedoch das Datum verwenden, um zu berechnen, wie lange sie für den Abschluss gebraucht haben, kann dies ein Zensurproblem sein, das auf viele andere Arten behandelt werden kann.
StatNoodle

Antworten:

1

Sie haben ein Problem mit fehlenden Daten beschrieben, insbesondere das Problem der Zensur . (Als Gedächtnisstütze zu halten zensiert gerade in meinem Kopf aus dem ähnlichen Phänomen der Verkürzung , wie ich in einem Bericht von Text denken geschwärzt-out von ‚Zensur‘. Sie wissen , dass es war ein Wort oder einen Satz, aber Sie gerade don Ich weiß nicht, was es gesagt hat . Dies ist Ihre eigene Situation mit Ihren Abschlussdaten. Wenn dagegen die letzten beiden Kapitel des Berichts stillschweigend weggelassen wurden, wurde der Bericht abgeschnitten . In diesem Fall würden Sie dies nicht nur nicht tun Ich weiß, was in diesen Kapiteln war, aber Sie würden nicht einmal wissen, ob es welche gegeben hätteirgendwelche Kapitel. Bemerkenswerterweise ging es bei der obigen Frage von @ whuber darum, diese Unterscheidung in Ihren Daten festzunageln.)

In diesem speziellen Problem mit fehlenden Daten haben Sie einen recht einfachen Mechanismus für fehlende Daten : Das Datum fehlt genau dann, wenn der Abschluss vor 2014 erfolgte. Wenn Sie sich mit einem zeithomogenen Problem befassen, dem wichtige weltliche Trends fehlen, dann Sie kann diese Tatsache als Vorteil betrachten. In diesem Fall gibt es keine Situation, in der aus irgendeinem Grund Daten fehlen, die über einige schrecklich wichtige Merkmale der „Schüler“ informativ wären.

In der Fachsprache für fehlende Daten lautet der spezifische Begriff für das, was Sie versuchen, die fehlenden Daten zu unterstellen . Das Ziel der Imputation ist es natürlich, Ihnen zu ermöglichen, die Aufzeichnungen mit fehlenden Werten aufzubewahren, um die mittelalterliche Praxis der sogenannten vollständigen Fallanalyse zu vermeiden, bei der die wunderbaren Daten in anderen Bereichen Ihres Datenrahmens für das Verbrechen grausam ausgeführt werden 'von' Assoziieren 'mit einem fehlenden Datumswert. (Ich bin davon ausgegangen , dass Sie tun , in der Tat haben zahlreiche Spalten in Ihren Daten , die Sie aus Ihrem Beispiel Datenrahmen weggelassen, es ist die Existenz der wertvollen Informationen in diesen zusätzlichen Spalten ist , die einen Wunsch rechtfertigen würden ein solche Zurechnung auszuführen.)

Was das Lesen fehlender Daten angeht, wäre es ein guter Anfang, Wikipedia-Suchanfragen zu den verschiedenen kursiven Begriffen in meiner Antwort durchzuführen. Die kanonische Referenz zu "Inferenz und fehlenden Daten" ist Rubin 1976 . Wenn Sie Bayesianer sind, kann Ihnen die feine (wenn auch herausfordernde) Behandlung in Kapitel 8 von BDA3 von Nutzen sein. Sie können stattdessen eine praktische Einführung in die Imputation genießen, indem Sie Software wie MICE erkunden . (Entschuldigung, ich kenne die diesbezüglichen Pythonic-Optionen nicht, aber ich muss annehmen, dass es einige gibt.)


Um eine von @CliffAB im Kommentar unten gestellte Frage zu beantworten, kann es hilfreich sein, den von Ihnen gewählten, auf Imputation basierenden Ansatz anderen, schickeren Ansätzen zur Zensur gegenüberzustellen. Das häufigste Beispiel für die Zensur in der Datenanalyse ist das Überleben von Überlebensmodellen (Time-to-Event) . ( Hier erfahren Sie, warum dies so ist.) Überlebensmodelle verwenden eine Schätzung der Überlebensfunktion , unabhängig davon, ob sie parametrisch oder nicht parametrisch erhalten wurden. Diese Prozessmodelle unterstützen die Inferenz, ohne die fehlenden Ereigniszeiten explizit zu unterstellen. Sie könnten Ihre Daten mit solchen Ansätzen sehr gut angreifen und müssen niemals einen einzigen Wert unterstellen!

Ein letzter Punkt: Ich habe aus einem bestimmten Grund 'Fancier' in Angstzitate oben gesetzt. Angenommen, Sie haben für Ihr aktuelles Problem das beeindruckendste Time-to-Event-Modell aller Zeiten erstellt. Angenommen, Ihr Modell ist in der Tat so großartig, dass Sie nicht abschätzen können, dass es keineswegs MCMC entspricht . Ihr MCMC-Code behandelt die fehlenden Zeiten immer als latente Variablen , und es gibt sicher eine Zeile in Ihrem Code, in der Sie eine Pseudozufallszahl generieren und diese zum Ausfüllen dieser latenten Variablen verwenden. Auf diese Weise würden Sie Ihre fehlenden Daten "unterstellen", wenn auch auf die prinzipiell prinzipiellste und kohärenteste Art und Weise, die Sie sich vorstellen können.

David C. Norris
quelle
1
Ein paar Anmerkungen: Obwohl ich ziemlich sicher bin, dass ich weiß, was Sie mit Zensur und Kürzung meinen, finde ich es wirklich verwirrend, ein Beispiel aufzunehmen, das bei der Beschreibung der Zensur wie Zensur klingt . Zweitens ist die Zensur eine ganz besondere Art fehlender Daten: Sie ist teilweise informativ, im Gegensatz zu NA, die völlig uninformativ ist. Im Moment ist mir unklar, wie MICE zensierte Daten weitergibt, aber ich glaube, Sie können. Wissen Sie, wie MICE damit umgeht?
Cliff AB
1
@CliffAB, danke für deinen Kommentar + Frage. Ich habe klargestellt, dass alles, was über "Zensur" spricht, nur mein bescheidenes Angebot eines mnemonischen Geräts war. Die Frage der richtigen Codierungssprache für Daten (das NAProblem) sollte von Fragen der Modellierung unterschieden werden . Sowohl abgeschnittene als auch zensierte Daten würden wie in R (oder in SAS) codiert . Aber wie die Modellierer behandelt solche ‚Einträge‘ hängt von der Art / Mechanismus der ‚Fehlüber ‘. NA.
David C. Norris
1
@CliffAB, wenn ich die Imputation selbst verwende, erfolgt dies normalerweise über das Hmisc- Paket von Frank Harrell (über RMS ). Mein Zitat von MICE war ein Versuch, OP auf ein Paket zu verweisen, das sich speziell auf das Problem von OP konzentriert, aber nach meinem Verständnis rmswerden MICE-ähnliche Algorithmen verwendet.
David C. Norris