Imputing Fehlende Werte In Stata Forex
Mehrfache Imputation in Stata: Erstellen von Imputationsmodellen Dies ist Teil drei der Multiple Imputation in Stata Serie. Eine Liste der Themen, die von dieser Serie behandelt werden, finden Sie in der Einleitung. In der Theorie schätzt ein Imputationsmodell die gemeinsame Verteilung aller darin enthaltenen Variablen. MICE bricht dieses Problem in eine Reihe von Schätzungen, die eine Variable auf alle anderen Variablen im Modell zurücksetzen. (Der Nachteil ist, dass eine Reihe von Modellen der Verteilungen einzelner Variablen nicht zwangsläufig zu einem konsistenten Modell der gemeinsamen Verteilung beitragen.) Der mi-Befehl, der angekettet hat, erfordert nicht, dass Sie das Modell für jede Variable separat angeben: Liste die Variablen auf, die zusammen mit Informationen darüber, wie sie zu unterwerfen sind, und mi verketten verkettet wird die einzelnen Modelle automatisch bilden. Der Erfolg des Gesamt-Imputationsmodells hängt jedoch vom Erfolg aller Einzelmodelle ab. Wenn ein einziges Modell nicht konvergiert, wird der Imputationsprozess als Ganzes fehlschlagen. Wenn ein einzelnes Modell fehlt, kann es die Ergebnisse Ihres Analysemodells vorschreiben. Wir empfehlen dringend, dass Sie jedes einzelne Modell auf eigene Faust betreiben, außerhalb des Kontextes von mi verketten. Auf Konvergenz und Missspezifikation zu testen. Besprechen Sie die Details dazu im nächsten Abschnitt. Dieser Abschnitt konzentriert sich auf Fragen, die Sie bei der Erstellung Ihrer Imputationsmodelle berücksichtigen müssen. Auswählen von Variablen Der erste Schritt bei der Erstellung eines Imputationsmodells entscheidet, welche Variablen zu rechnen sind. Das Imputationsmodell sollte immer alle Variablen im Analysemodell enthalten. Dies beinhaltet die abhängige Variable Ihres Analysemodells, obwohl es einige Diskussionen darüber gibt, ob die unterstellten Werte der abhängigen Variablen verwendet werden sollen. Auch wenn Sie nicht planen, die unterstellten Werte der abhängigen Variablen zu verwenden, geben die beobachteten Werte der abhängigen Variablen Informationen über die anderen Variablen an und die Informationen aus diesen Beobachtungen, die die abhängige Variable fehlen, sollten im Imputationsmodell als verwendet werden Gut. Das Imputationsmodell sollte alle anderen Variablen enthalten, die Informationen über die wahren Werte der fehlenden Daten oder über ihre Wahrscheinlichkeit des Fehlens liefern. Vermeiden Sie es, ein quotkitchen sinkquot Modell zu erstellen. Eine große Anzahl von Variablen, insbesondere kategoriale Variablen, kann zu Modellen führen, die nicht konvergieren. Verwenden Sie die Theorie, um Sie bei der Auswahl geeigneter Variablen zu führen. Sie können dem Imputationsmodell Variablen hinzufügen, die nicht (oder sollte nicht) belegt werden, indem Sie sie am Ende der Variablenliste nach einem Gleichheitszeichen setzen. Anpassen von Imputationsmodellen Mit den Optionen include () oder omit () können Sie Variablen aus dem Imputationsmodell für eine einzelne Variable oder Gruppe von Variablen hinzufügen oder entfernen. Mit der Option include () können Sie auch Ausdrücke zu einem Modell wie (x2) hinzufügen. Aber sie müssen in einen zusätzlichen Satz von Klammern gehen (z. B. include ((x2))). Diese Optionen gehen mit der Imputationsmethode für eine Variable oder Variablen (z. B. (Regress, include (x))) anstatt am Ende des mi-Befehls. Seien Sie vorsichtig, wenn Sie Ausdrücke zu Imputationsmodellen hinzufügen: Wenn y von einer Funktion von x abhängt. Dann x sollte von der inversen Funktion von y abhängen und nicht zu modellieren, beide können Ihre Ergebnisse vorspannen. Weitere Informationen finden Sie unter Nichtlineare Begriffe. PanelLongitudinal Data Wenn Sie Daten haben, in denen Einheiten über die Zeit beobachtet werden, sind die besten Prädiktoren eines fehlenden Wertes in einer Periode wahrscheinlich die Werte dieser Variablen in den vorherigen und nachfolgenden Perioden. Allerdings kann das Imputationsmodell nur dann diese Informationen nutzen, wenn der Datensatz in breiter Form vorliegt (eine Beobachtung pro Einheit, keine Beobachtung pro Einheit pro Zeitraum). Du kannst dich nach dem Nachgeben wieder in eine lange Form umwandeln. Um die Daten in breite Form vor dem Imput zu konvertieren, verwenden Sie neu. Um nach langer Form zurückzukehren, nach der Imputierung, verwenden Sie mi reshape. Dies hat die gleiche Syntax wie die Umgestaltung. Aber stellt sicher, dass die Imputationen richtig behandelt werden. Wenn Sie nicht mit Umgestaltung vertraut sind. Siehe die Hierarchie Daten Abschnitt von Stata für Forscher. Umfrage-Daten Die mi-Schätzung: und svy: Präfix-Befehle können zusammen (in dieser Reihenfolge) verwendet werden, um Modelle auf Umfrage-Daten auszuführen, die mehrfach referenziert wurden. Allerdings: svy: kann nicht mit mi veranlaßt angekettet werden. Sie können Gewichte (z. B. Pweightweight) anwenden, aber nicht für andere Elemente der Umfrage Struktur wie Schichten oder PSU korrekt. Die gegenwärtige Empfehlung besteht darin, Umfragestrukturvariablen wie Schichten und PSU in den Imputationsmodellen als Sätze von Indikatorvariablen (z. B. i. psu) einzuschließen. Dies ist ein Bereich der laufenden Forschung. Wenn Sie Ihre individuellen Imputationsmodelle testen, empfehlen wir Ihnen, sie zuerst mit dem Svy zu starten: Präfix und dann ohne es aber mit Gewichten angewendet und Umfrage Struktur Variablen hinzugefügt, um das Modell. Wenn die beiden sehr unterschiedliche Ergebnisse geben, versuchen Sie, Interaktionen zwischen den Umfragestrukturvariablen oder zusätzlichen Variablen, die sich auf die Umfragestruktur beziehen, hinzuzufügen. Wenn sie weiterhin sehr unterschiedliche Ergebnisse trotz Ihrer besten Bemühungen geben, seien Sie vorsichtig über die Verwendung mehrerer Anrede. Auswählen von Methoden Es gibt neun Methoden zur Angabe einer Variablen: Regress. Pmm Truncreg Intreg Logit Ologit Mlogit. Poisson und nbreg. In den meisten Fällen wählen Sie die gleiche Imputationsmethode, die Sie wählen, wenn Sie die Variable normal modellieren würden: regress für die meisten stetigen Variablen, logit für binäre Variablen, mlogit für ungeordnete kategorische Variablen, etc. Kontinuierliche, aber nicht normale Variablen Beachten Sie das Der Standard-Regress impliziert einen normalen Fehler-Term nach der Kontrolle für die Kovariaten. Wenn Sie eine kontinuierliche Variable haben, die nicht normal ist, kann der Regress nicht eine Verteilung von unterstellten Werten geben, die den beobachteten Werten sehr gut entspricht. Eine Alternative ist Predictive Mean Matching (PMM). PMM ist eine Ad-hoc-Technik mit wenig Theorie dahinter, aber es scheint ganz gut in der Praxis zu funktionieren. PMM beginnt mit dem Zurücktreten der Variablen, die auf die Kovariaten zu rechnen ist, und dann Zeichnen eines Satzes von Koeffizienten aus den Ergebnissen, wobei sowohl die geschätzten Koeffizienten als auch die Unsicherheit über sie eingegangen werden. Diese Koeffizienten werden verwendet, um einen vorhergesagten Wert für alle fehlenden Werte zu berechnen. Allerdings verwendet er dann den vorhergesagten Wert für eine gegebene Beobachtung, um jene Beobachtungen zu identifizieren, deren beobachteter Wert der Variablen nahe dem vorhergesagten Wert liegt, und wählt einen von ihnen zufällig als den unterstellten Wert. Wenn die beobachteten Werte einer Variablen nicht normal sind, wird PMM gewöhnlich eine Verteilung von unterstellten Werten erzeugen, die der Verteilung der beobachteten Werte genauer entspricht als die Regression. Die Option knn () steuert, wie viele Beobachtungen als Übereinstimmungen betrachtet werden (basierend auf ihren beobachteten Werten der Variablen, die nahe dem vorhergesagten Wert für die Beobachtung stehen). Die jüngsten Arbeiten von Morris, White und Royston zeigen, dass eine größere Anzahl von Beobachtungen verwendet werden sollte, als es in der Vergangenheit üblich war. Sie schlagen mindestens 10, und mehr, wenn Ihr Datensatz ist sehr groß (Zehntausende von Beobachtungen oder mehr). Weil PMM seine unterstellten Werte aus den beobachteten Werten zieht, hat es die Eigenschaft, dass die unterstellten Werte niemals außerhalb des Bereichs der beobachteten Werte liegen. Dies macht es sehr nützlich für beschränkte Variablen (siehe unten). Es kann auch für einige nicht-kontinuierliche Verteilungen verwendet werden. Allerdings ist PMM nicht angemessen, wenn man Grund hat zu glauben, dass die nicht beobachteten Werte außerhalb des Bereichs der beobachteten Werte liegen. Transformationen Schiefe Variablen können durch Transformationen, wie z. B. das Protokoll, normaler gemacht werden. Allerdings sollten Sie überlegen, wie sich das auf die Beziehungen zwischen den Variablen auswirkt. Zum Beispiel, wenn Sie Variablen für quotincomequot und quotspending auf entertainmentquot und Sie glauben, dass die Beziehung zwischen den beiden ist linear, ersetzt quotincomequot mit Quoteneinkommenquot macht das Imputationsmodell für beide Variablen missspezifisch. Gebundene Variablen Eine weitere gemeinsame Situation sind beschränkte Variablen. Zum Beispiel kann quothours workquot nicht unter Null gehen, und Prozentsätze müssen zwischen null und 100 sein. Solche Variablen können mit truncreg unterlegt werden. Die Optionen ll () und ul () enthalten die untere Grenze und die obere Grenze für die Variable, die entweder Zahlen oder Variablen sein kann. Sie sind nicht verpflichtet, beide (z. B. Stunden gearbeitet wahrscheinlich nur benötigt ll (0), es sei denn youre besorgt, dass das Modell könnte versuchen, jemanden arbeiten mehr als 168 Stunden pro Woche). Leider ist es in unserer Erfahrung nicht ungewöhnlich, dass man Konvergenzprobleme bei Imputationsmodellen mit vielen Variablen truncreg hat. PMM ist eine gute Alternative zu truncreg, weil es natürlich alle Grenzen ehrt, die in den beobachteten Daten vorhanden sind. Nicht-lineare Begriffe Wenn Ihr Analysemodell nicht-lineare Begriffe enthält, wahrscheinlich Variablen quadriert, dann muss dies bei der Erstellung Ihres Imputationsmodells berücksichtigt werden. Angenommen, Ihr Analysemodell regressiert y auf x und x2. Wenn du nur y und x sagst. X2 später (entweder mit mi passiv oder c. xc. x), dann werden die unterstellten Werte von y nur von x abhängen und die unterstellten Werte von x werden linear von y abhängen. Wenn du dein Analysemodell betreibst, wird der Koeffizient auf dem quadratischen Term auf Null vorgespannt, weil für Beobachtungen, bei denen entweder y oder x referenziert wird, y wirklich nicht mit x2 verwandt ist. (Vergiss niemals, dass du, wenn du dein Mädelsschild ankündigst, dich modelliert, nicht nur die Auflistung von Variablen aufzutragen.) Die beste Alternative scheint das zu sein, was Weiß, Royston und Wood den ersten Notruf nennen. Erstellen Sie neue Variablen, um die nichtlinearen Terme (z. B. gen x2x2) zu speichern und dann als solche zu schreiben, als wären sie nur eine andere Variable, die nicht mit den linearen Terme verwandt wäre. Die unterstellten Werte der nichtlinearen Terme haben nicht die richtige Beziehung zu den linearen Terme (dh die unterstellten Werte x2 werden in der Tat nicht x2), aber solange sie richtig verteilt sind, scheint dies nicht die Ergebnisse der Analyse zu beeinflussen Modell. Dies ist ein Bereich der laufenden Forschung. Interaktionsbedingungen Interaktionsbegriffe erheben Probleme, die denen von nichtlinearen Begriffen sehr ähnlich sind: Wenn der Interaktionstermin nicht im Imputationsmodell enthalten ist, wird der Koeffizient des Interaktionsterms im Analysemodell auf Null vorgespannt. Der DecJust Another Variablequot-Ansatz funktioniert auch für Interaktionsbegriffe gut: Erstellen von Variablen, die die Interaktionseffekte (z. B. gen gxgx) speichern und dann separat ausführen. Wenn jedoch die Interaktionen binäre oder kategorische Variablen beinhalten, die Gruppen darstellen, sollten Sie stattdessen die Option by () verwenden, um jede Gruppe separat zu berechnen. Dies ermöglicht es, dass Koeffizienten zwischen Gruppen variieren, ohne dass das Problem der unterstellten Interaktionsbegriffe nicht korrekt mit den zu interagierenden Variablen übereinstimmt. Zum Beispiel, nehmen Sie an, dass Sie das Einkommen in die Bildung zurückgeben. Erfahrung. Und schwarz (ein Indikator für quotsubject ist Blackquot), aber denke, die Rückkehr zur Bildung variieren je nach Rasse und damit auch Blackc. education in der Regression. Der gerade ein anderer variabler Ansatz würde eine variable edblackblackrace erzeugen und sie zuschreiben, aber es ist möglich, dass das Modell eine Null für Schwarz und einen Wert ungleich Null für Edblack anlegt. Theres keine Angabe dies würde jedoch Probleme im Analysemodell verursachen. Eine Alternative wäre, die durch (schwarze) Option zum Anrechnungsbefehl hinzuzufügen, damit Weiß und Schwarze getrennt gesprochen werden. Dies würde Ihnen erlauben, blackc. education in Ihrem Analysemodell ohne Vorspannung zu verwenden (und es würde immer den tatsächlichen Werten von Schwarz und Bildung entsprechen). Jedoch, das Ausführen von zwei getrennten Anrechnungsmodellen lässt die Rückkehr zu erleben, um durch Rennen im Imputationsmodell zu variieren, nicht gerade Ausbildung. Wenn Sie starke theoretische Gründe zu glauben, dass war nicht der Fall (was unwahrscheinlich ist), das wäre ein Spezifikation Problem. Ein weit häufigeres Problem ist eine kleine Stichprobengröße: Vergewissern Sie sich, dass jeder Ihrer () Gruppen für ausreichend Regressionen groß genug ist. Der Versuch, quotJust ein anderes Variablequot für Interaktionen zwischen kategorischen Variablen zu verwenden und sie mit Logit zu versehen, ist problematisch. Verwenden Sie stattdessen (). Sätze von Indikatorvariablen Wenn Sie einen Satz von sich gegenseitig ausschließenden Indikatorvariablen haben, verwenden Sie sie, um eine einzelne kategorische Variable zu erstellen und dann mit mlogit zu rechnen. Zum Beispiel kombinieren Sie weiß. schwarz. Hispanisch Andere in Rasse. Oder highSchool. einige College. Junggesellen. Fortgeschritten in Bildung. Sie können die Indikatorvariablen nach dem Imputing entweder mit mi passiv oder einfach mit i. race oder i. education in Ihren Modellen neu erstellen. Wenn Sie die Indikatorvariablen selbst mit logit anrechnen. Das Imputationsmodell wird nicht die Einschränkung auferlegen, dass nur einer von ihnen eins sein kann. So bekommst du wahrscheinlich Leute mit mehr als einem Rennen oder mehr als einem Bildungsniveau. Durch die Umwandlung der Indikatoren in eine kategorische Variable und die Angabe der kategorischen Variablen mit mlogit zwingen Sie das Modell, nur eine Kategorie zu wählen. Zuletzt überarbeitet: 9152015Mehrere Imputation in Stata: Imputing Dies ist Teil vier der Multiple Imputation in Stata Serie. Eine Liste der Themen, die von dieser Serie behandelt werden, finden Sie in der Einleitung. Dieser Abschnitt wird Sie durch die Details des Imputationsprozesses sprechen. Seien Sie sicher, dass Sie mindestens den vorherigen Abschnitt, Erstellen von Imputationsmodellen lesen. So haben Sie einen Sinn für welche Probleme können die Gültigkeit Ihrer Ergebnisse beeinflussen. Beispieldaten Um den Prozess zu veranschaulichen, verwenden Sie einen fertigen Datensatz. Anders als bei den Beispielen wird dieser Datensatz entworfen, um eine gewisse Ähnlichkeit mit realen Weltdaten zu haben. Weiblich (binär) Rasse (kategorisch, drei Werte) städtisch (binär) edu (geordnet kategorisch, vier Werte) exp (kontinuierlich) Lohn (kontinuierlich) Fehlende. Jeder Wert aller Variablen außer weiblich hat eine 10 Chance, völlig zufällig zu fehlen, aber natürlich in der realen Welt werden wir nicht wissen, dass es MCAR vor der Zeit ist. So werden wir prüfen, ob es sich um MCAR oder MAR handelt (MNAR kann nicht durch Betrachten der beobachteten Daten überprüft werden), wobei das Verfahren verwendet wird, das in der Entscheidung entschlossen ist, zu impulieren: unab numvars: unab missvars: urban-wage misstable sum, gen (miss) foreach var Lokale Missvars Lokale Covare: Liste Numvars - Var Display Newline (3) Quotenfehler von Var auf Covarsquot Logit Missvar Covars foreach Nvar von lokalen Covars Display Newline (3) Quotttest von Nvar durch Fehlen von Varquot ttest nvar, von (missvar) Siehe das Protokoll Datei für Ergebnisse. Unser Ziel ist es, die Löhne auf Sex, Rasse, Ausbildungsniveau und Erfahrung zu regressieren. Um die quotrightquot Antworten zu sehen, öffnen Sie die do-Datei, die den Datensatz erstellt und untersucht den Gen-Befehl, der Lohn definiert. Vollständiger Code für den Imputationsprozess kann in der folgenden Datei gefunden werden: Der Imputationsprozess erzeugt viel Ausgabe. Gut auf dieser Seite, aber eine komplette Log-Datei mit den dazugehörigen Graphen finden Sie hier: Jeder Abschnitt dieses Artikels hat Links zu dem entsprechenden Abschnitt des Protokolls. Klicken Sie auf quotbackquot in Ihrem Browser, um zu dieser Seite zurückzukehren. Einrichten Der erste Schritt bei der Verwendung von mi-Befehlen besteht darin, dass Sie Ihre Daten setzen. Das ist etwas ähnlich wie bei svyset. Tsset Oder xtset Der mi-set-Befehl teilt Stata mit, wie es die zusätzlichen Imputationen speichern soll. Wir schlagen vor, das breite Format zu verwenden, da es etwas schneller ist. Auf der anderen Seite nutzt mlong etwas weniger Speicher. Um Stata die breite Datenstruktur zu verwenden, geben Sie Folgendes ein: Um Stata die mlong (marginal long) Datenstruktur zu verwenden, geben Sie ein: Die breite vs. lange Terminologie ist aus der Umgestaltung entlehnt und die Strukturen sind ähnlich. Allerdings sind sie nicht gleichwertig und du würdest niemals umgestalten, um die von mi verwendete Datenstruktur zu ändern. Stattdessen geben Sie mi konvertieren breit oder mi konvertieren mlong (add, klar, wenn die Daten seit der letzten Änderung nicht gespeichert wurden). Die meiste Zeit müssen Sie sich nicht darum kümmern, wie die Imputationen gespeichert sind: Die mi Befehle stellen sich heraus, wie man alles anwendet, was du für jede Anrechnung tust. Aber wenn du die Daten in einer Weise manipulieren musst, die du nicht für dich tun kannst, dann musst du dich über die Details der Struktur informieren, die du benutzt hast. Youll muss auch sehr, sehr vorsichtig sein. Wenn Sie sich für solche Dinge interessieren (einschließlich der selten verwendeten Flong - und Flongsep-Formate), führen Sie diese Datei aus und lesen Sie die Kommentare, die sie enthält, während Sie den Datenbrowser untersuchen, um zu sehen, wie die Daten in jeder Form aussehen. Registrieren von Variablen Die mi-Befehle erkennen drei Arten von Variablen: Imputed Variablen sind Variablen, die mi zu rechnen oder zu rechnen hat. Regelmäßige Variablen sind Variablen, die mi nicht zu entscheiden, entweder durch Wahl oder weil sie keine Werte fehlen. Passive Variablen sind Variablen, die vollständig durch andere Variablen bestimmt werden. Zum Beispiel wird der Lohnlohn durch den Lohn bestimmt, oder ein Indikator für Fettleibigkeit kann durch eine Funktion von Gewicht und Höhe bestimmt werden. Interaktionsbegriffe sind auch passive Variablen, aber wenn Sie Statas Interaktionssyntax verwenden, müssen Sie sie nicht als solche deklarieren. Passive Variablen sind oft problematisch für die Beispiele für Transformationen. Nichtlinearität. Und Interaktionen zeigen, wie die Verwendung von ihnen unangemessen zu voreingenommenen Schätzungen führen kann. Wenn eine passive Variable durch reguläre Variablen bestimmt wird, dann kann sie als reguläre Variable behandelt werden, da keine Imputation benötigt wird. Passive Variablen müssen nur dann als solche behandelt werden, wenn sie von unterstellten Variablen abhängen. Die Registrierung einer Variablen gibt Stata an, welche Art von Variable es ist. Geplante Variablen müssen immer registriert werden: mi Register unterstellte varlist wo varlist durch die tatsächliche Liste der zu referenzierenden Variablen ersetzt werden sollte. Regelmäßige Variablen müssen oft nicht registriert werden, aber es ist eine gute Idee: mi Register reguläre varlist Passive Variablen müssen registriert werden: mi Register passive varlist Allerdings werden passive Variablen häufiger nach dem Imputing erstellt. Machen Sie dies mit mi passiv und werden automatisch als passiv registriert. In unseren Beispieldaten sind alle Variablen außer weiblich zu rechnen. Der entsprechende mi-register-Befehl lautet: mi registrierter Rendite-Lohn (Beachten Sie, dass Sie nicht als Ihre varlist verwenden können, auch wenn Sie alle Ihre Variablen in Anspruch nehmen müssen, denn das würde die Systemvariablen hinzufügen, die von mi gesetzt wurden, um die Imputationsstruktur zu verfolgen .) Registrierung der weiblichen als regelmäßige ist optional, aber eine gute Idee: mi Register regelmäßige Frau Überprüfung der Imputation Modell Basierend auf den Arten der Variablen, sind die offensichtlichen Imputation Methoden: Rasse (kategorisch, drei Werte): mlogit urban (binary): Logit edu (geordnet kategorisch, vier werte): ologit exp (kontinuierlich): regress lohn (kontinuierlich): regress weiblich muss nicht unterlegt werden, sollte aber in die anrechnungsmodelle aufgenommen werden, da es sich im analyse-modell befindet und weil es ist Wahrscheinlich relevant sein. Bevor wir fortfahren, werden wir jedes der Imputationsmodelle überprüfen. Führen Sie immer jede Ihrer Imputationsmodelle einzeln aus, außerhalb des mi verkürzten Kontextes, um zu sehen, ob sie konvergieren und (soweit es möglich ist) überprüfen, ob sie korrekt angegeben sind. Code, um jedes dieser Modelle laufen zu lassen: mlogit Rennen i. urban exp Lohn i. edu i. female logit städtischen i. race exp Lohn i. edu i. female ologit edu i. urban i. race exp Lohn i. female regress exp I. urban i. race Lohn i. edu i. female Regress Lohn i. urban i. race exp i. edu i. female Beachten Sie, dass, wenn kategorische Variablen (geordnet oder nicht) als Kovariaten erscheinen i. Erweitert sie in Sätze von Indikatorvariablen. Siehe auch später, die Ausgabe des mi impute chained Befehl enthält die Befehle für die einzelnen Modelle, die es läuft. So eine nützliche Verknüpfung, vor allem, wenn Sie eine Menge von Variablen zu beurteilen, ist es, Ihre mi setzen Kette Befehl mit der Dryrun-Option, um zu verhindern, dass es eine tatsächliche Imputing, führen Sie es, und dann kopieren Sie die Befehle aus der Ausgabe in Du machst eine Datei zum Testen. Konvergenzprobleme Das erste, was zu beachten ist, dass alle diese Modelle erfolgreich laufen. Komplexe Modelle wie mlogit können nicht konvergieren, wenn Sie eine große Anzahl von kategorischen Variablen haben, weil das oft zu kleinen Zellengrößen führt. Um die Ursache des Problems festzulegen, entfernen Sie die meisten Variablen, stellen Sie sicher, dass das Modell mit dem, was übrig ist, funktioniert, und fügen Sie dann Variablen wieder einzeln oder in kleinen Gruppen hinzu, bis es aufhört zu arbeiten. Bei einigen Experimenten sollten Sie in der Lage sein, die Problemvariable oder die Kombination von Variablen zu identifizieren. Zu diesem Zeitpunkt müssen Sie entscheiden, ob Sie Kategorien kombinieren oder Variablen löschen oder andere Änderungen vornehmen können, um ein bearbeitbares Modell zu erstellen. Präfekt Vorhersage Perfekte Vorhersage ist ein weiteres Problem zu beachten. Der Imputationsprozess kann nicht einfach die perfekt vorhergesagten Beobachtungen fallen lassen, wie es logit kann. Du könntest sie vor dem Zutritt ablegen, aber das scheint den Zweck der mehrfachen Imputation zu besiegen. Die Alternative ist, die Erweiterung (oder nur aug) Option auf die betroffenen Methoden hinzuzufügen. Dies sagt, dass mi veranlasst ist, den quotaugmentierten Regressionquot-Ansatz zu verwenden, der gefälschte Beobachtungen mit sehr niedrigen Gewichten so hinzufügt, dass sie eine vernachlässigbare Wirkung auf die Ergebnisse haben, aber eine perfekte Vorhersage verhindern. Für Details siehe den Abschnitt quotThe Problem der perfekten Vorhersage während der Angabe von kategorischen Datenquot in der Stata MI Dokumentation. Überprüfung auf Misspecification Sie sollten auch versuchen zu bewerten, ob die Modelle korrekt angegeben sind. Eine vollständige Diskussion darüber, wie zu bestimmen, ob ein Regressionsmodell korrekt angegeben ist oder nicht, ist weit über den Rahmen dieses Artikels hinaus, aber verwenden Sie, welche Werkzeuge Sie angemessen finden. Hier sind einige Beispiele: Residual vs. Fitted Value Plots Für kontinuierliche Variablen können Rest-vs. Fit-Value-Plots (leicht mit rvfplot) nützlich sein. Einige der Beispiele verwenden sie, um Probleme zu erkennen. Betrachten Sie die Handlung für Erfahrung: regress exp i. urban i. race Lohn i. edu i. female rvfplot Beachten Sie, wie eine Anzahl von Punkten entlang einer Linie in der unteren linken Seite gruppiert sind, und keine Punkte sind darunter: Dies spiegelt die Einschränkung, dass Erfahrung kann nicht kleiner als Null sein, was bedeutet, dass die angepassten Werte immer größer oder gleich den Residuen sein müssen oder dass die Residuen größer oder gleich dem Negativ der angepassten Werte sein müssen. (Wenn der Graph die gleiche Skala auf beiden Achsen hatte, wäre die Einschränkungslinie eine 45-Grad-Linie.) Wenn alle Punkte unter einer ähnlichen Linie liegen, anstatt darüber, würde dies Ihnen sagen, dass es eine obere Grenze an der Variablen gab Eher als eine untere Grenze. Der y-Intercept der Constraint-Zeile zeigt Ihnen die Grenze in beiden Fällen. Sie können auch eine untere Grenze und eine obere Grenze haben, indem sie alle Punkte in eine Band zwischen ihnen setzen. Das Quellmodell, regress. Ist für die Erfahrung unangemessen, weil sie diese Einschränkung nicht anwenden wird. Es ist auch unangemessen für die Löhne aus dem gleichen Grund. Alternativen sind Truncreg, ll (0) und pmm (gut verwenden pmm). Hinzufügen von Interaktionen In diesem Beispiel scheint es plausibel, dass die Beziehungen zwischen Variablen zwischen Rasse, Geschlecht und urbanrural Gruppen variieren können. So ist eine Möglichkeit, auf Misspecification zu überprüfen, um Interaktionsbegriffe den Modellen hinzuzufügen und zu sehen, ob sie sich als wichtig erweisen. Zum Beispiel, vergleiche das offensichtliche Modell: regress exp i. race Lohn i. edu i. urban i. female mit einer, die Interaktionen enthält: regress exp (i. race i. urban i. female) (c. wage i. edu ) Gut laufen ähnliche Vergleiche für die Modelle der anderen Variablen. Dies schafft eine große Menge an Ausgabe, so sehen Sie die Protokolldatei für Ergebnisse. Interaktionen zwischen weiblichen und anderen Variablen sind in den Modellen für exp. führen. Edu Und städtischen Es gibt ein paar bedeutende Wechselwirkungen zwischen Rasse oder städtischen und anderen Variablen, aber nicht annähernd so viele (und bedenkt, dass mit diesen vielen Koeffizienten einige falsche Positives mit einem Signifikanzniveau von 0,05 erwarten würden). Nun also die Männer und Frauen gesondert ansprechen. Dies ist eine besonders gute Option für diesen Datensatz, weil Frau niemals fehlt. Wenn es so wäre, müssen die Beobachtungen, die weiblich fehlen, fallen lassen, weil sie nicht in einer Gruppe oder der anderen platziert werden konnten. Im Inputationsbefehl bedeutet das Hinzufügen der by (female) Option. Beim Testen von Modellen bedeutet das Starten der Befehle mit dem von weiblichen: Präfix (und Entfernen von weiblichen aus den Listen von Kovariaten). Die verbesserten Imputationsmodelle sind also: bysort weiblich: reg exp i. urban i. race Lohn i. edu von weiblich: logit urban exp i. race Lohn i. edu von weiblich: mlogit Rennen exp i. urban Lohn i. edu von weiblich : Reg lohn exp i. urban i. race i. edu von weiblich: ologit edu exp i. urban i. race Lohn pmm selbst kann nicht außerhalb der Imputation Kontext laufen, aber da es auf Regression basiert, können Sie regelmäßige Regression verwenden, um es zu testen . Diese Modelle sollten noch einmal getestet werden. Die Grundsyntax für mi verketten ist: mi veranlaßt verkettet (method1) varlist1 (method2) varlist2. Regvars Jede Methode gibt die Methode an, die für die Eingabe der folgenden Varlist verwendet werden soll. Die Möglichkeiten der Methode sind rückläufig. Pmm Truncreg Intreg Logit Ologit Mlogit Poisson Und nbreg. Regvars ist eine Liste der regelmäßigen Variablen, die als Kovariaten in den Anrechnungsmodellen verwendet werden, aber nicht unterlegt (es kann nicht sein). Die grundlegenden Optionen sind: add (N) rseed (R) savetrace (tracefile ersetzen) N ist die Anzahl der Imputationen, die dem Datensatz hinzugefügt werden sollen. R ist das Saatgut, das für die Zufallszahl generiert werden soll8212wenn du dieses nicht stellst, erhältst du jedes Mal, wenn der Befehl ausgeführt wird, etwas andere Imputationen. Die Tracefile ist ein Datensatz, in dem mi veranlagt wird, die Information über den Imputationsprozess zu speichern. Nutzen Sie diesen Datensatz, um nach Konvergenz zu suchen. Optionen, die für eine bestimmte Methode relevant sind, gehen mit der Methode, innerhalb der Klammern, aber nach einem Komma (z. B. (mlogit, aug)). Optionen, die für den Imputationsprozess als Ganzes relevant sind (wie bei (weiblich)) gehen am Ende, nach dem Komma. Für unser Beispiel wäre der Befehl: mi veranlaßt verkettet (logit) urban (mlogit) Rasse (ologit) edu (pmm) exp Lohn, add (5) rseed (4409) von (weiblich) Beachten Sie, dass dies keine Savetrace beinhaltet () Option. Ab diesem Schreiben kann durch () und savetrace () nicht gleichzeitig verwendet werden, vermutlich weil es für jede Gruppe eine Trace-Datei benötigen würde. Stata ist sich dieses Problems bewusst und wir hoffen, dass dies bald geändert wird. Für die Zwecke dieses Artikels, entfernen Sie die by () Option, wenn es Zeit ist, die Verwendung der Trace-Datei zu illustrieren. Wenn dieses Problem in Ihrer Forschung auftaucht, sprechen Sie mit uns über Work-arounds. Auswahl der Anzahl der Imputationen Es gibt einige Meinungsverschiedenheiten zwischen den Behörden darüber, wie viele Imputationen ausreichend sind. Manche sagen 3-10 in fast allen Umständen, die Stata-Dokumentation schlägt mindestens 20 vor, während White, Royston und Wood argumentieren, dass die Anzahl der Imputationen ungefähr gleich dem Prozentsatz der Fälle mit fehlenden Werten sein sollte. Allerdings ist uns kein Argument bekannt, dass die Erhöhung der Zahl der Imputationen jemals Probleme verursacht (nur dass der marginale Nutzen einer anderen Anregung asymptotisch Null annähert). Die Erhöhung der Anzahl der Imputationen in Ihrer Analyse nimmt im Wesentlichen keine Arbeit auf Ihrer Seite. Ändern Sie einfach die Nummer in der add () - Option auf etwas Größeres. Auf der anderen Seite kann es eine Menge Arbeit für den Computer sein. Mehrere Imputation hat viele Forscher in die Welt der Jobs eingeführt, die Stunden oder Tage in Anspruch nehmen. Sie können in der Regel davon ausgehen, dass die benötigte Zeit proportional zur Anzahl der verwendeten Imputationen ist (z. B. wenn eine do-Datei zwei Stunden dauert, um mit fünf Imputationen zu laufen, wird es wahrscheinlich etwa vier Stunden dauern, bis mit zehn Imputationen laufen). So heres unser Vorschlag: Beginnen Sie mit fünf Imputationen (das niedrige Ende, was weitgehend als legitim betrachtet wird). Arbeiten Sie an Ihrem Forschungsprojekt bis Sie vernünftigerweise überzeugt sind, dass Sie die Analyse in ihrer endgültigen Form haben. Sei sicher, alles mit Do-Dateien zu tun, damit du es nach Belieben laufen kannst. Beachten Sie, wie lange der Prozess dauert, von der Anrechnung bis zur Endanalyse. Überlegen Sie, wie viel Zeit Sie zur Verfügung haben und entscheiden, wie viele Imputationen können Sie sich leisten, um zu laufen, mit der Faustregel, dass die Zeit erforderlich ist proportional zur Anzahl der Imputationen. Wenn möglich, machen Sie die Anzahl der Imputationen in etwa gleich dem Prozentsatz der Fälle mit fehlenden Daten (eine High-End-Schätzung, was erforderlich ist). Erlauben Sie sich Zeit, sich zu erholen, wenn es geht, falsch zu gehen, wie sie es normalerweise tun. Erhöhe die Anzahl der Imputationen in deiner Do-Datei und beginne sie. Tu etwas anderes, während die Do-Datei läuft, wie schreib deine Papiere. Hinzufügen von Imputationen sollte nicht ändern Sie Ihre Ergebnisse deutlich8212und in dem unwahrscheinlichen Ereignis, dass sie tun, betrachten Sie sich glücklich, dass herausgefunden, dass vor der Veröffentlichung. Beschleunigung des Imputationsprozesses Mehrere Imputation hat viele Forscher in die Welt der Jobs eingeführt, die Stunden, Tage oder sogar Wochen laufen lassen. In der Regel ist es nicht wert, Ihre Zeit zu verbringen, um Stata-Code schneller laufen zu lassen, aber mehrere Imputation kann eine Ausnahme sein. Benutzen Sie den schnellsten Computer, der Ihnen zur Verfügung steht. Für SSCC-Mitglieder bedeutet das Lernen, Aufträge auf Linstat, dem SSCCs Linux-Computing-Cluster, auszuführen. Linux ist nicht so schwierig wie Sie vielleicht denken8212Unterstützung von Linstat hat Anweisungen. Mehrere Imputation beinhaltet mehr Lesen und Schreiben auf Festplatte als die meisten Stata Befehle. Manchmal beinhaltet das das Schreiben von temporären Dateien im aktuellen Arbeitsverzeichnis. Nutzen Sie den schnellsten Speicherplatz für Sie, sowohl für Ihren Datensatz als auch für das Arbeitsverzeichnis. Im Allgemeinen ist der lokale Speicherplatz schneller als der Festplattenspeicherplatz, und auf Linstat ramdisk (ein quotdirectoryquot, das tatsächlich im RAM gespeichert ist) ist schneller als der lokale Speicherplatz. Auf der anderen Seite würden Sie nicht wollen, dauerhaft speichern Datensätze überall, aber Netzwerk-Festplattenspeicher. Also betrachten Sie Ihre do-Datei machen so etwas wie die folgenden: Windows (Winstat oder Ihren eigenen PC) Dies gilt, wenn youre mit unterstellten Daten als auch. Wenn Ihr Datensatz groß genug ist, dass das Arbeiten mit ihm nach der Zurechnung langsam ist, kann das obige Verfahren helfen. Prüfung auf Konvergenz MICE ist ein iterativer Prozess. In jeder Iteration schätzt mi die verketteten ersten Schätzungen das Imputationsmodell, wobei sowohl die beobachteten Daten als auch die unterstellten Daten aus der vorherigen Iteration verwendet werden. Er zieht dann neue aufgerechnete Werte aus den daraus resultierenden Verteilungen. Beachten Sie, dass jede Iteration eine gewisse Autokorrelation mit der vorherigen Imputation hat. Die erste Iteration muss ein besonderer Fall sein: in ihr, mi veranlagt verkettet erste Schätzungen das Imputationsmodell für die Variable mit den wenigsten fehlenden Werten, die nur auf den beobachteten Daten basieren und zeichnet die berechneten Werte für diese Variable an. Es schätzt dann das Modell für die Variable mit den nächstgelegenen fehlenden Werten, wobei sowohl die beobachteten Werte als auch die unterstellten Werte der ersten Variablen verwendet werden und für den Rest der Variablen ähnlich verlaufen. So ist die erste Iteration oft atypisch, und weil Iterationen korreliert sind, kann sie auch nachfolgende Iterationen atypisch machen. Um dies zu vermeiden, verlässt mich mi standardmäßig durch zehn Iterationen für jeden unterstellten Datensatz, den Sie anfordern, und sparen nur die Ergebnisse der zehnten Iteration. Die ersten neun Iterationen heißen die Burn-In-Periode. Normally this is plenty of time for the effects of the first iteration to become insignificant and for the process to converge to a stationary state. However, you should check for convergence and increase the number of iterations if necessary to ensure it using the burnin() option. To do so, examine the trace file saved by mi impute chained. It contains the mean and standard deviation of each imputed variable in each iteration. These will vary randomly, but they should not show any trend. An easy way to check is with tsline. but it requires reshaping the data first. Our preferred imputation model uses by(). so it cannot save a trace file. Thus well remove by() for the moment. Well also increase the burnin() option to 100 so its easier to see what a stable trace looks like. Well then use reshape and tsline to check for convergence: preserve mi impute chained (logit) urban (mlogit) race (ologit) edu (pmm) exp wage female, add(5) rseed(88) savetrace(extrace, replace) burnin(100) use extrace, replace reshape wide mean sd, i(iter) j(m) tsset iter tsline expmean, title(quotMean of Imputed Values of Experiencequot) note(quotEach line is for one imputationquot) legend(off) graph export conv1.png, replace tsline expsd, title(quotStandard Deviation of Imputed Values of Experiencequot) note(quotEach line is for one imputationquot) legend(off) graph export conv2.png, replace restore The resulting graphs do not show any obvious problems: If you do see signs that the process may not have converged after the default ten iterations, increase the number of iterations performed before saving imputed values with the burnin() option. If convergence is never achieved this indicates a problem with the imputation model. Checking the Imputed Values After imputing, you should check to see if the imputed data resemble the observed data. Unfortunately theres no formal test to determine whats quotclose enough. quot Of course if the data are MAR but not MCAR, the imputed data should be systematically different from the observed data. Ironically, the fewer missing values you have to impute, the more variation youll see between the imputed data and the observed data (and between imputations). For binary and categorical variables, compare frequency tables. For continuous variables, comparing means and standard deviations is a good starting point, but you should look at the overall shape of the distribution as well. For that we suggest kernel density graphs or perhaps histograms. Look at each imputation separately rather than pooling all the imputed values so you can see if any one of them went wrong. The mi xeq: prefix tell Stata to apply the subsequent command to each imputation individually. It also applies to the original data, the quotzeroth imputation. quot Thus: mi xeq: tab race will give you six frequency tables: one for the original data, and one for each of the five imputations. However, we want to compare the observed data to just the imputed data, not the entire data set. This requires adding an if condition to the tab commands for the imputations, but not the observed data. Add a number or numlist to have mi xeq act on particular imputations: mi xeq 0: tab race mi xeq 15: tab race if missrace This creates frequency tables for the observed values of race and then the imputed values in all five imputations. If you have a significant number of variables to examine you can easily loop over them: foreach var of varlist urban race edu mi xeq 0: tab var mi xeq 15: tab var if missvar For results see the log file . Running summary statistics on continuous variables follows the same process, but creating kernel density graphs adds a complication: you need to either save the graphs or give yourself a chance to look at them. mi xeq: can carry out multiple commands for each imputation: just place them all in one line with a semicolon ( ) at the end of each. (This will not work if youve changed the general end-of-command delimiter to a semicolon.) The sleep command tells Stata to pause for a specified period, measured in milliseconds. mi xeq 0: kdensity wage sleep 1000 mi xeq 15: kdensity wage if missvar sleep 1000 Again, this can all be automated: foreach var of varlist wage exp mi xeq 0: sum var mi xeq 15: sum var if missvar mi xeq 0: kdensity var sleep 1000 mi xeq 15: kdensity var if missvar sleep 1000 Saving the graphs turns out to be a bit trickier, because you need to give the graph from each imputation a different file name. Unfortunately you cannot access the imputation number within mi xeq. However, you can do a forvalues loop over imputation numbers, then have mi xeq act on each of them: forval i15 mi xeq i: kdensity exp if missexp graph export expi. png, replace Integrating this with the previous version gives: foreach var of varlist wage exp mi xeq 0: sum var mi xeq 15: sum var if missvar mi xeq 0: kdensity var graph export chkvar0.png, replace forval i15 mi xeq i: kdensity var if missvar graph export chkvari. png, replace For results, see the log file . Its troublesome that in all imputations the mean of the imputed values of wage is higher than the mean of the observed values of wage. and the mean of the imputed values of exp is lower than the mean of the observed values of exp. We did not find evidence that the data is MAR but not MCAR, so wed expect the means of the imputed data to be clustered around the means of the observed data. There is no formal test to tell us definitively whether this is a problem or not. However, it should raise suspicions, and if the final results with these imputed data are different from the results of complete cases analysis, it raises the question of whether the difference is due to problems with the imputation model. Last Revised: 8232012
Comments
Post a Comment