Variable für Gesundheit des Partners

Fragen zu Stata Syntax und Do-Files.

Variable für Gesundheit des Partners

Beitragvon chasey » Mi 21. Nov 2012, 14:51

Hallo zusammen,

ich bin noch Stata-Neuling und habe ein Problem.
Ich habe einen Panel-Datensatz, den ich bereits mit dem reshape-Befehl ins längliche Format umgewandelt habe.

Es sollen nur die Männer betrachtet werden.
Für jeden Mann benötige ich nun eine Variable für die Gesundheit des Partners (falls vorhanden). Aber irgendwie bekomme ich das nicht hin.

Bisheriger Ansatz:
sort persnr year
by persnr: gen ssah=sah if dpartz==1
replace
...
drop if sex==0

Ich wollte jedem Individuum seinen eigenen sah als ssah zuweisen, dann den ssah des Mannes durch den seiner Frau ersetzen und anschließend die Frauen rauswerfen.
Schaffs aber irgendwie nicht.

Wichtige Variablen für das Problem:
year: Erhebungsjahr (1992 bis 2003)
sex: Geschlecht [0, 1]
persnr: ID für Individuum
hhnr: ID für Haushalt
partnr: ID für Partner
dpartz: Indikator für Partner im Haushalt [0, 1]
sah: Gesundheitszustand
--> Benötigt: ssah: Gesundheitszustand des Partners [1, 2, 3, 4, 5]

Wäre super, falls mir da wer helfen kann!
chasey
 
Beiträge: 6
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable für Gesundheit des Partners

Beitragvon daniel » Mi 21. Nov 2012, 14:59

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: Variable für Gesundheit des Partners

Beitragvon chasey » Mi 21. Nov 2012, 15:03

Oh, danke. Dann wühl ich mich da mal durch.
chasey
 
Beiträge: 6
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable für Gesundheit des Partners

Beitragvon daniel » Mi 21. Nov 2012, 15:30

Aus pragmatischen Gründen lies von hinten nach vorn.
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: Variable für Gesundheit des Partners

Beitragvon chasey » Mi 21. Nov 2012, 16:37

Hm. Ich werde irgendwie nicht schlau raus - obwohl ich auch Daten des SOEP verwende. MarieS hatte dann doch etwas mehr Stata-Kenntnisse als ich.
Fürchte bei mir wird es dann eh noch etwas komplizierter, weil ich ja mehrere Variablen für "X" des Partners benötige.
Zudem scheint es, als sei der Partner gar nicht in allen Fällen im Datensatz enthalten. Und es kommt vor, dass ein Individuum ggf. in Jahr A einen Partner hat und in Jahr B einen anderen oder gar keinen Partner.
Aber ich schau mal, ob ich es vielleicht mit der Methode für Nicht-Panel-Datensätze hinbekommen und es dann uneleganter pro Jahr wiederhole.
chasey
 
Beiträge: 6
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable für Gesundheit des Partners

Beitragvon chasey » Fr 23. Nov 2012, 16:15

So. Nachdem meine Blockade jetzt hoffentlich verschwunden ist, habe ich das Ganze nochmal versucht.
Wenn den den Partner-Datensatz jedoch am Ende wieder mit dem Hauptdatensatz mergen will, kommt:
variables partnr year do not uniquely identify observations in the master data.

Ich habe jetzt einen Datensatz "partner" erstellt mit der Personen-ID, Partner-ID und den interessierenden Vergleichsvariablen.
Alle Individuen ohne Partner habe ich rausgeworfen.

Da ich ebenfalls nur die Partner haben möchte, die im Datensatz sind, habe ich folgenden Code übernommen:
Code: Alles auswählen
save using
keep persnr
duplicates drop persnr, force
ren persnr partnr
merge 1:m partnr using using


Anschließend die Variablen wie von dir beschrieben umbenannt:
Code: Alles auswählen
drop partnr
ren health health_p
ren smoke smoke_p
ren persnr partnr
save var_partner.dta


Jetzt wollte ich das Ganze mit dem Hauptdatensatz verbinden, die Frauen rauswerfen und dann hoffentlich nur noch die Männer mit den Variablen für die Frau (falls vorhanden) haben.

Im Hauptdatensatz habe ich eingegeben:
Code: Alles auswählen
merge 1:m partnr year using var_partner


Und dann kommt die Fehlermeldung.
Die erscheint ja scheinbar, wenn auf den Variablen zur Identifikation fehlende Werte sind.
Aber auch wenn ich
Code: Alles auswählen
drop if (partnr==. | year==.)

vor
Code: Alles auswählen
save var_partner.dta

einbaue, erscheint die Meldung.

Kannst du mir da vielleicht weiterhelfen?

Edit: Mit merge m:1 geht es komischerweise. Ist aber wohl falsch, denn die Werte passen vorne und hinten nicht zusammen... Sprich auch wenn beide Individuen im Datensatz sind, zeigt die Partnervariable in vielen Fällen nicht den Wert für den Partner an, sondern ein missing. :/
chasey
 
Beiträge: 6
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable für Gesundheit des Partners

Beitragvon daniel » Sa 24. Nov 2012, 13:45

Zwei Punkte, beginnend mit basalen Dingen.

1. Lies die help files, und vollzieh unbedingt genau nach was die codes machen. Bei Unklarheiten (nach intensiver Lektüre der help files), frag nach.

Die Spezifikation 1:m bedeutet, dass ein Fall im master (der Datensdatz, der gerade geladen ist) mehreren Fällen im using (der Datensatz, der angespielt wird) entspricht. Da Du mit -duplicates drop- aber im using Datensatz alle Beobachtungen einer <persnr> auf eine reduzierst, kann das natürlich nicht hinkommen.

2. -duplicates drop- hat nicht umsonst eine -force- Funkion, was in Stata bedeutet: Denk genau darüber nach, was Du hier wieso tun willst. Da Du hier für jede <persnr> mehrere Zeitpunkte, und zeitveränderliche Variablen hast, ist der Ansatz Duplikate in Bezug auf <persnr> zu entfernen. Besser geeignet scheint mir, die Duplikate in Bezug auf <persnr> und <jahr> auf eine Beobachtung zu reduzieren, wobei diese Bedingung ohnehin gegeben sein sollte.

Möglich wäre auch im ersten Schritt nur die <persnr> zu behalten und in <partnerid> umzubenennen. Dann alle Personen, ohne Partner aus dem Datensatz zu entfernen, um anschließend die Informationen zuzuspielen.

Ich habe leider nicht die zeitlichen Kpazitäten erneut eine mehrseitige Diskussion zu starten, um die allgemeinen Ideen auf Deinen speziellen Datensatz anzupassen. Mein Ratschlag ist daher, versuch die Konzepte zu verstehen, die ich vorgeschlagen habe, und "spiel" einfach mal eine bisschen damit.
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 4 Gäste