Tuesday 10 January 2017

Stata Generating Moving Average Variable

Diese Datenstruktur ist unzweckmäßig. Angenommen, eine ID-ID müssen Sie umformen. z. B. Dann ist ein gleitender Durchschnitt einfach. Verwenden Sie tssmooth oder einfach nur generieren. z. B. Mehr darüber, warum Ihre Datenstruktur ist ziemlich unfit: Nicht nur würde die Berechnung eines gleitenden Durchschnitt benötigen eine Schleife (nicht unbedingt mit egen), aber Sie würden mehrere neue zusätzliche Variablen erstellen. Mit denen in einer späteren Analyse wäre irgendwo zwischen ungeschickt und unmöglich. EDIT Ill geben eine Probe-Schleife, während sich nicht aus meiner Haltung, dass es schlechte Technik. Ich sehe nicht einen Grund für Ihre Namenskonvention, wobei P1947 ist ein Mittel für 1943-1945 Ich nehme an, das ist nur ein Tippfehler. Nehmen wir an, dass wir Daten für 1913-2012 haben. Für Mittel von 3 Jahren verlieren wir ein Jahr an jedem Ende. Das könnte prägnanter geschrieben werden, auf Kosten einer Flut von Makros innerhalb von Makros. Mit ungleichen Gewichten ist einfach, wie oben. Der einzige Grund, egen verwenden ist, dass es nicht aufgeben, wenn es Versäumnisse, die die oben genannten tun wird. Der Vollständigkeit halber sei bemerkt, dass es leicht ist, Fehler zu behandeln, ohne auf egen zurückzugreifen. Und dem Nenner Wenn alle Werte fehlen, wird dies auf 0 0 reduziert oder fehlt. Andernfalls, wenn ein Wert fehlt, fügen wir 0 auf den Zähler und 0 auf den Nenner, die die gleiche wie Ignorieren ist. Natürlich ist der Code erträglich wie oben für Mittelwerte von 3 Jahren, aber entweder für diesen Fall oder für die Mittelung über mehr Jahre, würden wir ersetzen die Linien oben durch eine Schleife, was egen tut. Stata für Forscher: Arbeiten mit Gruppen Dies ist Teil sechs der Stata for Researchers Serie. Eine Liste der Themen, die von dieser Serie abgedeckt werden, finden Sie in der Einleitung. Wenn Sie zu Stata neu sind, empfehlen wir, die Artikel in der Reihenfolge zu lesen. Aufgaben, die das Arbeiten mit Gruppen erfordern, sind üblich und können von der sehr einfachen (quotCalculate die mittlere mpg der heimischen Autos und die ausländischen Autos separatelyquot) auf die sehr komplexe (quotModel Schülerleistung auf einem standardisierten Test unter Berücksichtigung, dass die Schüler sind Gruppiert in Klassen, die in Schulen gruppiert sind, die in Distrikte gruppiert sind. Glücklicherweise ist die Arbeit mit Gruppen eine der größten Stärken von Statas. In diesem Artikel diskutieren Tools für die Arbeit mit Gruppen, und gleichzeitig versuchen, Ihnen mehr Erfahrung mit Statas-Syntax, um nützliche Ergebnisse zu erhalten. Im nächsten Abschnitt (Hierarchical Data) auch ein theoretisches Framework für das Denken über gruppierte Daten einzuführen, aber es wird mehr Sinn machen, wenn youve hatte einige Erfahrung mit Gruppen arbeiten zuerst. Nun beginnen, indem Sie durch einige grundlegende Werkzeuge, die für die Arbeit mit Gruppen verwendet werden, und einige Tricks für die Verwendung von ihnen. Verwenden Sie so gut einen der Beispieldatensätze für diese Serie, households. dta. Stellen Sie sicher, dass Sie diese Dateien von X: SSCC TutorialsStataResearch kopiert oder heruntergeladen haben. Und setzte sie in eine günstige Lage wie U: StataResearch. Stellen Sie sicher, dass Ihr aktuelles Arbeitsverzeichnis auf diesen Speicherort festgelegt ist: (oder wohin Sie sie setzen). Dann starten Sie eine do-Datei: löschen Sie alle Capture-Log-close-Set mehr aus Protokoll mit groups1.log, ersetzen Youll möchten Sie Ihre Datei häufig in diesem Abschnitt ausführen. Betrachten Sie halten ein Daten-Browser-Fenster geöffnet, so können Sie leicht sehen, was die Datei tun, um Ihre Daten. Dieser Datensatz enthält Informationen zu zwanzig fiktiven Menschen, die in sechs verschiedenen Haushalten leben. Diese Datenstruktur ist eine der am häufigsten bei der SSCC anzutreffenden Daten. Eine Variable, die eine Erklärung erfordern kann, ist rel2head. Oder quotrelationship to the head of household. quot Es ist eine kategorische Variable, die drei Werte annimmt, wobei Wert-Labels angewendet werden. Geben Sie eine Labelliste ein, um sie zu sehen. Dies ist typisch für Daten der realen Welt (außer, dass reale Daten in der Regel viele weitere Arten von Beziehungen haben). Das wichtigste Werkzeug für die Arbeit mit Gruppen ist vorbei. Denken Sie daran, wenn Sie von varlist setzen. Vor einem Befehl, wird Stata zuerst die Daten auflösen, die in einer Gruppe für jeden Wert der by-Variablen (oder jede eindeutige Kombination der by-Variablen, wenn theres mehr als eins) eingerichtet werden, und dann den Befehl separat für jede Gruppe ausführen. Weitere Informationen finden Sie im Abschnitt über in Verwendung und Syntax. Hier sind einige Beispiele für Dinge, die Sie mit machen können. Berechnen der zusammenfassenden Statistiken über Gruppen Finden Sie das durchschnittliche Alter der Erwachsenen in jedem Haushalt: nach Haushalt: Summe Alter, wenn agegt18 (Sie könnten die gleichen Ergebnisse kompakter mit Register Haushalt erhalten, wenn agegt18, Summe (Alter)) Speichern Sie das gesamte Haushaltseinkommen in einem Neue Variable: nach Haushalt: egen householdIncometotal (Einkommen) Beachten Sie, dass das Haushaltseinkommen für alle in einem bestimmten Haushalt lebenden Personen gleich ist. Das ist, weil seine eine Eigenschaft des Haushalts, nicht das Individuum. Nun sprechen Sie mehr über diese Unterscheidung in Hierarchical Data. Identifizieren von Merkmalen einer Gruppe Legen Sie einen Indikator an, ob ein Haushalt Kinder hat oder nicht, unabhängig von der Anzahl: gen Kind (agelt18) nach Haushalt: egen hasChildrenmax (Kind) Wenn ein Haushalt keine Kinder hat, ist der Höchstwert des Kindes Null. Wenn es irgendwelche hat, wird das Maximum ein sein. In diesem Fall ist das Kind wahrscheinlich eine nützliche Variable in seinem eigenen Recht. Aber wenn Sie es nicht brauchen, könnten Sie den gesamten Prozess in einer Zeile mit: durch den Haushalt: egen hasChildrenmax (agelt18) Jetzt statt der Suche nach der max einer Variable, finden Sie das Maximum eines Ausdrucks, aber das Ergebnis ist das gleiche : Das Maximum wird ein für den ganzen Haushalt sein, wenn der Haushalt irgendwelche Kinder in ihm und null sonst hat. Zählen von Beobachtungen, die eine Bedingung erfüllen Ermitteln Sie die Anzahl der Kinder in jedem Haushalt: nach Haushalt: egen numChildrentotal (child) Hierbei wird die Tatsache ausgenutzt, dass die Summe einer Indikatorvariablen die Anzahl der Beobachtungen ist, für die die Indikatorvariable wahr ist. Auch hier könnte die Gesamtsumme (Kind) insgesamt betragen (agelt18). Ergebnisausbreitung Angenommen, wir müssen das Durchschnittsalter der Erwachsenen in jedem Haushalt als Variable speichern. Der offensichtliche Ausgangspunkt wäre: nach Haushalt: egen meanAdultAgemean (age), wenn agegt18 Allerdings empfängt meanAdultAge ein fehlendes für alle Kinder im Datensatz. Das ist, weil die if-Bedingung zwei Dinge in diesem Befehl: es steuert, welche welche Beobachtungen bei der Berechnung des Mittelwerts in meanAdultAge gespeichert werden. Sondern auch welche Beobachtungen in diesem Fall gespeichert sind. Wenn wir brauchen, dass die Haushalte in allen Beobachtungen für diesen Haushalt verfügbar sind (und wir normalerweise tun), dann müssen wir das Ergebnis den anderen Beobachtungen zuschreiben. Nach Haushalt: egen tempmean (meanAdultAge) drop meanAdultAge umbenennen temp meanAdultAge Alle Beobachtungen in jedem Haushalt, die einen Wert für meanAdultAge haben, haben den gleichen Wert. Somit gibt die Funktion mean () diesen Wert8212 zurück, aber für alle Beobachtungen im Haushalt. (Beachten Sie, dass wenn mean () auf fehlende Werte trifft, sie im Wesentlichen ignoriert und den Mittelwert der nicht fehlenden Werte berechnet.) Somit enthält die temp-Variable den richtigen Wert von meanAdultAge für alle Beobachtungen, Erwachsene und Kinder. Wir lassen dann die alte meanAdultAge-Variable fallen und temp meanAdultAge umbenennen. Wenn wir planen, können wir eine Zeile Code im Vergleich zu den oben genannten sparen: nach Haushalt: egen tempmean (Alter), wenn agegt18 nach Haushalt: egen meanAdultAgemean (temp) drop temp Dies wird manchmal als quotspreadingquot ein Ergebnis: Wenn Sie das Richtige finden können Antwort für einige der Beobachtung in einer Gruppe, können Sie dann verbreiten sie auf die anderen. Sie könnten die Verbreitung mit einer von mehreren egen Funktionen: min (). Max (). Etc. aber mean () ist vielleicht die intuitive. Erstellen Sie eine Indikatorvariable für kinderlose Haushalte mit der zuvor erstellten numChildren-Variable. Verteidigen Sie Ihre Wahl, ob oder nicht in den Prozess zu verwenden. (Lösung) Finden Sie das Alter des jüngsten Erwachsenen in jedem Haushalt zum Zeitpunkt ihres ersten Kindes geboren. (Hinweis: Dies ist ein Merkmal des Haushalts, nicht ein Individuum.) (Lösung) Finden Sie das durchschnittliche Haushaltseinkommen von Personen in Ein-Eltern-Haushalte und Zwei-Eltern-Haushalte. (Lösung) Die meisten Stata-Befehle sind eigentlich Schleifen: etwas zur Beobachtung ein tun, dann tun es zur Beobachtung zwei und so weiter. Wenn Stata durch diese Schleife arbeitet, verfolgt sie die Beobachtung, mit der sie arbeitet, mit einer internen Variablen, die n genannt wird. Sie können diese Variable in Ihren Befehlen verwenden: Sie werden nur die Beobachtung fünf auflisten, da die Bedingung n5 nur wahr ist, wenn Stata mit Beobachtung fünf arbeitet. N wird noch nützlicher, wenn mit von kombiniert. Angenommen, Sie wollten die erste Beobachtung in jedem Haushalt auflisten: nach Haushalt: l wenn n1 Es ist nur so, daß die erste Beobachtung in jedem Fall der Haushaltsvorstand ist, was nicht ungewöhnlich ist. Aber was, wenn anstelle von rel2head Sie nur wusste, der Leiter des Haushalts durch ihre Lage im Haushalt Dann müssen Sie sehr vorsichtig sein, über Sortierung. Der Standard-Sortieralgorithmus von Statas ist nicht quotierbar, was bedeutet, dass bei einer Sortierung nach Haushalt die Reihenfolge der Beobachtungen im Haushalt geändert werden kann. Wenn die Reihenfolge der Beobachtungen wichtig ist, sollten Sie die stabile Option zu beliebigen Sortierbefehlen hinzufügen. Auf diese Weise verwendet Stata einen anderen Sortieralgorithmus, der langsamer ist, aber die Reihenfolge der Beobachtungen innerhalb einer Gruppe nicht ändern wird. Aber nachdem Sie getan haben, können Sie immer identifizieren den Kopf des Haushalts mit einer Kombination von Haushalt: und wenn n1. Eine weitere interne Variable N enthält die Anzahl der Beobachtungen im Datensatz. Es ist auch die Beobachtungsnummer der letzten Beobachtung. Sie können es in Befehlen wie n verwenden: nach Haushalt: l wenn nN Hier wird die letzte Beobachtung in jedem Haushalt aufgelistet. Erstellen innerhalb der Gruppe Identifizierer Oft youll wollen eine innerhalb der Gruppe Bezeichner, so können Sie immer sagen, welche Beobachtung ist, die auch nach einer falschen Art. In diesem Fall kann die innerhalb der Gruppe identifizierende Person als Person aufgerufen werden: nach Haushalt: gen personn Die Person Variable entspricht der Beobachtungsnummer der Person in ihrem Haushalt in der aktuellen Sortierreihenfolge. Wenn Sie eine global eindeutige Kennung gewünscht haben, führen Sie den obigen Befehl ohne Haushalt aus. Finden der Größe einer Gruppe Wie n. N Ehren nach Gruppen. Somit enthält N die Anzahl der Beobachtungen in der Gruppe, die derzeit bearbeitet wird. Sie können leicht finden Haushaltsgröße mit: nach Haushalt: gen sizeN Subscripts Betrachten Sie den Befehl: Bei der Durchführung, schaut Stata auf eine Beobachtung zu einem Zeitpunkt, und setzt newIncome für diese Beobachtung gleich Einkommen für die gleiche Beobachtung. Subscripts können Sie den Wert einer Variablen für jede Beobachtung, die Sie wollen. Versuchen Sie: Einkommen 1 bedeutet quotthe Wert des Einkommens für die Beobachtung 1.quot So NewIncome2 wird 60.000 für alle Beobachtungen (nicht, dass das ein nützliches Ergebnis ist). Ausbreitung von Merkmalen einer Sonderbeobachtung Betrachten wir, die weiblichen Haushalte zu identifizieren: nach Haushalt: gen femaleHeadfemale1 Da die erste Person in jedem Haushalt der Kopf ist, hat der Haushalt einen weiblichen Kopf, wenn und nur wenn die erste Person weiblich ist. Was wäre, wenn der Haushaltsvorstand zuletzt anstelle der ersten gewesen wäre? Ändern Sie ihn einfach zu: nach Haushalt: gen femaleHeadfemaleN Was ist, wenn die Haushaltsvorstände an einem bestimmten Ort im Haushalt werentätig sind, damit sie die erste Person im Haushalt sind: Nach Haushalt: gen femaleHeadfemale1 Was ist, wenn der Code für quothad von householdquot werent der niedrigste Wert von rel2head. Das folgende wird immer funktionieren: gen isHead (rel2head1) sortieren Sie Haushalt isHead durch Haushalt: gen femaleHeadfemaleN Was, wenn einige Haushalte nicht einen Kopf haben, und Sie Notwendigkeit femaleHead zu fehlen für jene Haushalte Tun Sie das oben, aber fügen Sie eine wenn Bedingung zum letzten hinzu Line: nach Haushalt: gen femaleHeadfemaleN if isHeadN Diese allgemeine Methode wird immer dann funktionieren, wenn Sie die Merkmale einer speziellen Zeile innerhalb einer Gruppe auswählen müssen (der Befragte einer Umfrage, der Monat, in dem ein Fach absolviert wird) Eine Indikatorvariable, die eine für die Sonderzeile ist, und Null für alle anderen Zeilen Nach der Gruppen-ID und der neuen Indikatorvariable sortieren Die Sonderzeile ist die letzte und kann mit N aufgerufen werden, solange Sie mit starten Beobachtung als erste, nicht als letzte, können Sie gsort (generalisierte Sorte) verwenden: gsort household - isHead Mit gsort können Sie ein Minuszeichen vor einem Variablennamen setzen und die Beobachtungen werden in absteigender Reihenfolge nach dieser Variablen statt aufsteigend sortiert . Überprüfen, ob eine Variable innerhalb einer Gruppe variiert Die Variable householdIncome sollte für alle Personen innerhalb eines bestimmten Haushalts denselben Wert haben. Sie können überprüfen, dass mit: sort Haushalt Haushalt durch Haushalt: assert HaushaltIncome1householdIncomeN Da die Beobachtungen innerhalb eines Haushalts sind nach HaushaltIncome sortiert. Der kleinste Wert ist der erste und der größte Wert wird der letzte sein. Wenn der erste und der letzte Wert identisch sind, dann wissen Sie, dass alle Werte identisch sind. Wie könnte man überprüfen, dass jeder Haushalt einen einzigen Haushalt hat (Lösung) Erstellen Sie eine Indikatorvariable, ob der Haushalt des Alters variiert. Verwenden Sie es, um nur jene Haushalte zu durchsuchen, deren Alter variiert. (Lösung) Berechnungen basierend auf Beobachtungen Nachbarn Subskripte können mathematische Ausdrücke enthalten, einschließlich n und N. Starten Sie eine neue Do-Datei, die den Datensatz, der als Schule bezeichnet wird, lädt. Dies enthält die Registrierungsnummern für zehn fiktive (und nicht schrecklich plausible) Schulen. Nun definieren Sie eine Schüler-Peer-Gruppe als jeder in ihrer Klasse, die Note über ihr, und die Klasse unter ihr. Um die Größe jeder Peers-Peergruppe zu finden, geben Sie Folgendes ein: nach der Schule: gen peerGroupstudentsstudentsn1studentsn-1 Das Ergebnis fehlt für Klasse 1, weil es nicht eine Note vor ihm hat und für Klasse zwölf, weil es nicht eine Note danach hat. So Studenten-1 oder Studenten n1 geben fehlende Werte für sie. Glücklicherweise gibt Stata nur einen fehlenden Wert in solchen Fällen anstatt geben einen Quoteindex aus Boundsquot-Fehler oder etwas ähnliches. Was passieren würde, wenn einige Schulen keine Beobachtung für einige Noten hatten? (Lösung) Implementieren Sie eine erweiterte Definition von PeerGroup, wo die Peers der ersten Grader und der PeerGroupstudentsn1studentsn - Die ersten und zweiten Grader, und die Peers der zwölften Grader sind die elften und zwölften Grader (dh füllen Sie die fehlenden Werte). (Solution) Panel Daten Panel Daten oder Daten mit mehreren Personen beobachtet mehrfach, können wie gruppierte Daten behandelt werden, obwohl ein quotgroupquot in diesem Fall ein Individuum ist. (Aus diesem Grund führen wir allgemeinere Terminologie in hierarchischen Daten ein.) Starten Sie eine andere Datei, die einen Datensatz lädt, der als Arbeit bezeichnet wird. Dieser besteht aus fünf Personen, die zwanzig Monate lang beobachtet wurden, wobei jeder Beschäftigungsstatus jeden Monat aufgezeichnet wurde. Identifizierung von Zaubersprüchen Eine typische Person in diesem Panel ist für eine Weile beschäftigt, dann arbeitslos für eine Weile, etc. Jede Periode der ununterbrochenen Beschäftigung oder Arbeitslosigkeit wird als "zellquot und eine gemeinsame erste Aufgabe mit solchen Daten ist es, die Zauber zu identifizieren. Beginnen Sie mit der Ermittlung der Monate, die einen neuen Zauber beginnen, dh die Monate, in denen sich der Erwerbsstatus des Arbeitnehmers von dem des vorangegangenen Monats unterscheidet: nach Person: gen start (arbeitslosn-1) Für den ersten Monat, in dem eine Person beobachtet wird, Die eingesetzte Menge existiert nicht und fehlt somit. Da das Beschäftigte nie fehlt (wie würden Sie das überprüfen), wird garantiert, dass der erste Monat, in dem eine Person beobachtet wird, als Beginn eines neuen Zaubers markiert wird. Als nächstes folgt etwas, das Sie zu Ihrer Trickpackung hinzufügen sollten: by person: gen spellsum (start) Die sum () - Funktion findet laufende Summen, d. H. Die Summe einer Variablen für alle Beobachtungen bis einschließlich der aktuellen Beobachtung. Seit Beginn ist eine, wenn ein Zauber beginnt und Null ansonsten, Summe (Start) für eine Beobachtung ist die Anzahl der Zauber, die bis zu diesem Punkt8212 begonnen haben und die als herrliche Zauber-ID dient. Sobald Sie die Zaubersprüche identifiziert haben, können Sie sie als Gruppen behandeln. Allerdings sind diese Spell-IDs nur sinnvoll im Kontext einer Person (jede Person hat ihre eigene Zauber Nummer eins). So ist die richtige by ist von Person Zauber. Und das erste Mal, wenn Sie es youll haben zu sagen bysort. Aber alles, was du gelernt hast, gilt immer noch. Zum Beispiel ist das Finden der Dauer eines Zauberspiegels genau wie das Finden der Größe eines Haushaltes: bysort person Zauber: gen durationN Denken Sie zurück an den Befehl: by person: gen start (employedemployedn-1) Was würde passieren, wenn Sie die by weggelassen haben. (Lösung) Erstellen Sie Variablen mit dem Startmonat, Startjahr, Endmonat und Endjahr für jeden Zauber. (Lösung) Finde die durchschnittliche Zauberlänge für jede Person. Stellen Sie sicher, dass der Mittelwert über Zauber berechnet wird, nicht Monate. (Lösung) Letzte Überarbeitung: 1 4 2016


No comments:

Post a Comment