SC4: Unklar welche Variable für ISEI der Eltern und Noten für Sekundarstufe 2

Sehr geehrtes NEPS-Team,

ich habe wie in der Überschrift genannt das Problem, dass ich mir unsicher bin, welche Variable ich für den ISEI der Eltern nutzen soll.
Ich verstehe um genau zu sein nicht den Unterschied zwischen „Vater: Beruf“ (t731463_g5), „Vater (1): Beruf“ (t731478_g5) und „Vater (2): Beruf“ (t731485_g5).

Meine AV in meiner Untersuchung werden die Noten der Schüler*innen der Sekundarstufe 2 sein. Hierfür ist mein Gedanke, dass ich über CohortProfile mit der Variable tx80234 die Klassen dafür bestimme.

Jedoch habe ich verschiedene Noten bzw. Abschlussnoten gefunden:

  • Die Variable tf11218 aus pTargetCATI hat fast 69.000 designbedingt fehlende Werte.
  • Bei der Variable tf11301 ist es ungefähr dasselbe.

Nun ist meine Frage welche Variable ich dafür nutzen kann, um die Noten als AV für Schüler*innen der Sekundarstufe 2 zu betrachten. (Die Noten des Abschlusses sind bevorzugt aber kein muss. Es geht um die Untersuchung der generellen Leistungsunterschiede, also könnte ich mich auch auf Mathematik und Deutsch festlegen.)

Herzlichen Dank und liebe Grüße

Arif-Celal Temür

Hallo Arif-Celal!

Die Variable zum Beruf des Vaters t731463_g5 (vberufsg) wurde in den Wellen 6, 8 und 10 erhoben.
In Welle 9 konnte die Zielperson aber zu zwei unterschiedlichen Personen (vberufs_1 und vberufs_2), die für ihn/sie eine Vaterrolle einnahmen, Angaben zu deren Berufen machen.

Variable tf11218 wurde nur in Welle 9 erhoben und in Variable tf11301 stecken nur zuerkannte Abschlüsse.

Die pTarget-Daten sind nur bedingt geeignet, weil die Abschlüsse anscheinend nicht wirklich konsequent in der selben Form wiederholt erhoben wurden. Ein Ausweg wäre die Verwendung der Angaben in spSchool, was aber nicht so einfach durch merging via ID_t und wave möglich ist - ein sogenanntes Episodensplitting ist notwendig und die beiden Datensätze zu vereinen. Hast du schon etwas von diesem Verfahren gehört?

VG
Dietmar

Hallo Dietmar!

Vielen Dank erst einmal für Deine schnelle Antwort!

Bezüglich der ISEI-Werte/Beruf des Vaters: Ich habe nun vor den ISEI des Vaters über t731463_g5 und den ISEI der Mutter t731413_g5 zu nehmen. Dabei möchte ich den höheren Wert der Elternteile nutzen, um sozusagen mit dem HISEI zu arbeiten.
Kann ich hierfür in STATA einfach folgendes machen:

use SC4_pTargetCATI_D_14-0-0.dta, clear
gen isei_max = max( t731463_g5, t731413_g5)

Bezüglich der Noten:
Ich habe tatsächlich nur gelesen, dass es dieses Verfahren gibt, jedoch habe ich noch nie gelesen oder nachgeschaut, wie das möglich ist. Jedoch bin ich bereit das für STATA anzuwenden. Wenn ich diesen Episodensplitting nutze, um die Noten in der Sekundarstufe 2 als meine AV zu definieren, ist es dann möglich durch „einfaches“ mergen die anderen Variablen von den anderen Datensätzen zu nutzen oder muss ich dann immer wieder ein Episodensplitting nutzen?

Liebe Grüße
Arif-Celal

Hallo noch einmal,

ich habe für die Noten mehr Informationen gefunden.
Anstelle der Abschlussnoten, habe ich im Datensatz pTarget die Variablen t724101 / t724601 für Deutsch und t724102 / t724602 für Mathematik gefunden.
Ich gehe davon aus, dass t724601 und t724602 die Noten in der Sekundarstufe 2 angeben, weil sie das Punktesystem für die Noten nutzen. Jedoch bin ich von den Werten „90“ und „80“ in beiden Variablen verwirrt, weil ich nicht weiß, welche Information diese beiden Werte in den entsprechenden Variablen t724601 und t724602 angeben.
Hast Du dazu evtl. irgendwelche Infos? Dafür wäre ich sehr darkbar!

Wie am Anfang meines Beitrags gesagt, würde ich auch anstelle der Abschlussnoten die Noten von Deutsch und Mathematik betrachten und jedes meiner Modelle für beide Fächer testen.

Ist es bei den Variablen möglich, ohne den Episodensplitting zu nutzen und meine gewünschten Datensätze zu mergen?

Wenn meine Annahmen richtig sein sollten, habe ich folgende Überlegung, wie ich voran gehen muss, bin jedoch unsicher. Zur Information möchte ich noch hinzufügen, dass ich die Fälle bis einschließlich Welle 10 betrachte.

  • Meine AV wären (wenn wie vorhin richtig angenommen) die Noten von Deutsch und Mathematik aus pTarget für die Sekundarstufe 2.
  • Für den Migrationshintergrund nutze ich die Variable t400500_g1 und gehe nach der Definition von Destatis. Personen mit Migrationshintergrund sind also bis einschließlich der 2,5. Generation. Alles andere (außer den missings natürlich) wäre „kein Migrationshintergrund“
  • Eine weitere UV in meiner Analyse ist die Interaktionssprache im Haushalt t41203b.
  • Für die UV HISEI habe ich im Kopf, dass ich den ISEI des Vaters t731463_g5 und der Mutter t731413_g5 kombiniere und den maximalen Wert von beiden Elternteilen in einer neuen Variable übernehme, um den HISEI anzugeben.
  • Als weiteren Indikator und UV für den sozioökonomischen Status werde ich den ISCED der Eltern betrachten. Für das befragte Elternteil nutze ich p731802_g1 und für den/die Partner/in p731852_g1. Hierbei möchte ich wie beim ISEI nur den höchsten Bildungsabschluss von beiden Elternteilen nutzen.

Ist die Nutzung von meinen Daten für eine Regressionanalyse mit diesen Variablen ein möglicher Weg oder mache ich irgendwo einen großen Fehler? Muss ich über CohortProfile die Klassen festlegen, wenn ich einfach die Noten für Deutsch t724601 und Mathematik t724602 nutze?

Vielen lieben Dank für eure Hilfe!

Mit freundlichen Grüßen
Arif-Celal Temür

Hallo Arif-Celal!

bysort ID_t (wave): gen isei_max = max( t731463_g5, t731413_g5)
wäre korrekter, wenn HISEI wirklich nur der höchste ISEI ist.

Anbei habe ich dir die Syntax gepostet, wie man das Splitting durchführt. Aber einfaches mergen ist es definitiv nicht - du entweder die Datenstruktur des CohortProfiles oder des Episodendatensatzes so umstrukturieren, dass du für jeden Monat eine Zeile im Datensatz besitzt - dann kannst du die beiden Datensätze über das Interviewdatum und das Ende der Episode zusammenspielen. Wenn du auch Daten aus anderen Episodendatensätzen verwenden willst, muss du diese auf die gleiche Weise anspielen.

VG
Dietmar

ssc install distinct
net install nepstools, from(http://nocrypt.neps-data.de/stata) // nepstools installieren


use ID_t wave tx80521 tx8600y tx8600m tx8610m tx8610y tx8611m tx8611y using "SC4_CohortProfile_D_14-0-0.dta", clear
keep if tx80521 == 1 // nur Befragte behalten
generate  intdate = ym(tx8600y,tx8600m) // Interviewdatum generieren
generate testdate = ym(tx8610y,tx8610m) // Testdatum generieren
 replace testdate = ym(tx8611y,tx8611m) if missing(testdate) // Testdatum durch Testdatum2 ersetzen wenn Testdatum fehlt
replace intdate = testdate if missing(intdate) // Interviewdatum durch Testdatum ersetzen, wenn Interviewdatum fehlt (PAPI)
keep ID_t wave intdate
keep if !missing(intdate)
isid ID_t intdate // sind ID und Interviewdatum eindeutige Identifier? 

// Datensatz expandieren >> für jeden Monat eine Zeile
bysort ID_t (intdate): generate duration = intdate - intdate[_n-1] // Dauer des Zeitraums zwischen zwei Wellen berechnen
expand duration // Datenzeilen des CohortProfiles um den Faktor des Abstands zwischen zwei Interviews multiplizieren
sort ID_t intdate
bysort ID_t intdate: generate month = intdate - _n +1 // in jede Zeile einen Monat schreiben, für die Monate zwischen den Interviews
sort ID_t month
isid ID_t month // sind ID_t und mont eindeutige Identifikatoren?
keep ID_t month wave
tempfile cp 
save "`cp'", replace

use "SC4_spSchool_D_14-0-0.dta", clear
keep if subspell == 0 // nur harmonisierte subspells behalten
nepsmiss ts11209 ts11214 tf11218 ts11226 ts11246 // missings kodieren

keep if !missing(ts11209) // nur behalten, wenn gültige Werte in Abschluss			
generate month = ym(ts1112y,ts1112m) // Enddatum mont generieren
keep if !missing(month)

// Duplikate (mehrere Abschlüsse im selben Monat) löschen
duplicates drop ID_t month ts11209 ts11214 tf11218 ts11226 ts11246, force

// Wenn es noch Duplikate gibt, dann das Duplikat mit eine gültigen Wert in der Gesamtnote behalten
generate nomiss_tf11218 = !missing(tf11218)  
bysort ID_t month (nomiss_tf11218): keep if _n==_N // weitere Duplikate löschen - die Fälle behalten, die kein missing in der Abschlussnote haben
isid ID_t month  // ist diese Variablenkombination eine eindeutige ID?
keep ID_t ts11209 ts11214 tf11218 ts11226 ts11246 month


// merge von wave aus CohortProfile mit den Abschlüssen aus spSchool - über ID_t und month - month ist das Interviewdatum in CohortProfile und in der Episode das Enddatum. Ein Match bedeutet, dass in dieser Welle der Abschluss erfolgte.
// >> wenn z.B. ein Enddatum einer Episode größer als das Interviewdatum aus Welle 1 und kleiner/gleich als das Interviewdatum der Welle 2 ist, erhält diese Zeile die Welle 2 als Welleninformation
merge 1:1 ID_t month using "`cp'", keep(matched) nogenerate // nur die Fälle behalten die matchen

// jetzt kann man auch ganz einfach noch eine Target-Datensatz via ID_t und wave anspielen
merge 1:1 ID_t wave using "SC4_pTargetCATI_D_14-0-0.dta" keep(matched) nogenerate // nur die Fälle behalten die matchen

Hallo Dietmar!

Ich bin tatsächlich sprachlos und unfassbar dankbar für deine unbeschreiblich große Hilfe!
Ich habe bisher alles so in STATA eingetippt, wie du es geschrieben hast. Es hat wirklich nahezu alles funktioniert, jedoch hat der allerletzte Command nicht funktioniert.

merge 1:1 ID_t wave using "SC4_pTargetCATI_D_14-0-0.dta" keep(matched) nogenerate
-> invalid 'keep' 
r(198);

// ich habe deshalb ein Komma eingefügt zwischen ...dta", keep...

merge 1:1 ID_t wave using "SC4_pTargetCATI_D_14-0-0.dta", keep(matched) nogenerate
-> variables ID_t wave do not uniquely identify observations in the master data
r(459);

Tatsächlich möchte ich noch die Variablen t400500_g1 (aus pTarget); t41203b, t731463_g5 und t731413_g5 (pTargetCATI); und p731802_g1 und p731852_g1 (aus pParent) nutzen.
Ich habe versucht alle 3 Datensätze mit dem Datensatz (,der mit „cp“ gemerged wurde) zu mergen, jedoch kam bei allen der Fehler „variables ID_t wave do not uniquely identify observations in the master data
r(459)“.

Ich habe vor dem allerletzten merge-Versuch eine Fallzahl von 14.360. Aus Interesse habe ich anstelle eines 1:1 ein m:1 merge mit den Datensätze versucht, die die oben genannten Variablen beinhalten:

merge m:1 ID_t wave using "SC4_pTarget_D_14-0-0.dta", keep(matched) nogenerate
merge m:1 ID_t wave using "SC4_pTargetCATI_D_14-0-0.dta", keep(matched) nogenerate
merge m:1 ID_t wave using "SC4_pParent_D_14-0-0.dta", keep(matched) nogenerate

Wenn ich das jedoch mache, habe ich nur noch eine Fallzahl von 240 Personen, wovon sich 215 im Jahr 2012/2013 und die restlichen 25 im Jahr 2013/2014 befinden.
Ich weiß nun natürlich nicht, ob das überhaupt richtig von mir probiert war, jedoch habe ich bei der Kontrolle von beispielsweise der Variable t731463_g5 bemerkt, dass alle 240 Personen designbedingt fehlen.

Ich schildere mein theoretisches Vorhaben sicherheitshalber:

  • Meine AV sind die Noten in der Sekundarstufe 2, welches aber auch die Noten zu Deutsch und Mathematik im Zeugnis sein können. Je nachdem ob ich eine Durchschnittsnote oder 2 Noten (Deutsch und Mathe) habe, werde ich auch entweder mit einer AV oder mit 2 AV arbeiten.
  • Meine UV soll der Migrationshintergrund sein. Den definiere ich über t400500_g1 aus pTarget.
  • Meine Kontrollvariablen bestehen einmal aus dem HISEI der Eltern und dem höchsten Bildungsabschluss der Eltern (beides sollen Indikatoren für den sozioökonomischen Status SES darstellen) und zum anderen die Interaktionssprache im Haushalt t41203b.
  • Ich betrachte hauptsächlich die Wellen vor Corona (also bis einschließlich Welle 10). Jedoch möchte ich meine AV aus einer spezifischen Welle und meine UV sowie die Kontrollvariablen aus einer vorherigen Welle beziehen.

In der ersten Hypothese möchte ich eine Regression zwischen meiner AV und meiner UV durchführen.
In der zweiten Hypothese möchte ich eine Regression zwischen meiner AV und meiner UV durchführen, indem ich noch die Kontrollvariablen für den SES mitbetrachte.
In der dritten Hypothese kommt als weitere Kontrollvariable die Interaktionssprache dazu.
In der letzten Hypothese nutze ich meine AV und UV und untersuche dabei den Interaktionseffekt zwischen HISEI und Interaktionssprache.

Ich bin jetzt schon unheimdlich dankbar für Deine Hilfe und Mühe und hoffe, dass Du mir mehr dazu sagen kannst.

Viele liebe Grüße!
Arif-Celal Temür

Hallo nochmal!

Ich habe die Syntax angepasst. Ein Problem war, dass es bei einigen Leute mehr als einen Abschluss pro Welle gab und daher auch mehr als eine Zeile pro Welle vorhanden war. Ich musste daher die Datenstruktur so umbauen, dass diese gleichzeitigen Abschlüsse in einer Zeile vorhanden sind - deswegen haben nun alle Variablen aus spSchool eine_w*-Suffix.

Ich habe beim merge der pTarget-Datensätze nun die Option keep ganz weggelasen, weil sonst nur die Wellen im Datensatz übrig bleiben, die in allen Datensätzen vorhanden sind. Und das ist das zentrale Problem - du verwendest Variablen aus unterschiedlichen Wellen. Diese Variablen liegen dann im Ergebnisdatensatz in jeweils unterschiedlichen Zeilen. Schau dir das mal an mit browse ID_t wave tf11218_w1 t41203b t400500_g1 p731802_g1 . Eine herkömmliche Regression funktioniert also nicht.

Zu deinen Hypthesen und deinem Forschungsvorhaben kann ich dir leider nichts sagen, wir sind die Leute, die hier alles rein technisch betrachten, da muss du deine/n Betreuer fragen, sorry

Aber die technische Herangehensweise ist ungefähr so:

  • Du könntest den Ergebnisdatensatz aus dieser Syntax erstmal speichern
  • dann die Zeilen droppen, die überhaupt keine relevanten Infos enthalten.
  • du schaust dir dann an welche Informationen der _w*-Variablen aus spSchool du verwenden willst, wenn multiple_episodes == 1 >>bei der Synthese aus *_w1 und *_w2 lässt du dann den Suffix weg,
  • dann machst du einen Reshape vom long-format zum wide-format >> help reshape
  • jetzt hast du für jede Welle eine Variable pro Ausgangsvariable und nur noch insgesamt eine Zeile pro ID_t

VG + Viel Glück
Dietmar

ssc install distinct
net install nepstools, from(http://nocrypt.neps-data.de/stata) // nepstools installieren


use ID_t wave tx80521 tx8600y tx8600m tx8610m tx8610y tx8611m tx8611y using "SC4_CohortProfile_D_14-0-0.dta", clear
keep if tx80521 == 1 // nur Befragte behalten
generate  intdate = ym(tx8600y,tx8600m) // Interviewdatum generieren
generate testdate = ym(tx8610y,tx8610m) // Testdatum generieren
 replace testdate = ym(tx8611y,tx8611m) if missing(testdate) // Testdatum durch Testdatum2 ersetzen wenn Testdatum fehlt
replace intdate = testdate if missing(intdate) // Interviewdatum durch Testdatum ersetzen, wenn Interviewdatum fehlt (PAPI)
keep ID_t wave intdate
keep if !missing(intdate)
isid ID_t intdate // sind ID und Interviewdatum eindeutige Identifier? 

// Datensatz expandieren >> für jeden Monat eine Zeile
bysort ID_t (intdate): generate duration = intdate - intdate[_n-1] // Dauer des Zeitraums zwischen zwei Wellen berechnen
expand duration // Datenzeilen des CohortProfiles um den Faktor des Abstands zwischen zwei Interviews multiplizieren
sort ID_t intdate
bysort ID_t intdate: generate month = intdate - _n +1 // in jede Zeile einen Monat schreiben, für die Monate zwischen den Interviews
sort ID_t month
isid ID_t month // sind ID_t und mont eindeutige Identifikatoren?
keep ID_t month wave
tempfile cp 
save "`cp'", replace

use "SC4_spSchool_D_14-0-0.dta", clear
keep if subspell == 0 // nur harmonisierte subspells behalten
nepsmiss ts11209 ts11214 tf11218 ts11226 ts11246 // missings kodieren

keep if !missing(ts11209) // nur behalten, wenn gültige Werte in Abschluss			
generate month = ym(ts1112y,ts1112m) // Enddatum mont generieren
keep if !missing(month)

// Duplikate (mehrere Abschlüsse im selben Monat) löschen
duplicates drop ID_t month ts11209 ts11214 tf11218 ts11226 ts11246, force

// Wenn es noch Duplikate gibt, dann das Duplikat mit eine gültigen Wert in der Gesamtnote behalten
generate nomiss_tf11218 = !missing(tf11218)  
bysort ID_t month (nomiss_tf11218): keep if _n==_N // weitere Duplikate löschen - die Fälle behalten, die kein missing in der Abschlussnote haben
isid ID_t month  // ist diese Variablenkombination eine eindeutige ID?
keep ID_t splink ts11209 ts11214 tf11218 ts11226 ts11246 month


// merge von wave aus CohortProfile mit den Abschlüssen aus spSchool - über ID_t und month - month ist das Interviewdatum in CohortProfile und in der Episode das Enddatum. Ein Match bedeutet, dass in dieser Welle der Abschluss erfolgte.
// >> wenn z.B. ein Enddatum einer Episode größer als das Interviewdatum aus Welle 1 und kleiner/gleich als das Interviewdatum der Welle 2 ist, erhält diese Zeile die Welle 2 als Welleninformation
merge 1:1 ID_t month using "`cp'", keep(matched) nogenerate // nur die Fälle behalten die matchen

// es anscheinend bei manchen Zielpersonen mehr als einen Abschluss pro Welle >> Datenstruktur anpassen und die Variablen aus spSchool pro ID & Welle wide ablegen. 
bysort ID_t wave (splink): generate widenr = _n
foreach var in splink ts11209 ts11214 tf11218 ts11226 ts11246 month {
	rename `var' `var'_w
}

reshape wide *_w, i(ID_t wave) j(widenr)

generate multiple_episodes = (!missing(month_w1) & !missing(month_w2))

// jetzt kann man auch ganz einfach noch eine Target-Datensatz via ID_t und wave anspielen
// nur die Fälle behalten die matchen (Option keep) und nur Variable aus pTargetCATI/pTarget/pParent mitnehmen, die man braucht (Option keepusing)
merge 1:1 ID_t wave using "SC4_pTargetCATI_D_14-0-0.dta", nogenerate keepusing(t41203b t731463_g5 t731413_g5)
merge 1:1 ID_t wave using "SC4_pTarget_D_14-0-0.dta", nogenerate keepusing(t400500_g1)
merge 1:1 ID_t wave using "SC4_pParent_D_14-0-0.dta", nogenerate keepusing(p731802_g1 p731852_g1)
compress