Problem bei Variablenbildung

Fragen zu Stata Syntax und Do-Files.

Problem bei Variablenbildung

Beitragvon Milui » Mi 4. Jan 2012, 17:55

Hallo

Da mir hier bereits einmal so nett geholfen wurde, wollte ich nochmal um fachlichen Rat bitten.

Ich möchte für ein Projekt die Veränderung in der individuellen Gesundheit beobachten.
Die Gesundheit wird über mehrere Items abgefragt (leider nur im Zweijahresrhytmus), welche anschließend über eine explorative Faktorenanalyse zu zwei Skalen (mentale und körperliche Gesundheit) zusammengefasst werden. Diese Skalen haben einen Range von 0-100 und sind auf einen Mittelwert von 50 sowie eine Standardabweichung von 10 normiert.

Jede Person in meinem Datensatz hat also (für jedes zweite Jahr) einen individuellen Wert für die körperliche (health) und mentale (mental) Gesundheit.
Sagen wir ich möchte die Veränderung in der körperlichen Gesundheit in den Jahren 2000 und 2006 untersuchen, so bilde ich erst zwei Variablen für die Werte der körperlichen Gesundheit in den betreffenden Jahren.

Also so etwas:
health ==> körperliche Gesundheit s.o. (heißt in jedem Jahr gleich, Daten derzeit im langen Format)
gen health00=health if year==2000
gen health06=health if year==2006

Anschließend müsste man nur noch die Differenz der beiden Variablen bilden (gen diffenrence=health06-health00 oder so). Das funktioniert allerdings nicht. Stata generiert nur fehlende Werte. Hat irgendjemand eine Idee, warum so eine einfache Rechenoperation nicht funktioniert? Vielleicht zu einfach?
Kann es was mit dem storage type/format der health-Variablen zu tun haben (double %10.0g)?

Über eine Antwort würde ich mich sehr freuen (und ja, ich weiß, dass das whs. eine sehr primitive Frage war :oops: ).
Vielen Dank im Voraus.
Milui
 
Beiträge: 10
Registriert: Mo 12. Dez 2011, 20:13
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Problem bei Variablenbildung

Beitragvon daniel » Mi 4. Jan 2012, 18:42

Anschließend müsste man nur noch die Differenz der beiden Variablen bilden (gen diffenrence=health06-health00 oder so). Das funktioniert allerdings nicht. Stata generiert nur fehlende Werte. Hat irgendjemand eine Idee, warum so eine einfache Rechenoperation nicht funktioniert?

Eine Vermutung habe ich zumindest schon mal.

Kann es was mit dem storage type/format der health-Variablen zu tun haben (double %10.0g)?

Nein auf keinen Fall.

Jede Person in meinem Datensatz hat also (für jedes zweite Jahr) einen individuellen Wert für die körperliche (health) und mentale (mental) Gesundheit. [...]


Liegen die Daten im long-format vor? Ich gehe davon aus, da Du schriebts die Variable "health" heißt in beiden Jahren gleich, was im wide-format nicht möglich ist. Eine einfache Rechenoperation (+, -, etc.), aber auch Korrelationen oder ähnliches werden über Spalten berechnet. Deine zwei Variabeln "health00" und "health06" sind zwar zwei Spalten, aber die haben, wenn ich mir das richtig vorstelle leider niemals zwei gültige Werte pro Zeile. Das sieht vermutlich etwa so aus:

Code: Alles auswählen
Id Jahr health health00 health06
1    2000    76     76     .
1    2006    72      .     72
2    2000    89     89     .
2    2006    87      .     87
[...]


Wenn Du nun Zeilenweise die Differenz zwischen den beiden neuen Variablen berechnest kommst Du immer auf missing (.).

Ich weiß nicht, ob es nicht schon beim Ansatz hakt. Wenn Du es so machen willst wie Du es hier beschreibst, mach dich mit -reshape- vertraut.

Aus den wenigen Informationen würde ich hier eher versuchen ein Panelmodel zu basteln. Wenn Du noch nie etwas von fixed-effects, random-effects oder multilevel-Modellen gehört hast, dann wird das sehr auswändig. Falls Du mit den Begriffen schon was anfangen kannst und glaubst, dass dieser Ansatz vielleicht besser passt, dann schau Dir mal folgende help-files (und zugehörige pdf-manual Einträge) an

h xtset
h xtreg
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: Problem bei Variablenbildung

Beitragvon Milui » Do 5. Jan 2012, 15:40

@daniel: Danke für die schnelle Antwort!

Ich versuche mal zu beschreiben, was ich untersuchen möchte (als Hintergrundinfo).
Mich interessiert wie sich die Gesundheit der Personen durch das Erleben verschiedener Ereignisse (sagen wir bspw. Heirat) verändert. Insbesondere soll der Effekt sozialer Integration auf diesen Zusammenhang geklärt werden (Direkteffekt + Puffereffekt).
Die Informationen über die Gesundheit liegen seit 2002 im Zweijahresrhytmus vor, aber die Informationen über soziale Integration nur in 2001. Die Ereignisse werden jedes Jahr erhoben. Die Daten liegen momentan im long-format vor.

Ein Fixed-Effects Modell scheidet meiner Meinung nach aus, weil mich 1) zeitkonstante Merkmale interessieren (die soziale Integration, Geschlecht) und diese im FE-Modell zwar berücksichtigt, aber nicht geschätzt werden können und 2) weil die zentrale AV die Veränderung der Gesundheit zwischen zwei Zeitpunkten ist. Wenn ich die Gesundheit in 2001 vor dem Ereignis betrachte und dann 2006 nach dem Ereignis, dann ist das ein Vergleich zwischen zwei Perioden und für so etwas müsste eine pooled Regression (mit robusten Standardfehlern bzw. vce(cluster) Option in Stata) ausreichen,oder?

Ich könnte vielleicht ein Random-Effects-Modell rechnen, um die zeitkonstanten Merkmale zu schätzen. Diese Schätzer sind bei unbeobachteter Heterogenität verzerrt. Ich habe zwar eine Variable, die jeweils eine Treatmentgruppe (Ereignis liegt in min. einem Jahr vor) und eine Kontrollgruppe (Ereignis liegt nie vor) identifiziert und diese Gruppen wurden so als Stichprobe gezogen, dass sie sich in den zentralen Hintegrundvariablen nicht unterscheiden, aber es wird trotzdem unbeobachtete Heterognität vorliegen...

Langer Rede kurzer Sinn: ich denke nicht, das mit den Daten ein Fixed-Effect-Modell gerechnet werden kann (s.o.). Wie es mit Random-Effect oder einem Mehrebenenmodell aussieht, weiß ich nicht, ich bin für Vorschläge offen. Vielleicht kann auch jemand nochmal erläutern, wie die konkreten Anforderungen an die Daten für diese Modelle sind?
Aber zurück zur Frage: gibt es denn keinen einfachen Weg, die Veränderung in der Gesundheit zu modellieren?

Bitte entschuldige den Roman.
Milui
 
Beiträge: 10
Registriert: Mo 12. Dez 2011, 20:13
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Problem bei Variablenbildung

Beitragvon daniel » Do 5. Jan 2012, 18:56

Milui hat geschrieben:Ein Fixed-Effects Modell scheidet meiner Meinung nach aus, weil mich 1) zeitkonstante Merkmale interessieren (die soziale Integration, Geschlecht) und diese im FE-Modell zwar berücksichtigt, aber nicht geschätzt werden können und 2) weil die zentrale AV die Veränderung der Gesundheit zwischen zwei Zeitpunkten ist.

1) kann ich (teilweise) nachvollziehen. Man könnte einwenden, dass zeitkonstante Faktoren keinen kausalen Effekt (im Sinne des kontrafaktischen Modells) haben können, aber das ist eine andere Diskussion. Schwerwiegender ist das Problem unbeobachteter Heterogenität, das Du selbst ansprichst. Bei 2) verstehe ich gar nicht was gegen ein FE Modell spricht, aber das ist auch nebensächlich.

Wenn ich die Gesundheit in 2001 vor dem Ereignis betrachte und dann 2006 nach dem Ereignis, dann ist das ein Vergleich zwischen zwei Perioden und für so etwas müsste eine pooled Regression (mit robusten Standardfehlern bzw. vce(cluster) Option in Stata) ausreichen,oder?

Ja, wenn Du davon ausgehst, dass es keine unbeobachtete Heterogenität gibt, oder Du diese vollständig modellieren kannst.

Ich könnte vielleicht ein Random-Effects-Modell rechnen, um die zeitkonstanten Merkmale zu schätzen. Diese Schätzer sind bei unbeobachteter Heterogenität verzerrt.

Genau wie im pooled Model (s.o.). Der Vorteil des RE gegenüber dem pooled Model ist Effizienz in ersterem (bei korrekter Modelspezifikation!).

[...] aber es wird trotzdem unbeobachtete Heterognität vorliegen...

Wenn das der Fall ist, dann kannst Du weder RE noch pooled konsistent schätzen (s.o.). FE (oder FD) Modelle sind die einzige Möglichkeit mit (zeitkonstanter!) unbeobahteter Heterogenität umzugehen.

Aber zurück zur Frage: gibt es denn keinen einfachen Weg, die Veränderung in der Gesundheit zu modellieren?


M.E. gibt es keine einfache Möglichkeit. Das mag an meinem begrenzten Verständnis liegen, aber ich bilde mir ein, dass dies nicht der Fall ist.

Eine Möglichkeit ist die Spezifikation eines Modells mit der Gesundeheit 2006 als outcome und der Gesundheit 2000 als zusätzlichem Prädikator. Die intuitive Idee dahinter ist, dass alles was die Gesundheit 2000 beeinflusst bereits in dem Geschätzen Koeffizienten "abgefangen" ist und die Koeffizienten für die übrigen Prädikatoren dann den Effekt dieser Prädikatoren auf die Entwicklung der Gesundheit abbilden. Das geht in Richtung growth curve Modelle. Ich bin aber alles andere als sicher, dass das eine gute Idee ist. Ich skizziere kurz mein Problem mit diesen Modellen (siehe auch Halaby 2004)

Nimm an Du spezifizierst



mit Gesundheit 2006, Gesundheit 2000, zeitkonstante Prädikatoren. und sind zu schätzende Parameter, die dann konsistent geschätzt werden, wenn .
Teilen wir in zeitkonstante unbeobachtete Heterogenität und (unbeobachtete) Heterogenität, die über Zeit variiert und schrieben wir das Modell als



Hier wird deutlich, dass unsere Annhame schon durch die Modelformulierung verletzt ist. Da zeitkonstant ist und beeinflusst, beeinflusst es auch .

Ähnliche Probleme kann ich mir vorstellen, wenn Du einfach eine Differenz der beiden Gesundheitswerte berechnest und diese dann als outcome in einem Modell verwendest. Beide Modell findest in häufig in der Literatur, das ändert aber nichts an den Problemen, die offensichtlich selten bedacht werden.

Mich interessiert wie sich die Gesundheit der Personen durch das Erleben verschiedener Ereignisse (sagen wir bspw. Heirat) verändert. Insbesondere soll der Effekt sozialer Integration auf diesen Zusammenhang geklärt werden (Direkteffekt + Puffereffekt).

Das solltest Du mal noch genauer ausführen. Ich habe keine Ahnung was ein "Puffereffekt" ist, aber die Formulieriung klingt nach einer Interaktion (i.e. einer multiplikativen Verknüpfung) zwischen Heirat und sozialer Intergration auf Gesundheit. Du kannst in FE Modellen zwar keine zeitkonstanten Effekte schätzen, sehr wohl aber Interaktionen von zeitinvariaten mit zeitveränderlichen Faktoren.

Mir scheint hier geht es tatsächlich weniger um Stata syntax, daher würde ich ersthaft überlegen, diese Diskussion im Statisitkforum fortzusetzen. Mir scheint da sind mehr Leute aktiv als hier, was die Chance auf eine produktive Diskussion steigert.


Halaby, Charles N. (2004). Panelmodels in Sociological Research: Theory into Practice. Annu. Rev. Sociol. 30:507–44.
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: Problem bei Variablenbildung

Beitragvon Milui » Sa 7. Jan 2012, 12:05

@daniel: nochmals danke für deine Ausführungen.

Das "Problem" mit der Syntax war dann doch einfacher zu lösen: ich habe in einem separaten Datensatz nur die ID der Personen, das Jahr und die beiden Gesundheitsvariablen (health00 und health06) gespeichert, diesen Datensatz vom langen ins breite Format überführt, die überflüssigen Variablen gelöscht und dann die Differenz in der Gesundheit gebildet. Anschließend habe ich nur die ID und die neue Gesundheitsvariable (Differenz in der Gesundheit) im Datensatz behalten und diesen über die ID mit dem alten Datensatz gemergt.

Aber welche Modellvariante nun Sinn macht, bleibt ein Problem. Mit Puffereffekt meinte ich tatsächlich Interaktionseffekte. Also bspw. das eine gute soziale Integration den Effekt negativer Ereignisse abschwächt und man diesen Zusammenhang als Interaktionsterm in das Modell aufnimmt.

Ich werde deinem Rat folgen und im Statistikforum nachfragen, wie andere Leute das Modell statistisch umsetzen würden.
Milui
 
Beiträge: 10
Registriert: Mo 12. Dez 2011, 20:13
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 0 Gäste

cron