Ich habe ein scheinbar einfaches Problem, aber seit einigen Wochen habe ich keine passende Lösung gefunden.
Ich habe ziemlich viele Umfrage- / Umfragedaten (Zehntausende von Befragten, z. B. 50.000 pro Datensatz), die von etwas stammen, von dem ich hoffe, dass es eine komplex gestaltete Umfrage mit Gewichten, Schichtung, spezifischem Routing usw. ist. Für jeden Befragten gibt es Hunderte von Variablen, z. B. demografische Daten (Alter, Region ...) und dann meist binäre (höchstens kategoriale) Variablen.
Ich komme eher aus der Informatik / dem maschinellen Lernen und musste viel über klassische Umfragestatistiken und -methoden lernen . Jetzt möchte ich klassisches maschinelles Lernen auf diese Daten anwenden (z. B. Vorhersagen einiger fehlender Werte für eine Teilmenge der Befragten - im Grunde eine Klassifizierungsaufgabe). Aber Moment mal, ich finde keinen geeigneten Weg, wie das geht. Wie soll ich diese Schichten, Gewichte oder das Routing einbeziehen (wie: Wenn Frage 1 mit Option 2 beantwortet wurde, Frage 3 stellen, andernfalls überspringen)?
Das einfache Anwenden meiner Modelle (Bäume, logistische Regression, SVM, XGBoost ...) scheint gefährlich (und schlägt in den meisten Fällen fehl), da sie normalerweise davon ausgehen, dass die Daten aus einer einfachen Zufallsstichprobe oder iid stammen.
Viele Methoden haben zumindest Gewichte, aber es hilft nicht viel. Außerdem ist unklar, wie ich unausgewogene Klassen und Gewichte, die durch die Umfragedefinition vorgegeben sind, miteinander kombinieren soll, ohne über diese Schichtungselemente zu sprechen. Darüber hinaus sollten die Ergebnismodelle gut kalibriert sein - die vorhergesagte Verteilung sollte der ursprünglichen sehr nahe kommen. Eine gute Prognoseleistung ist hier nicht das einzige Kriterium. Ich habe die Optimierungsmetrik geändert, um dies ebenfalls zu berücksichtigen (z. B. Entfernung der vorhergesagten Verteilung von der tatsächlichen Verteilung + Genauigkeit / MCC), und es hat in einigen Fällen geholfen, die Leistung in anderen zu beeinträchtigen.
Gibt es eine kanonische Möglichkeit, mit diesem Problem umzugehen? Es scheint mir ein stark unterschätzter Forschungsbereich zu sein. IMO könnten viele Umfragen von der Macht von ML profitieren, aber es gibt keine Quellen. So sind zwei Welten, die nicht miteinander interagieren.
Was ich bisher gefunden habe:
- http://civilstat.com/2014/08/statistical-modeling-the-two-cultures-breiman/
Ich kenne zum Beispiel immer noch nur einen Artikel (Toth & Eltinge, 2011) zum Erstellen von Regressionsbäumen, wenn Ihre Daten aus einer komplexen Stichprobenerhebung stammen.
- http://ccsg.isr.umich.edu/index.php/chapters/statistical-analysis-chapter#nine
In einer kürzlich durchgeführten Metaanalyse von 150 in Stichproben durchgeführten Forschungsarbeiten, in denen mehrere Umfragen mit komplexen Stichprobenentwürfen analysiert wurden, wurde festgestellt, dass Analysefehler häufig auftraten, die durch Unkenntnis oder falsche Verwendung der Merkmale des komplexen Stichprobenentwurfs verursacht wurden.
- https://www.fhwa.dot.gov/2015datapalooza/presentations/PolicyDev.4_Pierce.pdf
Verwandte CV-Fragen, aber keine von ihnen enthält eine brauchbare Antwort, wie man das angeht (entweder keine Antwort, nicht das, wonach ich frage, oder irreführende Empfehlungen):
Antworten:
( Update: Es gibt noch nicht viel Arbeit über "moderne" ML-Methoden mit komplexen Umfragedaten, aber die neueste Ausgabe von Statistical Science enthält einige Übersichtsartikel. Siehe insbesondere Breidt und Opsomer (2017), "Model-Assisted Umfrageschätzung mit modernen Vorhersagetechniken " .
Auf der Grundlage des von Ihnen erwähnten Papiers von Toth und Eltinge gibt es jetzt auch ein R-Paket- RPM, das CART für Daten komplexer Umfragen implementiert.)
Ihr Ziel ist mir nicht ganz klar. Versuchen Sie in erster Linie, fehlende Beobachtungen zu unterstellen, nur um einen "vollständigen" Datensatz zu haben, um jemand anderem zu geben? Oder haben Sie bereits vollständige Daten und möchten ein Modell erstellen, um die Antworten neuer Beobachtungen vorherzusagen / zu klassifizieren? Haben Sie eine bestimmte Frage, die Sie mit Ihrem Modell oder Ihren Modellen beantworten müssen, oder geht es bei der Datengewinnung allgemeiner zu?
In beiden Fällen ist eine komplexe Stichprobenerhebung / umfragegewichtete logistische Regression eine vernünftige, ziemlich gut verstandene Methode. Es gibt auch eine ordinale Regression für mehr als 2 Kategorien. Diese berücksichtigen die Schichten und Umfragegewichte. Benötigen Sie eine schickere ML-Methode als diese?
Zum Beispiel könnten Sie
svyglm
in Rssurvey
Paket verwenden. Auch wenn Sie R nicht verwenden, hat der Autor des Pakets, Thomas Lumley, ein nützliches Buch "Komplexe Umfragen: Ein Leitfaden zur Analyse mit R" geschrieben, das sowohl logistische Regression als auch fehlende Daten für Umfragen abdeckt.(Ich hoffe, dass Sie bei der Imputation bereits mit allgemeinen Problemen im Zusammenhang mit fehlenden Daten vertraut sind. Wenn nicht, prüfen Sie Ansätze wie die Mehrfachimputation, um zu berücksichtigen, wie sich der Imputationsschritt auf Ihre Schätzungen / Vorhersagen auswirkt.)
Das Weiterleiten von Fragen ist in der Tat ein zusätzliches Problem. Ich bin mir nicht sicher, wie ich am besten damit umgehen soll. Für die Anrechnung können Sie möglicherweise jeweils einen "Schritt" im Arbeitsplan unterstellen. Verwenden Sie beispielsweise ein globales Modell, und setzen Sie zuerst die Antwort aller auf "Wie viele Kinder haben Sie?" Führen Sie dann ein neues Modell für die relevante Teilpopulation (Personen mit mehr als 0 Kindern) durch, um den nächsten Schritt von "Wie alt sind Ihre Kinder?"
quelle