Hallo liebe Stata-Profis!
Ich habe Schwierigkeiten mit meiner binär logistischen Regression für die Masterarbeit. Kann mir bitte jemand helfen?
-Bereich Sozialwissenschaften.
-Datensatz GESIS ISSP ZA5800 Version 3.
-Binär logistische Regression mit Marginalen Effekten als Ergebnisdarstellung
-UV = metrisch
-Kovariaten/Kontroll UV´s = Alter in Jahren (metrisch); Bildung (ordinal); Human Developement Index (metrisch); Geschlecht (dichotom)
-AV = Gesundheitsstatus (dichotom)
Fragestellung:
Hat die UV einen Einfluss auf die Eintrittswahrscheinlichkeit der AV.
Meine Probleme:
Kovariate: Alter
- Ich hab Ausreißer in der Alters-Variable (Kovariate). Ich weiß nicht wie ich damit umgehe und ob ich überhaupt in diesem Fall etwas tun muss.
Das Alter variiert zwischen 15 und 102 Jahren. Allerdings gibt es von den 9100 Fällen nur einen Fall der 102 Jahre alt ist. Führt das zu Verzerrungen?
Muss ich da etwas an der Variable, die eine Kovariate ist, ändern?
Es gibt ca. 200 Missings, die "keine Angaben" gemacht haben. Ich habe die Missings einfach mit (= .) kodiert.
tab AGE
labelbook AGE
gen AGE_new = AGE
recode AGE_new 999= .
label var AGE_new "Alter"
tab AGE_new
Ist das ausreichen oder muss ich mit dem Befehl "mvdecode" arbeiten?
Kovariate HDI-Index (Human Developement Index)
- Ich habe eine Variable (HDI-Index) gebildet. Daten sind von destatis, habe diese der im original Datensatz vorhandenen Ländervariable zugeordnet. Es funktioniert aber nicht. Irgendwo ist ein Fehler und ich finde ihn nicht. Ich konnte unter anderem keine "0" Werte eintragen.
Z.B.:
gen HDI = V4
recode HDI 36=0.965 152=0.854 .... Die "0" nimmt Stata nicht an. ich musste dann "36=.965" eingeben. Liegt da der Fehler?
Kovariate Bildung:
-Im original Datensatz ist die Variable "DEGREE" = höchster Bildungsabschluss. Für die log. Reg. muss ich diese 6 Bildungsstufen (Ausprägungen) als Dummyvariablen kodieren ODER beim logit Befehl ein "i" vor die Variable setzen, dann erstellt Stata automatisch Dummyvariablen. Es gab Missings in der original Variable. Ich bin folgendermaßen vorgegangen:
tab DEGREE
codebook DEGREE
gen DEGREE_new = DEGREE
recode DEGREE_new 9= .
label var DEGREE_new "Höchster Bildungsabschluss"
tab DEGREE_new
Ist diese Vorgehensweise richtig?
Diagnostik:
- Diagnostik des statistischen Modells. Ich verstehe nicht genau, welche diagnostischen Verfahren ich wo und wie, bei welchen Variablen anwenden muss. Ich kann die Erläuterungen aus Fachbüchern nicht auf meine Arbeit übertragen, da ich die Theorie dahinter nicht genau verstehe.
// Modellgüte
* Welche Kontrollen müssen durchgeführt werden ????
* Muss ich die UV´s auf Interaktionen untersuchen? Wenn ja, wie muss ich vorgehen?
* Ist bei der log. Reg. ein Test auf Normalverteilung notwendig? Wenn ja, bei welchen Variablen und wie muss vorgegangen werden?
// Grafische Darstellung des Zusammenhangs der UV´s mit der AV.
* Wie (mit welchem Befehl) kann ich die S-Kurve (log. Funktionskurve) anzeigen lassen?
Do-file und Datensatz:
Ich habe den Text des Do-files hier rein kopiert. Das hochgeladen von Do-file und Datensatz funktioniert leider nicht.
Wer kann mir helfen diesen Do-file - Text mal anzusehen und Fehler zu erkennen, bzw. mir Tipps geben, was fehlt, falsch gemacht wurde etc.
Ich würde dafür selbstverständlich etwas bezahlen, da ich gute Unterstützung sehr zu schätzen weiß.
Vielen Dank für Tipps und Hinweise!
Do-file Text:
set more off
//Fragestellung//
* Erhöht sich die Wahrscheinlichkeit des Eintretens eines guten Gesundheitsstatus
* mit dem Anstieg der im Monant ausgesetzten Sonnenstunden?".
//Hypothese//
* H0:
* Die Wahrscheinlichkeit des Eintretens eines guten Gesundheitsstatus erhöht sich
* nicht mit dem Anstieg der im Monat ausgesetzten Sonnenstunden".
* H1:
* Mit dem Anstieg der im Monat ausgesetzten Sonnenstunden erhöht sich
* die Wahrscheinlichkeit des Eintretens eines guten Gesundheitsstatus".
// Methode und externe Daten //
* Statistisches Modell: Binäre logistische Regression.
// Variablen //
* AV = "srh" (subjektiver Gesundheitsstatus gut/schlecht)
* UV = "sunshine" (Durchschnitt monatlicher Sonnenstunden im Befragungszeitraum)
* Kovariaten:
* Alter
* Geschlecht
* Bildung
* HDI - Human Developement Index
// ! Es sind hier im Beispiel-Do file nur die Daten von 2 der 32 Länder angegeben ! //
// Vorgehensweise //
// Umkodieren der Variablen AV
* AV = V59 "Q26 Health status" srh
* --> V59 rekodieren, dichotomisieren:(gut/schlecht), die Ausprägungen (Not available/
* not asked; 8 cant choose; 9 No Answer) zu missings codieren. Erstellen und kontrollieren der neuen AV "srh".
tab V59
codebook V59
recode V59 (1/3 =1 "Gut") (4/5 =0 "Schlecht") (0 8/9 =.), gen (srh)
label var srh "Gesundheitsstatus"
codebook srh
tab srh
// Umkodieren der Kovariaten - SEX, AGE, DEGREE
* Variable "male" erstellen. "male" auf (1) female auf (0)
* und "keine Angabe" (9) als Missing (= .) kodieren. Variable "male"
* das Label "Geschlecht" zuweisen.
tab SEX
codebook SEX
gen male = SEX
recode male 1=1 2=0 9= .
label var male "Geschlecht"
tab male
* Variable "AGE_new" erstellen. "keine Angabe" (999) als Missing (= .) kodieren.
* Variable "AGE_new" das Label "Alter" zuweisen.
tab AGE
labelbook AGE
gen AGE_new = AGE
recode AGE_new 999= .
label var AGE_new "Alter"
tab AGE_new
* Variable höchster Bildungsabschluss. Fehlende Werte zu Missings kodieren.
tab DEGREE
codebook DEGREE
gen DEGREE_new = DEGREE
recode DEGREE_new 9= .
label var DEGREE_new "Höchster Bildungsabschluss"
tab DEGREE_new
// Generieren der Kovariate HDI - Human developement Index
* Der Länderkodierung aus V4 (Country) die HDI-Werte des jeweiligen Befragungsjahres
* zuweisen. Quelle: HDI Index aus dem UN Report. Variable "HDI" das Label "Human Developement Index" zuweisen.
gen HDI = V4
recode HDI 36=0.933 56=0.886
label var HDI "Human Developement Index"
tab HDI
// Generieren der UV Monatliche Sonnenstunden
* Einbezogen in die binär logistische Regression werden Daten zum Durchschnitt
* monatlicher Sonnenstunden aus dem Monat der tatsächlichen Befragung in einem Land.
* Da die Sonnenstunden je nach Region eines Landes stark variieren, können nicht einfach
* die durchschnittlichen Sonnenstunden eines ganzen Landes zur Analyse herangezogen werden.
* Es muss nach Sonnenstunden einzelner Regionen analysiert werden.
* Aufgrund der Masse an Gesamtdaten werden von jedem im ISSP ZA5800_V3.0.0 Datensatz
* vorhandenen Land die Sonnenstunden einer Region ausgewählt. Und zwar jene Region, in der
* die höchste Anzahl an Antworten zur Frage V59 "Health staus" bzw. neu "srh" vorliegen.
* Von dieser Region werden dann die Daten zu monatlichen Sonnenstunden im Befragungsmonat
* extern recherchiert und damit die neue Variable UV erstellt.
// Vorgehensweise:
* Alle Regionen eines Landes Anzeigen. Die Region in der die meisten Personen Angaben zur
* Frage nach srh (Gesundheitsstatus) gemacht haben, wird ausgewählt, um die UV zu bilden.
tab AU_REG srh
tab BE_REG srh
* Definition (Value) der jeweils ausgewählten Region anzeigen.
labelbook AU_REG
labelbook BE_REG
* Ergebnis:
* Region mit der höchsten Anzahl an Angaben zu srh = Region(Value) X.
* Value der Syntax anhängen.
* Nächster Schritt:
* Anzeigen aus welchen Monaten (code 1 - 12) für die jeweiligen Regionen
*(Value) X Angaben zu "srh" vorliegen und Code der identifizierten Monate (code 1 - 12) der Syntax anhängen.
tab DATEMO srh if AU_REG == 1
tab DATEMO srh if BE_REG == 21
* Nächster Schritt:
* Durchschnitt monatlicher Sonnenstunden von Region X an Hand der Daten des Deutschen-Wetter-Dienstes
* ermitteln, der Syntax anhängen und UV generieren. Variable "sunshine"
* das Label "Monatliche Sonnenexposition in Stunden" zuweisen.
* Aufbau Syntax:
* Variablen Name (sunshine); montl. Sonnenstunden; Land(Country specific region);
* Definition (Value) der länderspezifischen Region; Monat der Befragung (DATEMO).
gen sunshine = .
replace sunshine = 240 if AU_REG == 1 & DATEMO == 5
replace sunshine = 158 if AU_REG == 1 & DATEMO == 6
replace sunshine = 219 if AU_REG == 1 & DATEMO == 7
replace sunshine = 261 if AU_REG == 1 & DATEMO == 8
replace sunshine = 239 if BE_REG == 21 & DATEMO == 4
replace sunshine = 264 if BE_REG == 21 & DATEMO == 5
replace sunshine = 181 if BE_REG == 21 & DATEMO == 6
replace sunshine = 140 if BE_REG == 21 & DATEMO == 7
replace sunshine = 145 if BE_REG == 21 & DATEMO == 8
label var sunshine "Monatliche Sonnenexposition in Stunden"
codebook sunshine
tab sunshine
// Logistische Regression
* Zunächst einzelne Reg. zw. AV und jeder einzelnen UV um überhaupt Zusammenhang zu erkennen.
logit srh sunshine
logit srh AGE_new
logit srh male
logit srh HDI
logit srh i.DEGREE_new
* Log Reg mit allen Kovariaten.
logit srh sunshine AGE_new male HDI i.DEGREE_new
margins
// Modellgüte
* Welche Kontrollen müssen durchgeführt werden ????
* Muss ich die UV´s auf Interaktionen untersuchen? Wenn ja, wie muss ich vorgehen?
* Ist bei der log. Reg. ein Test auf Normalverteilung notwendig? Wenn ja, bei welchen
* Variablen und wie muss vorgegangen werden?
// Grafische Darstellung des Zusammenhangs der UV´s mit der AV.
* Wie (mit welchem Befehl) kann ich die S-Kurve (log. Funktionskurve) anzeigen lassen?
LG Stef