Generierung Dummy in Abh. von Häufigkeit des Auftretens

Fragen zu Stata Syntax und Do-Files.

Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon texmex » So 10. Mär 2013, 12:50

Hallo Leute,

ich bin absoluter Stata-Neuling und möchte meinen vorhandenen Datensatz um eine Dummy Variable (5obs) erweitern.
Sachverhalt: Jede Beobachtung meines Datensatzes stellt einen Report für ein bestimmtes Unternehmen dar. Ein Report soll allerdings nur dann in die späteren Berechnungen eingehen, wenn zu dem jeweiligen Unternehmen (Variable company_id) mind. 5 Reports pro Jahr (Variable Year) vorliegen. Die Ausprägung der Dummy Variable "5obs" soll dementsprechend 1 sein, wenn die Bedingung erfüllt ist und 0, wenn nicht.

Kann mir jmd einen Ansatzpunkt geben, wie ich dieses Problem lösen kann?

Danke für eure Mithilfe!
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon daniel » So 10. Mär 2013, 13:17

Wenn die Daten im langen Format (i.e. ein Unternehmen, dass im Jahr 2000 drei mal beobachtet wurde, hat drei Zeilen, in denen jeweils die Variablen company_id und Year gleich sind) vorliegen, dann

Code: Alles auswählen
bys company_id Year : g byte _5obs = (_N >= 5)


Beachte auch den Unterstrich bei _5obs. Stata Variablennamen dürfen ausschließlich mit den Buchstaben a-z (A-Z) oder dem Unterstrich beginnen.
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: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon texmex » So 10. Mär 2013, 13:41

Vielen Dank, hat wunderbar geklappt :D eigentlich so einfach und ich komme nicht drauf...
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon texmex » Mi 13. Mär 2013, 11:27

Hallo Daniel,

ich habe jetzt nochmal eine Frage zu der Logik des bysort prefixes.

Ich möchte nun eine Dummy Variable generieren, bei der pro Firma (company_id) pro Jahr (Year) mind. ein Bericht von einem Experten (Expert (Dummy), 1 = Experte, sonst 0) stammen soll, damit die Gutachten des Jahres in den späteren Regressionen berücksichtigt werden.

Ich wollte nun die gleiche Logik wie im vorherigen Fall dieses Threads anwenden:

bysort company_id Year (Expert): generate byte repexp = (_N >= 1)

Als Ergebnis wird aber immer eine 1 bei repexp ausgegeben, obwohl die oben beschriebenen Voraussetzungen gar nicht erfüllt sind.

Anscheinend wird der Bezug zum Jahr gar nicht mehr hergestellt?! Muss ich ggf den egen Befehl benutzen?
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon daniel » Mi 13. Mär 2013, 12:07

Ok. Das Ergebnis ist klar, weil die Bedingung immer erfüllt ist. EIn (_N == 0) würde bedeuten, dass diese Zeile im Datensatz nicht auftaucht. Stata kann nun aber nur die Daten bearbeiten, die vorhanden sind. Auf den Punkt gebracht, die (Gegen)Bedingung, i.e. _N == 0, ist niemals erfüllt, sobald ein Datensatz (i.e. eine Zeile) geladen ist.

Ich würde das so lösen

Code: Alles auswählen
bys company_id Year : g byte repexp = (sum(Expert) > 0)
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: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon texmex » Mi 13. Mär 2013, 19:40

Vielen Dank für deine Antwort

Leider bekomme ich als Ergebnis immer dann eine 1 als Ergebnis, wenn der entsprechende Bericht von einem Experten stammt. Allerdings sollte die Dummy Variable immer 1 sein, wenn in dem jew. Jahr ein Bericht von einem Experten vorlag. D.h. auch die Berichte von Personen, die keine Experten sind, sollen für das betreffende Jahr beim Dummy repexp eine 1 ausweisen, wenn in dem entsprechenden Jahr auch nur ein Experte einen Bericht verfasst hat.

Es wird also offensichtlich nicht über alle Beobachtungen des entsprechenden Jahres geprüft sondern allein in der entsprechenden Zeile des Berichts...

Ist dies überhaupt mit dem "generate" Befehl zu lösen?
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon daniel » Mi 13. Mär 2013, 21:49

Setzt mal Year in Klammern, also

Code: Alles auswählen
bys company_id (Year) : g byte repex = (sum(Expert > 0))
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: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon texmex » Do 14. Mär 2013, 20:58

Danke für deine Geduld. Leider funktioniert der Befehl auch nicht. Es ergeben sich 2 Probleme.

1. Wenn ich im ersten Jahr ('99) eine Exypertenmeinung hatte, in darauffolgenden Jahren aber nicht , steht auch für alle Analysen in den darauffolgenden Jahren mind. eine 1 oder eben die höhere Summe, falls die Bedingung pro Unternehmen in mehr als einem Jahr erfüllt wird. -> mein Ziel ist es, dass die Variable wieder "auf 0 springt" wenn ein neues Jahr beginnt.

2. Der Zähler springt erst auf 1, wenn der erste Report von einem Experten auftaucht. Wenn der in einem Jahr beispielsweise erst die 10. Beobachtung ist, wird bei den vorherigen Fällen der Zähler nicht erhöht. DIe Variable soll mir aber für alle Reports (auch von Nicht-Experten) des Jahres eine 1 ausgeben, wenn mind. ein Report von einem Experten stammt.

-> Die Summenfunktion passt also hier leider nicht. Ich habe mal beim egen Befehl geschaut. Diesen kann man aber nicht mit by kombinieren. Geht es vielleicht auf einem anderen Weg ohne bysort?
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon daniel » Do 14. Mär 2013, 23:51

Mein Fehler -- auch dieses Ergebnis ist genau das, was man erwarten sollte. Es ist manchmal etwas verwirrend, wenn man die Daten nicht vorliegen hat.

Hier mein letzter "shot in the dark", basierend auf Deinem ursprünglichen Ansatz.

Code: Alles auswählen
bysort company_id Year (Expert): generate byte repexp = (Expert[_N] == 1)


Wenn das nicht hinhaut, dann brauche ich glaube ich mal einen Beispieldatensatz.
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: Generierung Dummy in Abh. von Häufigkeit des Auftretens

Beitragvon texmex » Sa 16. Mär 2013, 11:31

der letzte Schuss hat anscheinend gesessen. Ich habe mir einen Teil des Datensatzes angeschaut und es sieht gut aus. Ich hatte den Ansatz auch schon zu Beginn ausprobiert, allerdings das doppelte Gleichheitszeichen vergessen...

Besten Dank!
texmex
 
Beiträge: 14
Registriert: Fr 8. Mär 2013, 10:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Stata Syntax

Wer ist online?

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

cron