Local Regression In Stata Forex

Regression Channel Indicator Regression Kanal Anzeige wird von Gilbert Raff, so dass diese Indikator oft mit Raff Regression Channel Anzeige aufgerufen. Reg Channel-Indikator besteht aus 2 oder mehr Trendlinie über und unter dem Marktpreis. Die Breite des linearen Regressionskanals spiegelt den Abstand zwischen dem höchsten Preis und dem niedrigsten Preis in einem bestimmten Zeitraum wider. Wie liest man Regressionskanal-Indikator Wenn der Marktpreis sich innerhalb des Regressionsindikators verschiebt, ist der bullische Trend. Wenn der Marktpreis innerhalb des Regressionsindikators sinkt, ist der Baisse Trend. So wie die Trendumkehr mit diesem Indikator einfach zu lesen, wenn Sie sehen, der Marktpreis bricht die Kanallinie es bedeutet Trendwendepotential. Die Anzeige des Regressionskanals kann aufgebaut werden, um den aktuellen Marktpreisverlauf zu lesen oder den Trend zu identifizieren. Dieser Indikator kann auch die Unterstützung und Widerstand Ebenen identifizieren. Viele Devisenhändler wie dieser Indikator, weil die Einfachheit des Indikators und können auch gehandelt werden, um die Marktentwicklung zu bestimmen. Wir können leicht bestimmen, bullish und bearish Trend auf dem Markt. Wie wir das Trendwendepotential mit diesem Indikator wie bei einem anderen Kanalindikator oder einem anderen technischen Indikator bestimmen. Grundsätzlich verwendeten wir Schlusskurs als Bestätigungsmuster. Für ein Beispiel, wenn der Marktpreis schließen außerhalb des Kanals, zeigt es die Trendwende Trend. Wenn Sie herunterladen und verwenden Sie es als Ihr Trading-Tool, können Sie ganz einfach mit diesem Link Regression Channel Indicator herunterladen. Und Sie können diese Anzeige kostenlos herunterladen. XTFMB: Stata-Modul, um Fama-MacBeth zweistufige Panel Regression ausführen Wenn Sie eine Korrektur anfordern, erwähnen Sie bitte diese Elemente behandeln: RePEc: boc: bocode: s456786. Siehe allgemeine Informationen zur Korrektur von Material in RePEc. Wenn Sie diesen Artikel verfasst haben und noch nicht bei RePEc registriert sind, empfehlen wir Ihnen, dies hier zu tun. Für technische Fragen zu diesem Artikel oder zur Korrektur seiner Autoren, Titel, Zusammenfassung, Bibliographie oder Download-Informationen kontaktieren Sie bitte: (Christopher F Baum) . Dadurch können Sie Ihr Profil mit diesem Element verknüpfen. Es erlaubt Ihnen auch, potenzielle Zitate zu diesem Punkt zu akzeptieren, dass wir uns unsicher sind. Wenn Referenzen vollständig fehlen, können Sie sie über dieses Formular hinzufügen. Wenn die vollständigen Referenzen ein Element auflisten, das in RePEc vorhanden ist, aber das System nicht mit ihm verknüpft ist, können Sie mit diesem Formular helfen. Wenn Sie über fehlende Elemente wissen, können Sie uns helfen, diese Links zu erstellen, indem Sie die entsprechenden Referenzen in der gleichen Weise wie oben hinzufügen. Wenn Sie ein registrierter Autor dieses Artikels sind, können Sie auch die Registerkarte Zitate in Ihrem Profil überprüfen, da es einige Zitate gibt, die auf die Bestätigung warten. Bitte beachten Sie, dass Korrekturen einige Wochen dauern können, um die verschiedenen RePEc-Dienste zu filtern. Mehr Leistungen MyIDEAS Folgen Sie den Schriftenreihen, Zeitschriften, Autoren amp mehr Neue Papiere per E-Mail Neuzugänge an RePEc abonnieren Autoreintrag Öffentliche Profile für Wirtschaftswissenschaftler Rankings Verschiedene Forschungsschwerpunkte in Wirtschaftswissenschaften amp Verwandte Themen Genealogie Wer war ein Student von wem, mit RePEc RePEc Biblio Kuratierte Artikel amp papers diverse Wirtschaftswissenschaften MPRA Hochladen Sie Ihr Papier auf RePEc und IDEAS aufgeführt werden EconAcademics Blog Aggregator für die Ökonomie Forschung Plagiat Fall Plagiate in der Wirtschaft Job-Marktpapiere RePEc Arbeitspapier-Serie auf dem Arbeitsmarkt Fantasy League vorgeben, Sie sind an der Spitze Einer Wirtschaftsabteilung Dienstleistungen von der StL Fed Data, Forschung, Anwendungen amp mehr aus dem St. Louis FedStata Programming Essentials Ever jemals benötigt, um die gleiche Sache, um zehn verschiedene Variablen und wünschte, dass Sie didnt haben, es zu schreiben zehn Mal Wenn ja, Dann ist dieser Artikel für Sie. Wenn nicht, irgendwann werden Sie8212so Sie vielleicht auch lesen weiterlesen. Stata hat alle Werkzeuge erforderlich, um sehr anspruchsvolle Programme schreiben, aber das Wissen nur ein paar von ihnen ermöglicht es Ihnen, jeden Tag machen Dateien kürzer und effizienter zu machen. Dieser Artikel konzentriert sich auf die Programmierung Werkzeuge, die in unserer Erfahrung, wer Stata schwer verwendet wird schließlich lernen wollen. Um von diesem Artikel profitieren youll brauchen ein solides Verständnis der grundlegenden Stata-Syntax, wie Sie von unserer Stata for Researchers-Serie erhalten können. Die primäre Zielgruppe ist Stata Benutzer ohne andere Programmierkenntnisse. Wenn Sie eine Menge von Stata-Programmierung bereits getan haben und suchen, um Ihre Quotebag von Tricksquot auschecken Stata Programming Tools erweitern. Dieser Artikel ist am besten am Computer mit Stata laufen zu lesen. Wenn Sie die Befehle in den Beispielen selbst eingeben, können Sie alle Details merken und beibehalten und sich darauf vorbereiten, Ihren eigenen Code zu schreiben. Makros Ein Stata-Makro ist ein Feld, in das Sie Text eingefügt haben. Anschließend verwenden Sie was in dem Feld in nachfolgenden Befehlen. (Der reale Trick erhält einen einzelnen Befehl, um mehrfach mit einem anderen Bit des Textes in der Kiste jedes Mal laufen zu lassen - gut erhalten dort). Die Makros gut verwenden sind quotlocalquot Makros. Wenn Sie mit globalen und lokalen Variablen aus anderen Sprachen vertraut sind, sind lokale lokale Makros lokal auf die gleiche Weise lokal. Wenn nicht, vertrauen Sie uns nur, dass lokale Makros die richtigen sind zu verwenden. Der Befehl zum Definieren eines lokalen Makros lautet: local name value Hier wird ein lokales Makro mit dem Namen x erstellt und das Zeichen 1 eingefügt (nicht der Wert 1 wie in der Quotoneinheit rechts von null auf der Zahl linequot). Um einen Makro zu verwenden, setzen Sie seinen Namen in einen Befehl, der von einem bestimmten Satz von Anführungszeichen umgeben ist: Das Zitat vor dem x ist das linke einfache Anführungszeichen. Es befindet sich in der oberen linken Ecke der Tastatur, unter der Tilde (). Das Zitat nach dem x ist das richtige einfache Anführungszeichen. Er befindet sich unter dem doppelten Anführungszeichen (auf der rechten Seite der Tastatur). Makros werden von einem Makroprozessor behandelt, der Befehle prüft, bevor sie an die eigentliche Stata übergeben werden. Wenn es ein Makro sieht (gekennzeichnet durch diese bestimmte Menge von Anführungszeichen), ersetzt es das Makro mit seiner Tabelle. Also, was Stata richtig sah, war: Jetzt versuchen Sie ein etwas komplizierter Makro: lokales x 22 display x Das Ergebnis ist 4. aber das ist, weil die Anzeige Befehl wie ein Taschenrechner wirkt. Der Befehl, den Stata sah, war: so beurteilte er 22 und gab dir die Antwort. Wenn Sie wollen, dass die Anzeige etwas auf dem Bildschirm ohne es zu bewerten, legen Sie es in Anführungszeichen. Dann Display behandelt es wie eine Zeichenfolge. Gibt das Ergebnis 22. Aber was geschehen, bevor Sie es in Anführungszeichen: Ihr Makro enthielt eine Arbeitsgruppe von Stata-Code, die Stata glücklich ausgeführt, wenn Sie es verwendet. In der Tat Stata richtige didnt wissen oder Pflege, dass 22 aus einem Makro kam. Mit dieser Funktion können Sie Makros absolut überall verwenden, sogar in Makrodefinitionen. Speichern von Ergebnissen in Makros Wenn Sie das Ergebnis einer Berechnung in ein Makro einfügen möchten, setzen Sie ein Gleichheitszeichen nach dem Makronamen: local x22 display quotxquot Wenn der lokale Befehl ein Gleichheitszeichen enthält, bewertet Stata, was folgt, bevor es in das Verzeichnis Makro. Nun x enthält wirklich 4 und nicht 22, egal wie Sie es anzeigen. Makroausdrücke Statas-Makroprozessor kann Stata-Ausdrücke auswerten, d. h. jede Formel, die Sie nach dem Gleichheitszeichen in einem Generierungs - oder Ersetzungsbefehl (aber nicht in egen) eintragen können. Die Syntax lautet: wobei expression der auszuwertende Ausdruck ist. Versuchen Sie: Das Ergebnis ist 4. aber Anzeige didnt es berechnen (die Anführungszeichen verhindern, dass). Stattdessen sagte das Gleichheitszeichen vor 22, dass der Makroprozessor diesen Ausdruck auswertet und das Ergebnis in den Code einfügte, also was Stata richtig sah, war display4quot. Eine andere allgemeine Verwendung ist N., die die Anzahl der Beobachtungen in dem aktuellen Datensatz sein wird (und kann an Orten verwendet werden, bei denen N von selbst nicht geeignet ist). Makroausdrücke - und Makros im Allgemeinen - können andere Makros enthalten. Versuchen: Dies teilt dem Makroprozessor mit, dass er vom Wert des Makros x subtrahiert und dann das Ergebnis in den Code platziert. Das kann sehr nützlich sein: Wenn Sie beispielsweise ein Makrojahr mit dem aktuellen Jahr hatten, wäre das Jahr-1 das Jahr vor dem laufenden Jahr. Undefinierte Makros Leider wird mit Hilfe eines Makros, die Sie nicht definiert haben, eine Fehlermeldung generiert. Statas-Makro-Prozessor ersetzt es nur mit nichts: Gibt das gleiche Ergebnis wie: Dies kann Kopfschmerzen verursachen: Wenn Sie einen Makro-Namen falsch youll wahrscheinlich erhalten einen generischen Syntaxfehler ohne Angabe, dass ein Makro die Ursache des Problems ist. Noch schlimmer, in einigen Fällen wird der Befehl noch funktionieren, aber geben falsche Ergebnisse. Seien Sie sehr vorsichtig, um die Namen der Makros richtig. Einige Verwendungen für Makros Außerhalb der Schleifen Der Hauptgrund für das Erlernen von Makros ist, so dass Sie sie in Schleifen verwenden können. Aber es gibt Zeiten, wenn mit ihnen alle von ihnen können komplexe Code leichter zu lesen. Angenommen, Sie müssen eine große Anzahl von Regressionen verschiedener Typen ausführen, aber alle enthalten einen festen Satz von Steuervariablen. Betrachten Sie die Liste der Steuervariablen in einem Makro: local controlVars Alter Geschlecht Besetzung Standort maritalStatus hasChildren Dies wird die Regressionsbefehle kürzer machen: reg Einkommen Bildung controlVars logit verwendet Bildung controlVars Nun nehmen Sie an, dass Sie häufig mit Teilproben Ihres Datensatzes arbeiten. Sie können auch Makros für sie zu definieren: lokale blackWoman race1 amp weiblichen lokalen hispMan race2 amp weiblichen reg Einkommen Ausbildung controlVars wenn blackWoman logit eingesetzt Bildung controlVars wenn hispMan Der Punkt hier ist nicht, Tastenanschläge zu speichern, sondern um den Code klarer. Mit Makros versteckt sich die Details dessen, was die Kontrollvariablen sind oder wie eine schwarze Frau in diesem Datensatz identifiziert werden kann und hilft Ihnen konzentrieren, was Sie versuchen zu tun. Nicht mit der Eingabe dieser Details jedes Mal entfernt auch eine Chance für Fehler. Sie können auch Änderungen schneller vornehmen: Wenn Sie eine Steuervariable hinzufügen müssen, müssen Sie sie nur der Definition des controlVars-Makros hinzufügen, anstatt sie jedem Regressionsbefehl hinzuzufügen. Saving Tastatureingaben ist ein schöner Nebeneffekt, aber widerstehen Sie der Versuchung, um Ihren Code weniger klar in den Namen machen es kürzer. Ein paar Minuten, um klaren Code eingeben ist viel effizienter als stundenlang zu debuggen Code, der kurz aber schwer zu verstehen ist. Für Schleifen Eine foreach Schleife nimmt eine Liste und führt dann einen Befehl oder Satz von Befehlen für jedes Element der Liste aus. Das Element, das gerade bearbeitet wird, wird in einem Makro gespeichert, so dass Sie es in den Befehlen verweisen können. Die Liste, die durchlaufen werden soll, kann eine generische Liste sein, die Text enthält, oder es gibt mehrere Arten von strukturierten Listen (gut nur diskutieren, varlists). Die Syntax für eine foreach-Schleife mit einer generischen Liste ist: foreach-Makro in Listenbefehl (en) Als ein sehr einfaches Beispiel: foreach-Farbe in rot-blau-grünes display quotcolorquot Hier ist color der Name des Makros, das die Listenelemente enthält. Rot blau grün ist die Liste selbst. Stata bricht die Liste in Elemente, wo sie Räume sieht, so dass diese Liste drei Elemente enthält: rot. Blau und Grün. Die linke lockige Klammer () markiert das Ende der Schleife und muss auf ihre eigene Linie gehen. Wenn Sie dies in interaktiven Stata eingeben, fügt das Ergebnisfenster Zeilennummern für die Befehle in der Schleife hinzu, aber Sie müssen sie nicht eingeben. Beachten Sie, wie nichts tatsächlich ausgeführt wird, bis Sie die richtige geschweifte Klammer eingeben, und dann führt Stata die ganze Sache. Wenn es youll erhalten die folgende Ausgabe: Stata beginnt mit der Analyse Ihrer Liste und die Identifizierung der Elemente enthält. Es setzt dann das erste Element (rot) in das Schleifen-Makro (Farbe) und führt den Befehl in der Schleife aus. Angesichts der Tabellen der Farbe. Wird der Befehl zur Anzeige quotredquot und rot auf dem Bildschirm gedruckt. Stata stellt dann das zweite Element in das Makro und führt den Befehl erneut aus und druckt blau auf dem Bildschirm. Es wiederholt dann den Prozess für grün. Und wenn dies der Fall ist, erkennt Stata, dass die Liste aus Elementen besteht und die foreach-Schleife abgeschlossen ist. In diesem Artikel youll sehen, dass Befehle, die innerhalb einer Schleife sind eingerückt. Dies macht die Schleifen Struktur visuell offensichtlich und wir empfehlen Ihnen das gleiche tun, wenn Sie schreiben Dateien. Alles, was Sie tun müssen, ist, drücken Sie Tab, bevor Sie die erste Zeile der Schleife beginnen. Statas do-Datei-Editor und alle anderen Texteditor für die Programmierung indent nachfolgenden Zeilen automatisch. (Sie brauchen keine Sorgen um Einrückungen, wenn Sie interaktiv arbeiten, aber in echter Arbeit ist es sehr selten, Schleifen interaktiv zu benutzen.) Sie können eine generische Liste verwenden, um viele verschiedene Arten von Dingen zu durchlaufen: Variablen, Werte, Dateien, Unterabtastungen, Alles, was Sie mit Text beschreiben können. Wenn ein Element Leerzeichen enthalten muss, muss es in Anführungszeichen gesetzt werden. Looping über Variablen Die häufigste Sache zu loop over ist Variablen. Angenommen, Sie wollten mehrere abhängige Variablen auf dieselben unabhängigen Variablen zurückrechnen. Der folgende Code tut dies, unter Verwendung der Automobil-Beispiel-Datensatz, der mit Stata kommt: sysuse auto foreach yvar in mpg Preisverschiebung reg yvar Fremdgewicht Looping über Teile von Variablen Namen Betrachten Sie den folgenden Datensatz: Es enthält eine fiktive (und nicht schrecklich plausibel ) Datensatz von Personen und deren Einkommen über zwölf Monate. Dies sind Panel-Daten in der breiten Form, so gibt es zwölf Einkommen Variablen: incJan. IncFeb. IncMar Etc. Angenommen, Sie möchten einen entsprechenden Satz von Indikatorvariablen für die Person, die Einkommen in diesem Monat hatte. Das Erstellen einer von ihnen ist einfach: gen hadIncJan (incJangt0), wenn incJanlt. Aber die Schaffung aller zwölf in der gleichen Weise wäre mühsam. (Wenn Sie überprüft haben, finden Sie, dass dieser Datensatz keine fehlenden Werte enthält, so dass sie ausgeschlossen sind, wenn incJanlt nicht unbedingt erforderlich ist.) Es ist eine Erinnerung, immer über fehlende Werte beim Erstellen solcher Indikatorvariablen nachzudenken.) Sie können alle erstellen Zwölf Indikatorvariablen schnell und einfach mit einer foreach-Schleife: foreach month in Jan Feb Mrz Apr Mai Jun Jul Aug Sep Okt Nov Dez Gen hadIncmonth (incmonthgt0) if incmonthlt. Dies richtet eine generische Liste mit den Monaten ein und verwendet dann diese Monate als Teile von Variablennamen. Beachten Sie den Prozess, mit dem wir diese Schleife erstellt haben: Zuerst haben wir den Befehl wed für ein einzelnes Element der Liste herausgefunden und dann geändert, um Makros zu verwenden. Dies ist eine gute Angewohnheit, wenn Sie brauchen, um nicht-trivialen Code mit Makros zu schreiben. Looping über Varlists Während generische Listen Variablennamen enthalten können, müssen Sie alle Namen einzeln eingeben. Wenn Sie sagen, dass die Liste, die Sie umschleifen möchten, eine offizielle Stata-Liste ist, können Sie Standard-Variablenkürzel verwenden, wie zB x für alle Variablen, die mit x und x-z für alle Variablen von x bis z beginnen. Um die varlist-Syntax zu überprüfen, lesen Sie den entsprechenden Abschnitt in Stata for Researchers. Die Syntax für eine foreach-Schleife über einer varlist lautet wie folgt: foreach - Makro von varlist vars Beachten Sie, dass während die foreach-Syntax für eine generische Liste in enthält, die die Syntax für eine strukturierte Liste hat. Stata verwendet die in oder von zu bestimmen, ob das nächste Wort das erste Element der Liste oder eine Art von Liste ist. Forscher erhalten gelegentlich Datensätze, die in anderen Programmen erstellt wurden, wobei die Variablennamen in Großbuchstaben geschrieben sind. Da sich Stata tatsächlich um den Fall kümmert, können Variablennamen für Großbuchstaben mühsam sein. Stata hat vor kurzem den Umbenennungsbefehl die Möglichkeit gegeben, Namen in Kleinbuchstaben umzuwandeln: Aber das ist ein großartiges Beispiel, das es mit einer foreach-Schleife über eine varlist tun kann: foreach oldname von varlist lokales newnamelower (quotoldnamequot) umbenennen oldname newname Das asterisk () Alle von selbst übereinstimmt alle Variablen, so dass die Liste foreach ist, um Schleife enthält alle Variablen in den aktuellen Datensatz. Die Funktion lower () nimmt einen String, in diesem Fall die Tabellen des Makro-alten Namens. Und wandelt es in Kleinbuchstaben um. Beachten Sie die Verwendung des Gleichheitszeichens im lokalen Befehl, der newname definiert. So dass der untere (quototnamequot) ausgewertet und das Ergebnis gespeichert wird. Looping over Numbers Eine forvalues ​​Schleife (häufig abgekürzt forval) Schleifen über Zahlen. Anstatt eine Liste zu definieren, definieren Sie einen Bereich von Zahlen. Der mit Abstand am weitesten verbreitete Bereich besteht aus einer Startnummer und einer Endnummer, und Stata geht davon aus, dass sie von einer zwischen ihnen zählen sollte. Die Syntax ist einfach: forvalues ​​makro start / end forvalues ​​i1 / 5 display i gibt die Ausgabe an: Wenn Sie auf andere Weise zählen müssen, geben Sie help forvalues ​​ein, um weitere Optionen anzuzeigen. Betrachten Sie den folgenden Datensatz: Dieser Datensatz ist sehr ähnlich zu den Datensätzen der monatlichen Einnahmen, die wir früher untersucht haben, aber es enthält jährliche Einkommen von 1990 bis 2010. Ihre Aufgabe ist es wieder, einen Indikator für die Frage, ob eine Person Einkommen in einer Jahres. Das Verwenden von Forvalues ​​ist sehr einfach: forvalues ​​year1990 / 2010 gen hadIncyear (incyeargt0) if incyearlt. Dies wäre schwieriger, wenn die Jahre nicht das Jahrhundert (dh 90 statt 1990) enthalten, weil Stata denkt, 100 sollte nach 99 und nicht 00 kommen. Wenn Ihre Daten solche Jahre beinhalten, erwägen, das Jahrhundert hinzufügen, bevor Sie irgendwelche ernsthafte Arbeit mit ihm . Looping über Werte und Pegel von Manchmal müssen Sie Schleife über die Werte, die eine bestimmte Variable übernimmt. Betrachten Sie den folgenden Datensatz: Dieser enthält Daten über die Rasse, Einkommen, Alter und Bildung Kategorie einer Reihe von fiktiven Menschen. Angenommen, Sie wollen das Einkommen auf Alter und Bildung zurückrechnen. Aber glauben, dass die Auswirkungen von Alter und Bildung für Menschen unterschiedlicher Rassen unterschiedlich sein können. Ein Ansatz (wahrscheinlich nicht der beste) wäre, eine separate Regression für die Menschen in jedem Rennen laufen. Normalerweise können Sie dies tun mit: nach Rasse: Regress Einkommen Alter i. education (Die Konstruktion i. education erzählt Stata, dass Bildung ein Faktor oder kategorische Variable ist und sollte in eine Reihe von Indikatoren umgewandelt werden. Siehe Abschnitt über Faktor-Variablen in Stata Für Forscher, wenn youd gerne Faktor variable Syntax zu überprüfen.) Dies ist jedoch fiktive Umfrage Daten und Sie müssen für die Umfrage Design in laufenden Regressionen zu korrigieren. Wenn Sie mit Statas-Befragungsbefehlen nicht vertraut sind, bedeutet dies: Das Übersichtsdesign wird mit dem Befehl svyset (survey set) beschrieben. Dieser Datensatz hat primäre Abtasteinheiten, die durch die variablen psu und Wahrscheinlichkeitsgewichte gegeben werden, die durch das variable Gewicht gegeben werden. Der entsprechende Befehl svyset Befehl (der bereits ausgeführt wurde, so dass Sie nicht brauchen) ist: svyset psu pweightweight Um Stata für diese Gewichte in Schätzung Befehle korrigieren, fügen Sie die svy: Präfix, zum Beispiel: svy: Regress Einkommen Alter i. education Sie können den Standard nicht verwenden, wenn Syntax mit Umfragedaten oder die Gewichte nicht korrekt angewendet werden. Verwenden Sie stattdessen die Option subpop () von svy. Zum Beispiel: svy, subpop (wenn race1): regress Einkommen Alter i. education durch: kann nicht mit svy verwendet werden: Punkt 4 bedeutet, dass Sie nicht Ihre Rückbildung für alle Rennen mit verwenden können. Aber Sie können es mit einer Schleife tun. Alle von: tut ist die Werte der Rasse zu identifizieren und dann Schleife über sie, und an dieser Stelle wissen Sie, wie Sie das selbst tun (obwohl durch: ist schneller, wenn Sie es verwenden können). Die Rennvariable nimmt die Werte eins, zwei und drei an, so dass eine geeignete Schleife ist: forvalues ​​race1 / 3 svy, subpop (wenn racerace): reg Einkommen Alter i. education Was wäre, wenn Sie hatten ein viertes Rennen, und seine Zahl waren neun (QuotOtherquot) anstatt vier Sie konnten es einfach recode und machen es vier. Aber wenn das nicht eine gute Idee für Ihr Projekt ist, müssen Sie auf die weniger strukturierte foreach Schleife umschalten: foreach Rennen in 1 2 3 9 svy, subpop (wenn racerace): Reg Einkommen Alter i. education Auf der anderen Seite ist es nicht Ungewöhnlich, um über Dutzende oder sogar Hunderte von Werten Schleife, oder nicht vor der Zeit wissen, welche Werte eine Variable übernimmt. In diesem Fall können Sie die Ebenen des Befehls identifizieren sie für Sie und legte sie in einem Makro. Die Syntax ist: levelsof Variable. Lokal (Rennen) werden alle Werte des variablen Rennens aufgelistet und in einem Makro namens Rassen gespeichert. Sie können dann alle Schleifen über: foreach Rennen in Rennen svy, subpop (wenn racerace): Reg Einkommen Alter i. education Allerdings ist diese Situation häufig genug, dass Stata spezielle Code für das Parsen von Makros in Listen für Looping. Die Syntax ist: foreach Rennen der lokalen Rennen svy, subpop (wenn Rennfahrer): Reg Einkommen Alter i. education Beachten Sie, dass Rennen nicht in den üblichen Makro-Anführungszeichen ist: Der ganze Punkt dieser Konstruktion ist, den regulären Makroprozessor zu Gunsten von zu umgehen Code, der im Rahmen von Schleifen schneller ist. Es macht einen sehr kleinen Unterschied, aber wenn Sie genug Looping wird es addieren. Eine Funktion youll vermissen von durch: ist der Text in der Ausgabe, die Ihnen erklärt, welche durch Gruppe zurzeit bearbeitet wird, aber Sie können es selbst addieren. Die folgende Version der Schleife fügt einen Anzeigebefehl hinzu, der zwei leere Zeilen einfügt und dann den aktuellen Wert des Race-Makros druckt, bevor die Regression ausgeführt wird: foreach Rennen der lokalen Rassen display newline (2) quotRaceracequot svy, subpop (wenn racerace): reg Einkommen Alter i. education Mit Display, um den Wert eines Makros an einem bestimmten Punkt in Ihrem Programm ausdrucken ist auch ein sehr nützliches Werkzeug für das Debuggen. Denken Sie daran, dass dies nur ein Beispiel war. Ein besserer Weg, um die Auswirkungen der Rasse zu untersuchen, wäre wahrscheinlich das Zusammenspiel von Rasse mit den anderen Variablen. Die neue Syntax für Faktorvariablen und Interaktionen macht dies sehr einfach: svy: regress income i. race (c. age i. education) Dieses Modell enthält alle Vorgängermodelle - wenn Sie neu in Regressionen sind, die Interaktionen beinhalten und herausgefunden haben, warum das so ist Ist vielleicht eine gute Übung. Verschachtelte Schleifen Die Befehle, die in einer Schleife enthalten sind, können andere Schleifen enthalten: Dieser Code erzeugt die folgende Ausgabe: Die innere Schleife (diejenige, die j verwendet) wird dreimal einmal für jeden Wert von i ausgeführt. Somit läuft der Anzeigebefehl insgesamt neunmal. Beachten Sie, wie der Anzeigebefehl zweimal eingerückt wird: einmal, weil er Teil der i-Schleife ist und einmal, weil er Teil der Schleife ist. Wenn Sie mit verschachtelten Schleifen arbeiten, ist es noch wichtiger, dass Sie leicht sagen, was jede Schleife enthält. Betrachten Sie einen endgültigen Datensatz: Dieser enthält monatliche Einkommensdaten, aber für den Zeitraum 1990-2010. Die Variablennamen sind in der Form incJan1990. IncFeb1990. Etc. Um einen Satz von entsprechenden Indikatoren zu erzeugen, müssen Sie sowohl über die Monate als auch über die Jahre hinwegschleifen: forval Jahr1990 / 2010 foreach month in Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez Gen hadIncmonthyear (incmonthyeargt0) if incmonthyearlt. Dies ist sicherlich praktikabel, aber etwas umständlich. Es wäre besonders umständlich, wenn Sie Interesse an Verzögerungen, Leads oder Änderungen im Laufe der Zeit: youd benötigen Code zu sagen, Stata, dass der Monat vor Januar 1991 Dezember 1990. Für die meisten Zwecke ist es einfacher, wenn Zeiträume sind einfach nummeriert sequentiell. In diesem Fall wäre der Januar 1990 die 1. Periode, Dezember 1990 die Periode 12 und Januar 1991 die Periode 13. Glücklicherweise ist es ziemlich leicht zu wechseln: lokaler Zeitraum 1 für das Jahr 1990/2010 pro Monat in Jan Feb März Apr Mai Jun Jul Aug Sep Okt Nov Dec umbenennen incmonthyear incperiod umbenennung hadIncmonthyear hadIncperiod lokale Periodenperiode1 Die Makroperiode wird als Zähler verwendet. Es beginnt auf 1 gesetzt und damit, wie die verschachtelten Schleifen beginnen incJan1990 wird umbenannt inc1 (und ähnlich hadIncJan1990 zu hadInc1). Der Befehl Lokalperiodenperiode 1 erhöht die Periode um Eins: Sobald der Makroprozessor damit fertig ist, sieht Stata die lokale Periode11. Das vervollständigt die innere Schleife, also wird der Monat zu Feb. geändert und incFeb1990 wird in inc2 umbenannt. Das Periodenmakro wird wieder erhöht (die eigentliche Stata sieht nun die lokale Periode21), der Monat wird auf Mar gesetzt. IncMar1990 wird in inc3 umbenannt. Und so weiter, bis alle 252 Monate konvertiert werden. (Beachten Sie, dass 1990 bis 2010 einschließlich ist 21 Jahre.) Bei dieser Konvertierung verlieren Sie die Fähigkeit, eine Variable zu sehen und wissen sofort, was Kalendermonat es beschreibt. Aber es ist viel einfacher zu schleifen. Die verschachtelten Schleifen können ersetzt werden durch: Die Bedeutung von Namenskonventionen Der Variablenname incJan1990 enthält drei Komponenten: das Ding (Einkommen) und den Monat und das Jahr, in dem es beobachtet wird. Die von uns geschriebenen Schleifen hängen von den Variablennamen ab, die alle drei in einer konsistenten Weise beschreiben: Sie würden fehlschlagen, wenn der Datensatz incJan1990 zusammen mit incomeJan1991 enthielt. Incjan1992. IncJanuary1993 oder incJan94. In der realen Welt sind solche Dinge nicht ungewöhnlich. Datensätze aus Erhebungen sind eine besondere Herausforderung, weil ihre Variablennamen oft aus der Form des Fragebogens und nicht aus den darin enthaltenen Informationen stammen. Die Zeit zu nehmen, um Ihre Variablen in einer Weise umzubenennen, die sinnvoll zu Ihnen ist, ist eine gute Idee am Anfang jedes mögliches Projektes, aber, wenn youll unter Verwendung der Schleifen sein lebenswichtig ist, die Sie verursachen und eine konsistente Benennungskonvention für Variablen anwenden. Vorteile von Statas Automatische Loops Nun, da youve gelernt, wie man Loops verwenden, kann es verlockend sein, sie für alles zu verwenden. Denken Sie daran, dass die meisten Stata-Befehle bereits Loops (etwas zur Beobachtung ein, dann tun es zur Beobachtung zwei, etc.) und diese Schleifen sind viel schneller als jede foreach oder forvalues ​​Schleife. Beispielsweise verwenden die folgenden Werte für Werte, um alle Beobachtungen im Datensatz zu durchlaufen und den Wert von y für jede Beobachtung auf den Wert von x für diese Beobachtung zu setzen: gen y. Forvalues ​​i1 / N ersetzen yxi wenn ni aber youll erhalten die exakt gleiche Ergebnis weit schneller und einfach mit: Gelegentlich findet jemand eine Aufgabe, die wirklich erfordert explizite Schleife über Beobachtungen, aber seine seltene. Clever Programmierung kann manchmal andere Schleifen in die Standard-Schleife über Beobachtungen, machen foreach oder forvalues ​​unnötig. Beispielsweise wird die Neugestaltung von breiten Formpaneldaten in eine lange Form die Notwendigkeit für viele Schleifen eliminieren. Gehen Sie zurück zu den ursprünglichen 12 Monaten Einkommensdaten: Erinnern Sie sich, dass wir hadInc Indikatorvariablen mit der folgenden Schleife erstellt haben: foreach month in Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez Gen hadIncmonth (incmonthgt0) if incmonthlt. Allerdings erhalten youll die gleichen Ergebnisse mit den folgenden: reshape lange inc, i (id) j (Monat) string gen hadInc (incgt0) if inclt. Umformung eines großen Datensatzes ist zeitaufwendig, also schalten Sie nicht zwischen breiter Form und langer Form leicht um. Aber wenn Sie einen Block von Dingen, die Sie tun müssen, die leichter in langer Form zu tun wäre zu identifizieren, kann es wert sein, Umgestaltung am Anfang und Ende dieses Blocks. Letzte Überarbeitung: 2/27/2012


Comments