Hilfe, Prüfung!! Variable aus mehreren Indizes bilden

Fragen zu Stata Syntax und Do-Files.

Hilfe, Prüfung!! Variable aus mehreren Indizes bilden

Beitragvon Maximilian » So 23. Feb 2014, 00:08

Hi Leute,
es eilt etwas, muss morgen die Hausarbeit abgeben.
Ich habe aus mehreren intervallskalierten Items mit 5 Ausprägungen zur Einstellungsmessung einen additiven Index gebildet und aus ganz anderen Variablen einen zweiten. Soweit alles klein Problem. Ich habe bei beiden Indexvariablen jeweils etwa 1500 Fälle. Jetzt möchte ich mit diesen beiden Indizes eine einzelne Variable mit zwei Ausprägungen bilden, indem ich angeben, dass ab einer bestimmen Ausprägung von Index1 die neue Variable den Wert 1 annimmt und ab einer bestimmten Ausprägung von Index2 den Wert 2. Folgenede Befehle:

Index1 bilden:
gen nonakad = j1secure + j1leisui + j1famili + j1earni1

Index2 bilden
gen akad = j1learni + j1challi + j1careei

neue Variable aus beiden Indizes bilden
gen hab=.
replace hab=0 if inrange(nonakad,12,16)
replace hab=1 if inrange(akad,9,15)

So. Wenn ich tab nonakad eingebe, erhalte ich meine Indexausprägungen von 4 bis 20 und einer Fallzahl von ca. 1500.
Wenn ich tab akad eingeben, erhalte ich die Indexausprägungen von 3 bis 15, ebenfalls mit einer Fallzahl von ca. 1500.

Wenn ich tab hab eingebe, erhalte ich eine ganz andere Fallzahl. Außerdem müsste ich ja davon ausgehen, dass die Fälle der Ausprägungen von 12-16 bei akad aufsummiert werden und ich somit die Fallzahl von 0 in der neuen Variable erhalte.
Ebenso müsste meine Ausprägung 1 von hab doch alle Fälle beinhalten, die bei akad den die Werte 9-15 annehmen, oder?

Tut es aber beides nicht - im Gegenteil: Wenn ich in bei der Variable hab in der Ausprägung 0 anstatt inrange(akad,12,16) den Befehl inrange(akad,12,15) eingebe, verändert sich stattdessen die Fallzahl der Ausprägung 1 nach dem Befehl tab hab.
Aber es kommt noch skurriler: Wenn ich anstatt

gen hab=.
replace hab=0 if inrange(nonakad,12,16)
replace hab=1 if inrange(akad,9,15)

jenes eingebe:

gen hab=.
replace hab=1 if inrange(akad,9,15)
replace hab=0 if inrange(nonakad,12,16)

also einfach nur die Reihenfolge der replace-Befehle verändere, bekomme ich bei tab hab nochmal komplett andere Werte für 0 und 1 heraus.
Wer kann mir helfen????
Tausend Dank im Voraus!!
Maximilian
 
Beiträge: 2
Registriert: Do 6. Feb 2014, 23:00
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Hilfe, Prüfung!! Variable aus mehreren Indizes bilden

Beitragvon daniel » So 23. Feb 2014, 14:54

Aber es kommt noch skurriler: Wenn ich [...] einfach nur die Reihenfolge der replace-Befehle verändere, bekomme ich bei tab hab nochmal komplett andere Werte für 0 und 1 heraus.


Das ist alles andere als skurriel, sondern glasklar und absolut zu erwarten.

Nimm mal an, eine (der 1500) Person(en) in Deinem Datensatz hat auf <nonakad> den Wert 13 und auf <akad> den Wert 10. Welchen Wert soll diese Person bei <hab> bekommen? Null oder eins? Nach diesem code

Code: Alles auswählen
gen hab=.
replace hab=0 if inrange(nonakad,12,16)
replace hab=1 if inrange(akad,9,15)


wäre es eine 1. Denn die Person hätte nach der ersten Zeile des codes einen fehlenden Wert in <hab> stehen (wie alle anderen Personen auch). Nach der zweizten Zeile hätte sie den Wert 0 in <hab> stehen, da der Wert 13 auf <nonakad> die Bedingung erfüllt. Nach der dritten Zeile des codes hätte die Person den (finalen) Wert 1 in <hab> stehen, da ihr Wert 10 auf <akad> die Bedingung erfüllt. Da der code hier zu Ende ist, blebt der Wert 1 stehen.

Verwendest Du stattdessen diesen code

Code: Alles auswählen
gen hab=.
replace hab=1 if inrange(akad,9,15)
replace hab=0 if inrange(nonakad,12,16)


wird am Ende der Wert 0 in <hab> stehen bleiben -- nach der selben Logik.

Es ist auch gar nicht anders möglich und -- wie eingangs erwähnt -- alles andere als skurriel. Mit der Reihenfolge legst Du die Prioritäten fest und gibst an, was passieren soll, wenn beide Bedingungen erfüllt sind. Im Bezug auf Dein Ausgsproblem

dass ab einer bestimmen Ausprägung von Index1 die neue Variable den Wert 1 annimmt und ab einer bestimmten Ausprägung von Index2 den Wert 2.


musst Du Dich fragen, was mit Personen passiert, die (i) keine der beiden Schwellwerte übersteigt und (ii) beide Schwellwerte übersteigt.
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: Hilfe, Prüfung!! Variable aus mehreren Indizes bilden

Beitragvon Maximilian » Mo 24. Feb 2014, 14:52

Da hast du vollkommen Recht. Ich hatte ein riesen Brett vor dem Kopf. Danke für die Antwort!!
Beste Grüße
Maximilian
 
Beiträge: 2
Registriert: Do 6. Feb 2014, 23:00
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 6 Gäste

cron