Variable generieren - wie?

Fragen zu Stata Syntax und Do-Files.

Variable generieren - wie?

Beitragvon Kitty » Di 5. Mär 2013, 20:20

hi,

ich habe 10 verschiedene variablen mit jeweils 17 ausprägungen, in der der status eines haushaltsmitgliedes abgefragt wird. also var1 ausprägungen: 1. respondent 2. partner 3.biologisches kind mit aktuellem partner 4. biologisches kind mit früherem partner, etc. und dann noch fehlende werte (95, 99, 1101) und das bei jeder weiteren der 10 variablen.
jetzt möchte ich eine neue variable, in der ich einfach nur feststelle, ob ein kind im jeweiligen haushalt lebt oder nicht, also egal um welche "art von kind" es sich handelt.
mein versuch, der nicht geklappt hat, sieht so aus:
gen kidshh = 1 if (ahg3_1 >= 2) & (ahg3_1 <= 6) & (ahg3_1 <.) | (ahg3_2 >= 2) & (ahg3_2 <= 6) (ahg3_2 <.) | (ahg3_3 >= 2) & (ahg3_3 <= 6) (ahg3_3 <.) | ///
(ahg3_4 >= 2) & (ahg4_1 <= 6) (ahg3_4 <.) | (ahg3_5 >= 2) & (ahg3_5 <= 6) (ahg3_5 <.) | (ahg3_6 >= 2) & (ahg6_1 <= 6) (ahg6_1 <.) | ///
(ahg7_1 >= 2) & (ahg3_7 <= 6) (ahg3_7 <.) | (ahg3_8 >= 2) & (ahg3_8 <= 6) (ahg3_8 <.) | (ahg3_9 >= 2) & (ahg3_9 <= 6) (ahg3_9 <.) | ///
(ahg3_10 >= 2) & (ahg3_10 <= 6) (ahg3_10 <.)
abgesehen davon, dass es sicher einfacher und kürzer gehen muss, hab ich keine ahnung, wie ich das bewerkstelligen soll.
was mich noch interessiert hätte ist, wie berechne ich wie viele kinder im haushahlt leben? auch basierend auf diesen variablen.

hoffe sehr, dass mir jemand helfen kann,
glg, claudia
Kitty
 
Beiträge: 17
Registriert: Fr 29. Jun 2012, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable generieren - wie?

Beitragvon daniel » Di 5. Mär 2013, 22:17

Der Grund Deines Scheiterns liegt vermutlich in d.er falschen Klammersetzung. Stata wertet & vor | aus.

abgesehen davon sind einige Bedingungen redundant. Wenn eine Variable >= 2 aber <= 6 ist, kann sie unmöglich > . sein.

Ich würde grob entweder mal bei -egen- Funktionen nachschauen, oder eine -inrange()-Kombination versuchen. Detaillierte Vorschläge in etwa ein bis zwei Stunden.
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 generieren - wie?

Beitragvon Kitty » Di 5. Mär 2013, 22:26

ich hab vorher schon auch den versuch gemacht, die einzelnen teile noch einmal in klammer zu setzen, also doppelklammer, aber das hat auch nicht funktioniert...
Kitty
 
Beiträge: 17
Registriert: Fr 29. Jun 2012, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable generieren - wie?

Beitragvon Kitty » Di 5. Mär 2013, 22:40

habs geschafft, hab noch einmal alles in doppelklammer gesetzt und das >. weggegeben....

danke für deine bemühungen!!!!
Kitty
 
Beiträge: 17
Registriert: Fr 29. Jun 2012, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable generieren - wie?

Beitragvon Kitty » Di 5. Mär 2013, 22:45

oder auch doch nur halb: jetzt hab ich natürlich die missings nicht drinnen, naja, weitertüfteln...
Kitty
 
Beiträge: 17
Registriert: Fr 29. Jun 2012, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable generieren - wie?

Beitragvon daniel » Mi 6. Mär 2013, 00:02

So, nun mal von vorn. Möglicher Weise ist das Problem etwas komplexer als angenommen.

1. Wie ist Dein Datensatz aufgebaut? Entspricht eine Zeile einer Person, oder einem Hauhalt?

2. Wie willst Du die unterschiedlichen fehlenden Werte in Deiner neuen Variable berücksichtigen?

Falls ich für 1. annehme, dass eine Zeile einen Haushalt representiert, würde ich folgendes versuchen

Code: Alles auswählen
// Anzahl der Kinder im Hauhalt
egen n_kidshh = anycount(agh3_1-agh3_10) ,v(3/6)

// Mindestens 1 Kind im Haushalt
g byte kidshh = (n_kidshh > 0)


Die zweite Frage müsstest Du zuerst beantworten, damit ich einen Vorschlag machen kann.

btw. Deine >= 2 Bedingung ist natürlich quatsch, weil dann ja der Parner (= 2) als Kind gezählt wird.
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 generieren - wie?

Beitragvon Kitty » Fr 8. Mär 2013, 10:41

tja, bei mir kommt was anderes raus als bei dir... jetzt ist die frage welches ergebnis stimmt... aber ich schätze mal deines, nachdem du das stata-genie bis ;-)
zwei sachen hab ich nicht ganz verstanden: ich dachte "-" wäre Minus und nicht "von bis", so wie bei (v3/v6) ... natürlich muss ich von 3 wegzählen, da hab ich mich vertan, es ist dann also eigentlich v3/v7
was bedeutet "byte"?
dein ergebnis ist weit höher als meines - kann es sein, dass bei dir die anzahl der kinder gezählt wird? wahrscheinlich nicht, der befehl sieht ja mal nicht danach aus. ja, jede zeile entspricht dem haushalt

vielen dank, dass du dir so viele gedanken drüber machst!
Kitty
 
Beiträge: 17
Registriert: Fr 29. Jun 2012, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Variable generieren - wie?

Beitragvon daniel » Fr 8. Mär 2013, 11:12

jetzt ist die frage welches ergebnis stimmt... aber ich schätze mal deines, nachdem du das stata-genie bis


Davon würde ich nicht unbedingt ausgehen. Du hast die Daten vorliegen. Ich schreibe diesen code "in the dark". Allerdings ist Dein code mit weit mehr Tipparbeit verunden, und damit extrem fehleranfällig. Du hast zudem viel mit Klammersetzung "probiert", statt wirklich zu wissen, wo Du, wesshalb, welche Klammern, wie setzt (so zumindest mein Eindruck). Diese beiden Punkte sprechen dafür, dass mein code das korrekte Ergebnis liefert. Aber Du hast auch meine zweite Frage nicht beantwortet. Und wenn Du fehlende Werte anders behandelst als ich, sollte es nicht verwundern, dass wir andere Erebnisse erhalten.

ich dachte "-" wäre Minus und nicht "von bis", so wie bei (v3/v6)


Das ist eine der ganz wenigen Dinge, die in der Stata Syntax inkonsitent sind (Liegt daran, dass es nahe an FORTRAN ist/war). In Nummernlisten ist der slash -/- das Zeichen für bis. Bei Variablenlisten ist es das Minus ---. Trotz dieses unintuitiven Unterschieds, ist beides (natürlich) bestens Dokumentiert. Siehe: -help varlist- -help numlist-

was bedeutet "byte"?


Das ist der Speichertyp der neuen Variable (vgl. -help data types-), der optional angegeben werden kann. Früher (also in den 80ern), als der Speicherplatz in PCs noch sehr begrenzt war, war es sehr sinnvoll nicht mehr Speicher für eine Variable zu reservieren, als nötig. Da die erstellte Variable nur die Werte 0 und 1 enthalten wird, genügt der kleinste verfügbare Speicher. Ich genereire Inidiaktor/Dummy/Binäre Variablen immer als byte Variablen, weil ich in der Variablenübersicht (-describe-) dann schnell sehen kann, dass es sich um eine ebensolche Variable handelt. Das Speicherplatzargument ist heute unerheblich.

kann es sein, dass bei dir die anzahl der kinder gezählt wird?


Wenn der code funktioniert wie er soll, dann ja. Es werden zwei Variablen erstellt, <n_kidshh> enthält die Anzahl der Kinder, und <kidshh> ist 1, falls midestens ein Kind im Haushalt lebt, 0 sonst.
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 generieren - wie?

Beitragvon Kitty » So 10. Mär 2013, 12:06

hallo daniel,
vielen dank noch einmal für deine hilfe. deine berechnung war natürlich korrekt
lg, claudia
Kitty
 
Beiträge: 17
Registriert: Fr 29. Jun 2012, 12:56
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

cron