Problem bei der Zuweisung und Auswertung

Fragen zu Stata Syntax und Do-Files.

Problem bei der Zuweisung und Auswertung

Beitragvon Tmolppr » Mo 20. Aug 2012, 22:41

Hallo,

und zwar habe ich Daten in der folgenden Form vorliegen. Die Personen sind anhand einer Personennummer kodiert. Die Datumsangaben geben den Begin und das Ende der Erwerbshistorie (in diesem Fall Arbeitslosigkeit) für die jeweilige Person wieder und die Arbeitslosigkeit ist als Dummy-Variable kodiert.

Personennr. Begin Datum End Datum Arbeitslosigkeit
5 01/01/2010 30/04/2010 1
5 01/05/2010 30/11/2010 0
5 01/12/2010 15/06/2011 0
5 16/06/2011 31/12/2011 1
8 01/01/2010 28/08/2010 0
8 29/08/2010 31/12/2011 0
10 01/01/2010 31/12/2011 1
11 01/01/2010 08/09/2010 0
11 09/09/2010 31/03/2011 0
11 01/04/2011 31/12/2011 0
12 01/01/2010 12/04/2010 0
12 13/04/2010 31/12/2011 1


Ich möchte nun eine Syntax in STATA schreiben, bei der alle Einträge einer Person erhalten bleiben die mindestens einmal arbeitslos waren und dies noch für einen definierten Zeitraum.

Das Ergebnis für folgende Auswertung sollte wie folgt aussehen. Erwerbshistorie aller Personen die im Zeitraum vom 01/01/2010 bis 01/03/2010 arbeitslos waren:

Personennr. Begin Datum End Datum Arbeitslosigkeit
5 01/01/2010 30/04/2010 1
5 01/05/2010 30/11/2010 0
5 01/12/2010 15/06/2011 0
5 16/06/2011 31/12/2011 1
10 01/01/2010 31/12/2011 1

Ich habe sowohl mit der egen Funktion als auch Schleifen experimentiert, habe aber noch keine überzeugende Methode gefunden. Für Ratschläge wäre ich sehr dankbar!
Tmolppr
 
Beiträge: 2
Registriert: Mo 20. Aug 2012, 22:37
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Problem bei der Zuweisung und Auswertung

Beitragvon Tmolppr » Di 21. Aug 2012, 10:06

Ich habe schonmal einen ersten Ansatz:

foreach n of varlist personennr. {
generate byte alo_gew = 1 if `n' == `n-1' & *
}
keep if alo_gew == 1

*An dieser Stelle soll zusätzlich in der Schleife geprüft werden ob die Person zuvor schon arbeitlos war. z.B. `n-1' == Arbeitslosigkeit == 1. Wie kann man eine solche Bedingung formulieren?
Tmolppr
 
Beiträge: 2
Registriert: Mo 20. Aug 2012, 22:37
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Problem bei der Zuweisung und Auswertung

Beitragvon daniel » Di 21. Aug 2012, 12:26

Zunächst ein kurzer Kommentar zum loop. Dein loop läuft genau einmal durch, weil die Variablenliste <personennummer> nur eine einzige variable enthält.

Code: Alles auswählen
foreach n of varlist personennummer {
    generate byte alo_gew = 1 if `n' == `n'-1
}


ist äquivalent zu

Code: Alles auswählen
generate byte alo_gew = 1 if personennummer == personenenummer-1


Du wolltest möglicher Weise über die einzelnen Ausprägungen von <Personenummer> loopen. Dazu solltest Du Dir -levelsof- anschauen. Das ist hier aber nicht zielführend, weil ich glaube, dass Du hier eher etwas in der Richtung

Code: Alles auswählen
bys personenummer : generate byte alo_gew = 1 if <Arbeitslosigkeit>[_n] == <Arbeitslosikeit>[_n -1]


suchst.

Ich würde alternativ etwas in dieser Art vorschlagen:

Code: Alles auswählen
// keep all observations for specified period
keep if (<Begin Datum> >= td(01jan2010)) & (<End Datum> <= td(01mar2010))

// now keep all persons who were unemployed at least once
bys <Personennummer> : egen checksum = total(<Arbeitslos>)
keep if checksum
drop checksum


Dabei ist die exakte Spezifikation der -if- Bedingung im ersten -keep- Befehl davon abhängig, wie genau Deine Datumsvariablen gespeichert sind.

Inhaltlich/statistisch weiß ich nicht, wie sinnvoll es ist, Personen zu behalten, für die kein Wechsel im Erwerbsstatus beobachtet wurde.
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


Zurück zu Stata Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast