Großer Datensatz-Renditenberechnung

Fragen zu Stata Syntax und Do-Files.

Großer Datensatz-Renditenberechnung

Beitragvon Flachzange » Sa 20. Apr 2013, 16:12

Hallo, ich bin ein STATA-Anfänger und stehe bereits vor dem ersten Problem. Ich brauche die Renditen von ca. 3000 Unternehmen. Das Excelsheet sind ungefährt so aus: Year U1 U2 U3 U4 ....
01 1980
02 1980

...
12 2010

Ich möchte das Stata den Wert z.B für (U1 im Februar - Wert für U1 im Januar 1980)/Wert für U1 im Januar 1980 berechnet und das dann für alle Unternehmen durchführt und am besten als neue Variablen ausgibt.
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon daniel » Sa 20. Apr 2013, 21:24

Kannst Du einen Beipsieldatensatz erzeugen?

(add-ons-und-ado-files-f20/beispieldatensatze-erzeugen-t232.html)
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon Flachzange » So 21. Apr 2013, 10:03

Leider findet Stata das Helpfile nicht ...
ich versuche nochmal den Datensatz zu beschreiben:
in der ersten Spalte sind Monat/Jahr zu sehen danach folgen die Unternehmen, die dann auch in STATA als Variablen angezeigt werden. In den jeweiligen Zeilen befinden sich dann der Total Return Index und aus diesen muss ich die Renditen der Unternehmen berechnen:

Year U1 U2 U3
Januar 1980
Februar 1980
...
Dezember 2010
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon daniel » So 21. Apr 2013, 10:23

Ok, das ist ungünstig. In jedem ernst zu nehmenden Statistikprogramm sind die Beobachtungen als Zeilen, die Variablen als Spalten angeordnet. Du musst also als erstes Deine Datenmatrix korrigieren. Schau Dir mal -xpose- an, ich setze später mal ein Beispiel auf.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon Flachzange » So 21. Apr 2013, 10:44

Ja, das wäre meine nächste Frage gewesen, wie man am besten einen Paneldatensatz erstellt, da ich ja nicht nur die Renditen von den Unternehmen habe sondern auch die Assets, Liabilities etc.
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon daniel » So 21. Apr 2013, 12:23

Ja, das wäre meine nächste Frage gewesen, wie man am besten einen Paneldatensatz erstellt, da ich ja nicht nur die Renditen von den Unternehmen habe sondern auch die Assets, Liabilities etc.


Ich denke, dass kommt wirklich darauf an, wie genau die Daten vorliegen. Sind die daten in Excel? Sidn sie bereits in Stata? Falls ersteres, sind die alle in einem Sheet? Sind das verschiedene Sheets (eins mit den Renditen, eins mit Assets, etc.)?

Schau mal, ob Du einen Auschnitt der Daten hochladen kannst (bitte beachten, ob die Daten und/oder Ausschnitte öffentlich zugänglich sein dürfen) oder alternativ ein Beipsiel erzeugen kannst, dass in Stata replizierbar ist. Es ist extrem schwer einen code Vorschlag zu machen, wenn man nahzu keine Informationen hat.

Hier ist ein beseispielhafter Ansatz

Code: Alles auswählen
// replicate example data
clear
inp year u1 u2 u3
1980 1 2 3
1981 4 5 6
1982 7 8 9
end
l

// get data in panel format
g id = _n
reshape long u ,i(id)
drop id
ren (_j u)(u rendite)
so u
l
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon Flachzange » So 21. Apr 2013, 12:37

Die Daten sind jeweils in verschiedenen Excelsheets
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon daniel » So 21. Apr 2013, 13:25

Ich bin noch immer nicht fähig einen code zu schreiben, aber ich kann eine Skizze zum Vorgehen schreiben. Wie komplex das Unterfangen wird hängt vermutlich u.a. von folgenden Faktoren ab:

Stata Version. Wenn Du Zugang zu Stata 12 oder höher hast, sind viele Teilschritte relativ problemlos. Ich neheme bei meiner Vorgehensskizze an, dass dies der Fall ist.

Aufbau der Excelsheets. Wenn alle Excelsheets exakt gleich aufgebaut sind, i.e. es sind in jedem sheet (i) exakt die selben Unternehmen, (ii) mit exakt den selben Namen, (iii) an exakt der selben Stelle, (iv) über exakt den selben Zeitraum und zusäztzlich ausschließlich die Jahresvariable und die jeweiligen Firmenvariablen enthalten und darüber hinaus die Jahresvariable immer exakt das gleiche Format (hier: ein Buchstabe gefolgt von einem Freizeichen und einer zweistellige Zahl) hat, dann wird es relativ problemlos. Wenn das nicht der Fall ist, kann es sehr nervig werden. Ich nehme an, dass die sheets exakt gleich sind und außer der Jahres und den Unternehmensvariablen keine weitere Informationen enthalten.

Deine bisherigen Kenntnisse.

Hier die Skizze.

1. Wandele alle sheets in Stata Datensätze um. Dazu kann mein Programm -xls2dta- (. ssc inst xls2dta) hilfreich sein.

2. Beginne mit dem ersten sheet, das nun bereits als Stata Datensatz vorliegt, und bringe es in die korrekte Form. Dazu kannst Du Dich an meinem code orientieren. Ich nehme an aaontotret~d usw. sind die Namen der Unternehmen, i.e. nun Stata Variablennamen? Die benötigen vor dem -reshape- Prozess andere aber eindeutige und in jedem Datensatz exakt gleiche Namen. Das solltest Du mit -rename- hinbekommen. In etwa

Code: Alles auswählen
unab vars : * // schriebt in das local vars alle Variablennamen (per Annahme also: year aaontotret~d ...)
loc vars : subinstr loc vars "year" "" // entfernt year aus der liste
ren (`vars')(foo#) ,renum // in meinem oberen code entspricht u foo in diesem code


daran hängst Du nun die oben angeführte Sequenz (angepasst) an.

3. Speichern des Datensatzes in dieser Form.

4. Wiederhole Schritt 2 für alle weiteren sheets (nun bereits Stata Datensätze).

5. Nun musst Du alle Datensätze zusammenfügen (-help merge-). Die Variable year und foo sollten in jedem Datensatz Deine Beobachtungen eindeutig identifizieren.

6. Speichern des gesamt Datensatzes.

Nun musst Du noch überlegen, wie man aus der (unglücklichen) Angabe eines Buchstabens und einer zweistelligen Zahl einen für Stata verwertbare Zeitangabe bastelt. Aber das ist, bist Du erst soweit, vermutlich eher einfach.

Alternativ: Wenn Du Dich mit Excel auskennst, versuch die Form der sheets dort zu ändern.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon Flachzange » Di 23. Apr 2013, 18:02

Danke! Der Datensatz sieht jetzt schon besser aus.
Jetzt kommt gleich die nächste Frage: Wie benenne ich alle Datumsvariablen am besten um? In Stata stehen sie im wide format mit v2 bis v376 drinnen und ich habe schon eine versucht eine Schleife zu basteln, die mir diese Variablen in:
v2=Januar 1980
v3= Februar 1980
...
v376=Dezember 2010

umbennt. Hat leider nicht geklappt
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Großer Datensatz-Renditenberechnung

Beitragvon daniel » Di 23. Apr 2013, 21:48

Leider ist Dein post (wieder) eher uniformativ. Was heißt

Der Datensatz sieht jetzt schon besser aus.


Wie sieht er denn aus? Bei welchem meiner vorgschlagenen Schritte stehst Du (falls Du dem Vorschlag folgst)? Wie sieht Dein code aus, den Du bis zu dieser Stelle verwendet hast?

Wie benenne ich alle Datumsvariablen am besten um?

Sollte das nicht der Inhalt einer Variable sein (bzw. werden im long format)? Wieso sollten die Variablennamen so lauten? An dieser Stelle bin ich etwas raus gerade. Ansonsten schau Dir -help rename- an.

[...] umbennt. Hat leider nicht geklappt


Schau Dir mal -help varname- an, um zu sehen, was gültige Variablennamen sind. Leerzeichen dürfen da schon mal keine drin sein.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Nächste

Zurück zu Stata Syntax

Wer ist online?

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