Personenvergleich bezügl. einer Variable im Panel-Datensatz

Fragen zu Stata Syntax und Do-Files.

Personenvergleich bezügl. einer Variable im Panel-Datensatz

Beitragvon MariaS » Sa 17. Nov 2012, 19:21

Hallo zusammen,
an sich hab ich die gleiche Frage, wie nazgul sie vor ein paar Monaten hatte (stata-syntax-f18/beobachtungen-von-anderen-personen-auf-zielperson-ubertragen-t50.html). Die einzige Ausnahme ist, dass ich mit einem Paneldatensatz arbeite und die dort vorgeschlagene Syntax bei mir irgendwie nicht funktioniert.
Ausgangspunkt ist, dass ich mit einem Panel-Datensatz im long-Format arbeite und das Partnerwahlverhalten bei Paaren untersuchen möchte. Jedes Paar ist eindeutig identifizierbar, da jede Person eine persönliche ID hat (pid) und bei der jeweiligen Person auch die Partner-ID aufgeführt ist (parid). Schlussendlich möchte ich komparative Variablen erstellen also z.B. eine Variable, die die Schulbildung der Partner (im jeweiligen Jahr) vergleicht. Ich hatte mir dazu überlegt, genau wie bei nazgul, eine Variable zu bilden, die die Bildung des Partners enthält. Die Vergleichsvariable ist ja dann fix gebildet. Aber aus irgendeinem Grund klappt daniels Vorschlag
Code: Alles auswählen
exapand 2 ,g(tmp)
bys id (tmp) : replace id = pid if (_n == _N)
bys id (tmp) : g pew = ew[2]
keep if !tmp
drop tmp

nicht. Ich habe als Grund wie gesagt im Verdacht, dass es sich um einen Panel-Datensatz handelt, weiß es aber nicht.

Ich hoffe, ich habe mich nicht zu wirr ausgedrückt und ein schlauer Kopf kann mir helfen :)

Viele Grüße
Maria
MariaS
 
Beiträge: 27
Registriert: Sa 17. Nov 2012, 17:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon daniel » So 18. Nov 2012, 01:04

Als eine umständliche (und wenig elegante) Lösung kannst Du den code (sollte er in diesem Fall funktionieren) für jedes Jahr einzeln ausführen und die resultierenden Datensätze wieder zusammenführen.

Könntest Du ein Beispiel posten, anhand dessen ich eine elegantere Lösung erstellen kann?
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: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon MariaS » So 18. Nov 2012, 12:46

Ok, ich versuche es mit dem Beispiel. Ich will bestimmte Eigenschaften von Paaren zum Zeitpunkt ihres Zusammenkommens vergleichen, also gleiche Bildung, anderes Alter etc. Dafür habe ich auch eine Variable gebildet, die 1 ist, wenn eine neue Partnerschaft eingegangen wurde (neue_bez) und auch nur wenn sie 1 ist, soll der Verlgleich stattfinden. Als Beispiel für den Vergleich nehm ich mal die Schulbildung (0=ohne Abschluss, 1=Hauptschulabschl., 2=Realschulabschl., 3=Fachhochschulreife, 4=Abitur)
Der Datensatz ist ungefähr so aufgebaut:

pid..svyyear..parid..neue_bez...bildg

1.....1998.....-2.......0............4
1.....1999......4.......1............4
1.....2000......4.......0............4
1.....2001......4.......0............4
...
4.....1999......1.......1............2
4.....2000......1.......0............4
4.....2001......1.......0............4

Schlussendlich soll bei jeder Person eine Variable stehen, die angibt, ob der Partner im Jahr des Zusammenkommens gleich, niedriger oder höher gebildet ist. Es würde mir aber schon reichen, wenn ich eine Variable hätte, die die Bildung des Partners anzeigt (bildg_p), weil ich die Vergleichsvariable wahrscheinlich ohne Schwierigkeiten bilden kann.

Ich hoffe, du hast das mit "Beispiel" gemeint und kannst mir weiter helfen :)

Viele Grüße
Maria
Zuletzt geändert von MariaS am So 18. Nov 2012, 13:31, insgesamt 1-mal geändert.
MariaS
 
Beiträge: 27
Registriert: Sa 17. Nov 2012, 17:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon daniel » So 18. Nov 2012, 13:24

Ja sowas in der Art. Ich muss nun zwar noch immer einen Datensatz erstellen, aber ich bekomme eine Idee davon. Um "optimale" Beispiele zu erstellen eigent sich der -input- Befehl. Das Ergebnis wäre ein Stata code, der den Datensatz auf meinem Rechner repliziert.

Ich hätte da noch (mindestens) eine Frage. Ist die <parid> die <pid> des jeweiligen Partners, oder folgt die einer anderen Logik? Ich frage, weil Person 4 im Jahr 1999 dann mit Person 1 und gleichzeitig mit Person 2 zusammen war.

Über den technischen Aspekt hinaus finde ich das (vermutete) Thema sehr spannend. Wäre es nicht noch interessanter zu schauen, ob das Bildungsniveau, bzw. andere Variablen homogen waren [i]bevor[\i] zwei Personen zusammengekommen sind? Ich weiß nicht, welche Daten Du hier hast, aber ich habe noch keinen Datensatz gefunden, der für eine derartige Fragestellung ausreichend Informationen und Fallzahlen bietet.
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: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon MariaS » So 18. Nov 2012, 13:40

Ich bin mir nicht ganz sicher, wie deine 1. Anmerkung gemeint ist. Wenn ich dich richtig verstehe, bräuchtest du am besten einen Teilauszug aus meinen Daten, um daran zu arbeiten. Das Problem ist, dass ich mit SOEP-Daten arbeite und da extra was unterschreiben musste, dass ich keine Daten rausgeben darf.

Bei der pid hatte ich im Beispiel einen Fehler gemacht - den hab ich aber grad korrigiert. Die parid gibt die ID des Partners an :)

Ja, das Thema ist sehr spannend, darum schreib ich ja meine Diplomarbeit darüber ;) Wie aber zum Beispiel die Bildung vor dem Zusammenkommen war, find ich schwierig, da Bildung ja etwas Veränderliches ist, sich also vor der Beziehung oder sogar im Jahr des Zusammenkommens geändert haben kann (in wirklichen Datensatz geht die Bildung bis hoch zur Promotion - ich hab's nur für das Beispiel vereinfacht). Wie gesagt, der Datensatz ist das SOEP. Da dies ein Haushaltsdatensatz ist, finden sich auch in relativ hoher Fallzahl eindeutig identifizierbare Paare.
MariaS
 
Beiträge: 27
Registriert: Sa 17. Nov 2012, 17:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon daniel » So 18. Nov 2012, 14:23

Ich dachte schon etwas in Richtung SOEP. Da solltest Du dann auch keine Teildaten rasugeben, das verstehe und unterstütze ich auch. Was ich meinte war etwas in der Art

Code: Alles auswählen
clear
inp pid svyyear parid neue_bez bildg
1 1998 -2 0 4
1 1999 4 1 4
1 2000 4 0 4
1 2001 4 0 4
4 1999 1 1 2
4 2000 1 0 4
4 2001 1 0 4
end


Wenn Du das nun in Stata in ein do-file kopierst, wird Dein Beispieldatensatz erzeugt. Soetwas erspart mir jede menge tipp und/oder copypaste Arbeit, während der Aufwand für Dich gleich, oder (da die Punkte zwischen den Werten nicht nötig sind) sogar geringer ist.

Wie aber zum Beispiel die Bildung vor dem Zusammenkommen war, find ich schwierig, da Bildung ja etwas Veränderliches ist, sich also vor der Beziehung oder sogar im Jahr des Zusammenkommens geändert haben kann

Genau das ist doch m.E. das spannende. Bilden sich bildungshomogene Paare, oder beeinflussen sich die Partner erst nachdem sie durch strukturellen Zufall zusammengekommen sind gegenseitig in ihrer Bildung(saspiration)? Dazu müsste man singles im Datensatz identifizieren, die später zusammenfinden. Ich fürchte aber selbst im SOEP ist so etwas auf höchstens 100 Fälle bechränkt.

Wie gesagt, der Datensatz ist das SOEP. Da dies ein Haushaltsdatensatz ist, finden sich auch in relativ hoher Fallzahl eindeutig identifizierbare Paare.


Ich weiß, dass es im SOEP viele Paare gibt. Die (starke) Annahme, die Du trotz der eindeutigen Identifizierbarkeit von Paaren treffen musst, ist dass die Gründung eines gemeinsamen Haushalts auch gleichzeitig den Beginn der/einer Beziehung markiert. Das ist m.E. sehr unwahrscheinlich -- aber eben nicht anders möglich. Vielleicht interessieren Dich ja auch ganz andere Fragestellungen, das soll hier auch gar nicht das Thema sein.

Ich werde mir das mal anschauen und einen Vorschlag posten.
Zuletzt geändert von daniel am So 18. Nov 2012, 14:55, insgesamt 1-mal geändert.
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: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon MariaS » So 18. Nov 2012, 14:41

Tut mir leid, ich steh grad auf dem Schlauch. Wenn ich jetzt deinen Syntax-Vorschlag eingebe, inwiefern generiert mir Stata dann ein anderes Ergebnis als dir? Sorry, wenn ich mich grad dumm anstelle, aber ich hab noch nie was mit Daten-Input zu tun gehabt, immer nur mit der Auswertung fertiger Daten... Und ich versteh grad nicht, wie ich dir mit dem Beispieldatensatz helfen kann, auch wenn ich das unbedingt will :(
MariaS
 
Beiträge: 27
Registriert: Sa 17. Nov 2012, 17:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon daniel » So 18. Nov 2012, 14:55

Ok, kein Problem. Vielleicht habe ich mich unklar ausgedrückt. Stata erzeugt genau das gleiche Ergebnis. Meine Syntax erzeugt genau Dein von Hand eingetipptets und im Forum gepostetes Beispiel. Der Vorteil ist, dass die Syntax diesen Datensatz direkt in Stata erzeugt. Ich bin nicht so gut, dass ich Dir einen Lösungsvorschlag nur auf Grundlage des Anschauens der Beispieldaten erstellen kann. Ich muss den Datensatz in Stata haben und damit spielen können. Wenn Du das Beispiel ins Forum postest, mit einem haufen Punkten etc. zwischen den einzelnen Werten, dann mag das im Forum schön aussehen, aber wie bekomme ich das in Stata? Ich will das ja nicht alles abtippen. Daher bietet es sich an, anstelle von

pid...svyear...foo
1......1999....42

besser

Code: Alles auswählen
clear
inp pid svyyear foo
1 1999 42
end


zu tippen. Mir fällt gerade auf, dass ich das -end- statement im vorherigen post vergessen habe.

Zurück zum Thema. Da Du später, laut eigener Aussage, nur diejenigen Fälle brauchst, die in einer "neuen" Beziehung stecken, kannst Du als erstes alle anderen löschen. Im Datensatz sollten nun nur Paare enthalten sein, die in einer neuen Beziehung (neue zusammengezogen) sind.

Ansetzend an meinem ersten Vorschlag im von Dir zitierten Beitrag, versuch mal folgendes

Code: Alles auswählen
keep if neue_bez
sa tmp
drop pid
ren (parid bildg)(pid bildg_p)
mer 1:1 pid svyyear using tmp
erase tmp.dta


Du solltest nun einen Datensatz haben, in dem in der neuen Variable <bildg_p> die Bildung des Partners steht.

Wenn bis hierher alles funtioniert, müssen wir noch überlegen, wie Du die "doppelten" Informationen los wirst (Das Paar 1, 4 und das Paar 4, 1 tauchen als zwei verschiedene Fälle auf, liefern aber die gleiche Infos).
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: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon MariaS » So 18. Nov 2012, 15:35

hat leider nicht geklappt...

Vielleicht sollte ich doch spezifischer werden - ich hatte alles etwas vereinfacht für das Beispiel. Ich werde gaaanz am Ende verschiedene Regressionen durchführen einmal verschiedene Modelle, bei denen es nur um individuelle Merkmale von Personen bei Eintritt in eine neue Beziehung geht und eine Reihe wo es eben die Mermale verglichen werden (Stichwort "Bildungshomogamie").

Für die ersten Modelle brauche ich die Partner nicht, für die komparativen schon. Aus diesem Grund ist die neue_bez Variable auch tatsächlich vercodet mit 0=keine neue Beziehung, 1=neue Beziehung, aber Partner ist nicht im Datensatz, 2=neue Beziehung & Partner ist im Datensatz.
Darum möchte ich auch nicht, dass alle anderen Personen aus dem Datensatz gelöscht werden - ich brauch die später nochmal. Aber die angesprochene Vergleichs-Variable soll halt nur gebildet werden, wenn neue_bez==2.

Unabhängig davon (ich hab das alles grad selber versucht anzupassen) bekomme ich die Fehlermeldung "variables pid svyyear do not uniquely identify observations in the master data" - das irritiert mich aber total, weil pid und svyyear genau das tun. Bei meinem allerersten Merging mit diesem Daten satz bin ich nämlich genauso verfahren
Code: Alles auswählen
clear
use $path2\ppfadl_neu.dta
merge pid svyyear using $path2\pgen_neu.dta $path2\pl_neu.dta


und das hat super geklappt... aber dein Vorschlag irgendwie nicht :(
MariaS
 
Beiträge: 27
Registriert: Sa 17. Nov 2012, 17:11
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Personenvergleich bezügl. einer Variable im Panel-Datens

Beitragvon daniel » So 18. Nov 2012, 15:55

Ich werde gaaanz am Ende verschiedene Regressionen durchführen einmal verschiedene Modelle, bei denen es nur um individuelle Merkmale von Personen bei Eintritt in eine neue Beziehung geht und eine Reihe wo es eben die Mermale verglichen werden (Stichwort "Bildungshomogamie").


Ich würde Dir raten, für die verschiedenen Analysen auch verschieden aufbereitete Datensätze zu verwenden. Es scheint mir als sei die Aufbereitung des "Partnerdatensatzes" dann einfacher umzusetzen, und ich sehe keinen guten Grund, alles in einem Datensatz zu bündeln. Vielleicht ist es aber auch ganz einfach den "Partnerdatensatz", ist er denn ersmal erstellt, an die Originaldaten zu spielen. Aber um den datensatz zu erstellen, solltest Du m.E. besser mal alle Fälle rauswerfen, die Du nicht für die komparativen Analysen brauchst.

Die Fehelermeldung kann eigentlich nur dann auftauchen, wenn es Personen gibt, die simulatn in zwei Haushalten gelistet werden, oder aber, und das halte ich für wahrscheinlicher, durch fehlende Werte,weil bsp. kein Partner vorhanden ist. Letzteres Problem umgehst Du, wenn Du den datensatz von vornherein auf diejenigen beschränkst, die in einer neuen Beziehung sind und auch einn Partner mi Datensatz haben. Da du, soweit ich verstehe, für diese Vergleichsanalysen ohnehin keinen der anderen Fälle benötigen wirst, halte ich dieses Vorgehen für sinnvoll (vgl. erster Kommentar).

Ansonsten schau Dir mal mit -duplicates- die Fälle an, die da nicht eindeutig indentifiziert werden können.
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

Nächste

Zurück zu Stata Syntax

Wer ist online?

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

cron