Stata, Excel und Panels

Allgemeine Fragen rund um Statistik mit Stata.

Stata, Excel und Panels

Beitragvon verzweifelteeva » Mi 16. Mai 2012, 11:21

Hallo Leute

ich bin neu hier und auch ein absoluter Anfänger in Stata. Ich verwende Stata 12 und möchte habe Probleme beim Einlesen meiner Excel-Daten.

Ich arbeite mit den 50 US-Bundesstaaten und habe verschiedene Variablen (Defizit, Arbeitslosigkeit, Bevölkerung). Ich habe für jede Variable ein Excel-Sheet die jeweils alle Bundesstaaten (vertikal), und für jeden Bundesstaat eine Zeitreihe mit den Variablenwerten (horizontal).

Ich möchte für Stata ein Panel, Bundesstaaten und Jahre als Panelvariablen. Ich hab allerdings echte Probleme wie ich richtig einlese. Wär es besser für jeden Bundesstaat ein Excel-Sheet anzulegen, dass dann die Variablen enthält?

Ich bin leider etwas planlos, vielleicht kann mir da jemand einen Denkanstoß geben?!

Danke und lg
verzweifelteeva
 
Beiträge: 11
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon daniel » Mi 16. Mai 2012, 12:28

Ich fasse zusammen, was ich verstanden habe. Du hast ein Excell file, in dem k sheets sind. Jedes sheet hat eine Spalte mit den (über alle sheets gleichen) Ländernamen und t weitere Spalten, die jeweils die Werte der Variabeln im Zeitverlauf enthalten.

Was hier die klügste Strategie ist, weiß ich nicht genau. Ein mögliches Vorgehen, ausgehend von dem, was Du hast, wäre

1. Lade das erste sheet
2. Passe die Spaltennnamen (in Stata: Variablennamen) an.
2a. die erste Variable, die die Länder enthält sollte in jedem Datensatz den gleichen Namen haben
2b. Für das sheet "Defizit" sollten die übrigen Variablennamen defitiz<erstes Jahr>, ..., defizit<Jaht t> lautet, wobei der Inhalt in <> natürlich angepasst werden sollte
3. Speichere diesen Datensatz
4. Wiederhole Schritte 1-3 für die sheets 2, ..., k
5. Füge die gespeicherten Datensätze zusammen

Ich hoffe, dass ist für Anfänger nicht zu abstrakt.

Für genauere Antworten oder einen Syntaxentwurf bräuchte man noch weitere Angaben. Sind die einzelenne sheets mit Variablennamen in der ersten Zeile versehen? Sind die sheets nach den Variablen benannt? Sind das gültige Stata Variablennamen? Sind die Zeiträume der Variablenwerte in allen sheets identisch? etc.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon verzweifelteeva » Mi 16. Mai 2012, 15:23

ich versuch mal es besser auszudrücken.

ich habe mehrere Excelsheets (mit jeweils nur einem Sheet). Jede Excel-Datei enthält als linke Spalte 48 US-Bundesstaaten (diese sollen auch beim Panel die 1. Variable darstellen).

Meine unabhängige Variable (Defizit) enthält in der ersten Zeile den Zeitraum (1960-2008). Das ganze schaut ungefähr so aus
Staat 2008 2007 2006 .....
ABC Zahl Zahl Zahl ...
DEF Zahl Zahl Zahl ...
.... ........................

Ich hab einige Kontrollvariablen die genauso wie das Defizit aufgebaut sind (1. Spalte Staaten, 1. Zeile Jahre (Zeitraum ist gleich)). Die Jahre sollen im Panel die 2. Variable darstellen.

Meine abhängigen Variablen bestehen nur aus 2 Spalten. Die 1. Spalte wiederum die Staaten, die 2. Spalte besteht aus 0,1,2 Ausprägungen (so in der Art einer Dummy-Variable). Das schaut dann so aus:
Staat Vetomöglichkeit
ABC 1
DEF 0
......................

Ziel ist es die Excel-Dateien zu einem gemeinsamen Panel zusammenzubauen.

Danke für deine Hilfe
lg
verzweifelteeva
 
Beiträge: 11
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon verzweifelteeva » Mi 16. Mai 2012, 15:25

was mir zu dein abhängigen Variablen noch eingefallen ist. die Ausprägungen hierfür haben sich nicht verändert über den Zeitverlauf. Das heißt wenn für einen Staat der Wert 1 steht, dann gilt der für den gesamten Panelzeitraum.

lg
verzweifelteeva
 
Beiträge: 11
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon tartine » Mi 16. Mai 2012, 17:25

hallo eva,

ich glaube du kannst nicht in einem schritt das panel erstellen. was daniel meinte, ist glaub ich

zuerst pro excelsheet (also variable) eine .dta datei erstellen durch einlesen. dabei ist es wichtig daß die variablen hintenan das jahr stehen haben (also die erste zeile enthält dann: staat, erstervariablenname2008, erstervariablenname 2007, ...)

im nächsten schritt kannst du mit dem befehl -merge- alle einzelnen datensätze zu einem zusammenfügen. danach hast du folgende variablen: staat, erstervariablenname2008, erstervariablenname2007, ... , zweitervariablenname2008, zweitervariablenname2007, ... usw.

und dann kannst du dir dein panel erstellen mit dem befehl -reshape long-, das sieht ungefähr so aus:
reshape long, i(staat) j(jahr)

dann wird eine neue variable erstellt, die das jahr enthält und alle deine anderen variablen verlieren ihr jahreskürzel.

viele grüße
kristina
tartine
 
Beiträge: 5
Registriert: Di 15. Mai 2012, 08:39
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon verzweifelteeva » Mi 16. Mai 2012, 17:37

Danke, voll nett von euch.

Ich werde mich mal damit beschäftigen und bei Fragen melde ich mich wieder.

Bis bald und lg
verzweifelteeva
 
Beiträge: 11
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon daniel » Mi 16. Mai 2012, 17:58

Kristina hat es genau richtig erfasst.

Du sagst, Du bist Anfänger, was bedeutet, dass mein Weg (der bei Weitem nicht der beste sein muss) recht kompliziert nachzuvollziehen ist. Leider kann ich Dir auch nicht garantieren, dass der code funktioniert, weil ich hier nur mit einem mini Dummydatensatz arbeite.

Hier die Vorbereitungsanleitung.

1. Kopiere alle Exceldateien in einen Ordner.
2. Benenne die Dateien so, dass der Dateiname dem späteren Variablennamen entspricht (z.b. defizit.xlsx). Dabei ist es wichtig, dass es sich um gültige Stata Variablennamen handelt (max. 32 Zeichen, keine Sonderzeichen und Leerzeichen, nicht mit Nummern beginnend etc.).
3. Stelle sicher, dass der Variablenname, der die Spalte der Länder kennzeichnet (in Deinem Beispiel "staat") in jeder Datei gleich geschrieben ist.

Weiter.

4. Starte Stata und kopiere den code in ein neues do-file

Code: Alles auswählen
cap pr drop foo

pr foo
   vers 12.1
   syntax namelist ,Path(str) Id(name) Years(numlist)
   
   // change to directory
   cd `"`path'"'
   
   // import the files and save in Stata format
   foreach fn of loc namelist {
      import excel `fn' ,first clear
      unab vars : *
      gettoken dump vars : vars
      loc newnames : subinstr loc years " " " `fn'" ,all
      loc newnames `fn'`newnames'
      ren (`vars')(`newnames')
      qui sa `fn'.dta ,replace
   }
   
   // now merge files
   gettoken firstfile namelist : namelist
   qui u `firstfile'.dta ,clear
   foreach fn of loc namelist {
      qui mer 1:1 `id' using `fn'.dta
      cap drop _mer
      erase `fn'.dta
   }
   erase `firstfile'.dta
   
   // reshape long
   qui reshape long `firstfile' `namelist' ,i(`id')
end


5. Lass den kompletten code einmal durchlaufen (Strg + D).

6. Tippe (in der command line oder einem neuen do-file)

Code: Alles auswählen
foo <namelist> ,p(<pfad>) id(<id>) y(<jahre>)


wobei Du

6a. <namelist> durch die Liste der Variablennamen (Defizit etc. ohen Endung), die gleichzeitig die Dateinamen der Exceldateien darstellen ersetzt. Gib hier nicht den Namen Deiner abhängigen Variable an, die behandeln wir später.
6b. <pfad> durch den Ort der Dateien (also den Ort des neu angelegten Ordners) erstezt (z.B C:/Dokumente und Einstellungen/benutzer/Desktop/meine daten). Anführungszeichen sind nicht nötig.
6c. <id> durch den Namen der die Staaten kennzeichnet (z.B. staat) ersetzt.
6d. <jahre> durch die Jahre in der richtigen Reihenfolge ersetzt. In Deinem Beispiel sind die Jahre rückwärts (von 2008 bis 1960) angeordnet. In diesem Fall würdest Du -y(2008/1960)- schrieben.

7. Speicher den Datensatz.

Code: Alles auswählen
sa <name>.dta


wobei <name> durch einen beliebigen Dateinamen ersetzt wird.

Deine abhängige Variable sollte nun mit folgenden Zeilen angefügt werden können.

Code: Alles auswählen
import excel <excellname> ,first clear
mer 1:m <id> using <name>
drop _mer


Dabei ist <excellname> der Name des Excelldatensatzes, <id> analog zu oben und <name> der im Schritt zuvor gewählte Dateiname.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon verzweifelteeva » Fr 18. Mai 2012, 08:21

Danke nochmal

ich musste/muss leider gestern und heute arbeiten deswegen werde ich es erst morgen ausprobieren können. Ich geb euch dann Bescheid wie ich mich geschlagen habe!

Lg
verzweifelteeva
 
Beiträge: 11
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon verzweifelteeva » So 20. Mai 2012, 11:53

Hallo Leute

ich muss ganz ehrlich sagen, die Geschichte mit dem Code habe ich so nicht nachvollziehen können. Was ich jetzt gemacht habe:

ich hab mal mit deficit angefangen und im excel-sheet die Variablen umbenannt in deficitjahr1950, deficitjahr1951,....

In Stata hab ich dann editor geöffnet und einfach das excel-sheet rüberkopiert (die erste Zeile als Variablenname genommen).
Das mergen mit anderen Variablen die genauso aussehen (population, income) hab ich auch schon geschafft aber ich bin jetzt zu Testzwecken mal nur beim deficit geblieben
und hab den Befehl reshape long deficit, i(states) j(years) verwendet. Danach hat die Variable genau das Aussehen das ich mir gewünscht habe.

Jetzt meine Frage: muss ich Stata jetzt noch mitteilen, dass es ein Panel ist? Weil wenn ich jetzt über das Menü Statistics->Longitudinal/panel data->Setup and Utilities->declare dataset to be panel data gehe und dabei für die Panel ID Variable 'states' und für die time Variable 'years' auswähle, dann bekomme ich die Fehlervariable varlist: 'states: string variable not allowed'

Meine zweite Frage wäre dann wie ich die abhängige Variablen am besten in das Panel einbaue,
zur Erinnerung, die sehen beispielsweise so aus:
Staat Vetomöglichkeit
ABC 1
DEF 0

lg
verzweifelteeva
 
Beiträge: 11
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stata, Excel und Panels

Beitragvon verzweifelteeva » So 20. Mai 2012, 12:53

erste Frage habe ich mittlerweile herausgefunden (brauche numerische Werte), hab das mittels encode states, gen(states1) gemacht
Frage 2 wär noch offen.

lg
verzweifelteeva
 
Beiträge: 11
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Nächste

Zurück zu Statistik allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron