Personenvergleich bezügl. einer Variable im Panel-Datensatz

Fragen zu Stata Syntax und Do-Files.

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

Beitragvon daniel » Mo 19. Nov 2012, 17:25

Zum -merge- Befehl: ja das hat sich geändert. Das ist einer der Aspekte, der die neue Syntax weniger fehleranfällig macht.

Zum Fehler: ok, dann müssen wir ein work-around in Mata schreiben. Ich werde da allerdings erst heute abend dazu kommen.
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 daniel » Mo 19. Nov 2012, 19:25

Vergiss die Idee mit dem work-around. Selbst -levelsof- bzw. die Listenidee war überflüssig.

Code: Alles auswählen
sa using
keep parid
duplicates drop parid ,force
ren parid pid
mer 1:m pid using using
replace parid = -2 if (_merge == 1)
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 » Mo 19. Nov 2012, 19:53

In dem Fall kommt die Fehlermeldung "variable pid does not uniquely identify observations in the master data", weil es ja ein Paneldatensatz ist. Aber auch wenn ich svyyear mit eingebe
Code: Alles auswählen
save using
keep parid svyyear
rename parid pid
merge 1:1 pid svyyear using using
replace parid = -2 if (_merge == 1)

kommt die Meldung "variables pid svyyear do not uniquely identify observations in the master data"
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 » Mo 19. Nov 2012, 20:03

Sorry, mein Fehler, vgl. korrigierte Syntax oben.
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 » Mo 19. Nov 2012, 20:27

Das funktioniert auch nicht. Ich verstehe, was dein Plan war, aber so wie du es vorgeschlagen hast, habe ich nicht den Fall, dass bei einer nicht vorkommenden Person die entsprechende parid auf -2 gesetzt wird, sondern stattdessen ist die nichtvorkommende Person nach dem Mergen im Datensatz (natürlich mit ausschließlich Missing-Angaben außer bei pid und parid).

Wenn also Peron 1 angibt, mit Person 3 zusammen zu sein, obwohl die nicht im Datensatz ist, ändert sich nach der Syntax nichts bei Person 1, sondern stattdessen taucht eine Person 3 auf. Und auch nur diese Person hat bei _merge den Wert 1.

pid svyyear parid _merge sex

1 1999 -2 2 1
1 2000 3 2 1
1 2011 3 2 1
2 1984 5 3 2
2 1985 -2 3 2
3 . -2 1 .
4 2001 -2 2 1

Die anderen Ausprägungen sind so belegt, dass Pesonen, die im ersten Jahr der Teilnahme keinen Partner hatten (-2) immer 2 bei _merge habe (und zwar immer, auch wenn im Laufe der Zeit ein Partner dazu kommt) und bei Personen, die im ersten Befragungsjahr einen Partner haben, steht bei _merge 3 (auch hier immer, auch wenn sie den Partner verlieren).
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 MariaS » Mo 19. Nov 2012, 21:36

ist es irgendwie möglich, Stata zu sagen, es soll parid dann mit -2 ersetzen, wenn die parid keiner der vorangegangenen/nachfolgenden pid's entspricht?
Also etwas in dieser Denkart:
Code: Alles auswählen
replace parid=-2 if pid[_N]!=parid

???
Mir ist klar, dass dieses Beispiel nicht funktioniert, aber vielleicht ist ja der Gedanke fruchtbar...?
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 » Di 20. Nov 2012, 01:30

Ich muss zugeben, ich bin etwas verwirrt. Ich werde morgen nochmal reinschauen, aber ich würde den -merge- Ansatz noch nicht allzuschnell aufgeben. Vielleicht sollte man die pid anstelle der parid behalten, die dann umbenennen und auf parid -merge-n. In etwa

Code: Alles auswählen
sa using
keep pid
duplicates drop pid
ren pid parid
mer 1:m parid using using


Wenn ich nicht irre, kannst Du diejenigen, die in _merge eine 1 haben löschen. Bei denen, die eine 2 haben, ersetzt Du die parid mit -2. Ich ag mich irren, das ist ohen realitätsnahe Beispieldaten nicht ganz einach.

Ich weiß nicht, wie ich diesen Absatz

Die anderen Ausprägungen sind so belegt, dass Pesonen, die im ersten Jahr der Teilnahme keinen Partner hatten (-2) immer 2 bei _merge habe (und zwar immer, auch wenn im Laufe der Zeit ein Partner dazu kommt) und bei Personen, die im ersten Befragungsjahr einen Partner haben, steht bei _merge 3 (auch hier immer, auch wenn sie den Partner verlieren).


deuten soll. Stimmen denn die anderen Werte in parid auch nicht? Ich habe mich (Dich offenbar nicht) schon mal gefragt, wieso Du nur die -2 ersetzen willst. Bist Du denn sicher, dass die anderen Ausprägungen stimmen?

Abgesehen davon musst Du unbeding diese Identifizierungsgeschichte mit pid und svyyear in den Griff bekommen. Ich kann auch absolut nicht nachvollziehen, wieso im master dataset diese beiden Variablen die Beobachtungen nicht eindeutig identifizieren sollen, wenn Du zuvor, beim zweimaligen -merge-n auf genau diese Variablen keine Fehlermeldung bekommst. Irgendetwas stimmt da nicht, und Du solltes rausbekommen, was das ist. Das wird sonst spätestens bei den Anlysn beißen.
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 » Di 20. Nov 2012, 12:45

Es hat geklappt!!!!!!! :D
(es hatte zwar noch ein -force- nach dem duplicate Befehl gefehlt, aber das hab sogar ich hinbekommen ;))
Jetzt haben alle eine -2 bei der parid, deren Partner nach dem Mergen nicht mehr im Datensatz sind! Dankedankedankedanke :D Sonst hat es auch keine Probleme gegeben.

Was wäre jetzt nochmal dein Vorschlag für die komparative Bildungsvariable? Geht das vielleicht auch über den merge-Befehl?
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 » Di 20. Nov 2012, 13:31

Vom Prinzip her sollte das mittels -merge- klappen -- das war mein Vorschlag, der im Querschnitt auch funktioniert. Die Panlestruktur bereitet möglicherweise einige Schwierigkeiten insbesondere, weil das Indetifikationsproblem nicht gelöst ist. Die grundlegende Idee ist einfach:

1. Behalte die pid und alle Variablen, die Dich interessieren (Bildung etc.).
2. -rename- die pid paid und alle Variablen als varname_p

Nun hast Du einen Datensatz der die Bildung (und weiter Merkmale) der Partner enthält.

3. -merge- diesen Datensatz über die parid (und vermutlich svyyear) nun an den Originaldatensatz.

Das Prinzip ist also das selbe, wie das, was gerade geklappt hat (nur haben wir keinerlei Variablen übernommen). Das Problem ist, dass die BIldung etc. nicht konstant ist und das Partner auch mal wechslen. Daher kannst Du nicht einfach nur jeden Parter einmal behalten (der -duplicates drop- Schritt) und dann mittels 1:m -merge- zuspielen. Das würde nur bei zeitkonstanten Merkmalen funktionieren. Du musst also sicherstellen, dass die Ausprägung der Merkmale zu den korrekten Beobachtungen (i.e. zum richtigen Zeitpunkt, definiert über svyyear-) zugespielt werden. Das geht nicht, wenn pid und svyyear die Beobachtungen nicht eindeutig identifizieren.

Wenn Du dieses Prinzip verstanden hast, solltest Du einfach mal ein bisschen damit rumspielen. Wie bereits erwähnt, es ist vermutlich sinnvoll für diesen Schritt alle Beobachtugnen zu entfernen, die keinen Parnetr haben.
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 » Di 20. Nov 2012, 18:48

ENDLICH!!! Endlich ist es gelungen!!!
Vielen, vielen Dank für deine Hilfe!!! Ohne dich hätte ich es nicht geschafft! Falls du an der Lösung interessiert bist:

Code: Alles auswählen
use pid svyyear alter using $path2/Datensatz_2.dta
rename alter alter_par
rename pid parid
save alter_par.dta

merge 1:m parid svyyear using $path2/Datensatz_2.dta
drop _m*
erase alter_par.dta

sort pid svyyear


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

VorherigeNächste

Zurück zu Stata Syntax

Wer ist online?

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