Anzahl der Weiterbildungskurse pro Person und Welle im Rahmen einer Panelanalyse

Hallo zusammen,

ich arbeite aktuell mit dem NEPS SC6-Datensatz und bereite eine Panelanalyse vor. Ziel ist es, die Anzahl der Weiterbildungsmaßnahmen pro Person und Welle als abhängige Variable (AV) zu modellieren – zum Beispiel in einem Fixed Effects (FE) oder Random Effects (RE) Modell.

In meiner Datenvorbereitung habe ich aus dem „FurtherEducation“-Datensatz ($fedu) die Variable fe_n erzeugt, welche die Anzahl an Weiterbildungskursen pro Person und Welle darstellen soll. Ich bin mir jedoch nicht sicher, ob die Zählung so korrekt ist oder ob ich hier etwas übersehe.

Mein Code:

use „$fedu“, clear

Anzahl Weiterbildungsmaßnahmen pro Person-Welle

gen __one = 1
egen fe_n = total(__one), by(ID_t wave)

gen fe_start = ym(tx2821y, tx2821m)
gen fe_end = ym(tx2822y, tx2822m)
gen fe_dur_m = fe_end - fe_start + 1 if !missing(fe_end, fe_start)
egen fe_duration = total(fe_dur_m), by(ID_t wave)

duplicates drop ID_t wave, force

Ist fe_n in dieser Form korrekt berechnet, um die Anzahl der Weiterbildungskurse pro Welle und Person darzustellen?

Vielen Dank im Vorraus.

Liebe Laura,

vielen Dank für deine Nachricht.

Grundsätzlich geht das in die richtige Richtung, aber ein paar Anmerkungen hätte ich dazu:

(1) Ich fange mal mit deiner abschließenden Frage an: Ja, die Berechnung von fe_n kann man so machen. Ist zwar ein wenig umständlich, aber nicht falsch. Ich hätte das so gemacht:

bysort ID_t wave: gen fe_n = _N

Im Prinzip möchtest du ja nur wissen, wie viele Datenzeilen es pro Person und Welle gibt, richtig? Dann kann man den bysort Operator sehr gut verwenden, um auf die interne Nummerierung der Datenzeilen zurückzugreifen. Das ist aber eher persönlicher Stil.

(2) Deine weiteren Syntaxzeilen geben mir allerdings ein paar Rätsel auf, muss ich zugeben. Du generierst zwar technisch vollkommen korrekt jeweils die Start- und Endzeiten der Episoden und schlussendlich dann auch die Gesamtdauer in Monaten. Hier ist vielleicht ein Umstand wichtig zu wissen: Die Episodenzeiten geben hier NICHT an, wie lange ein Kurs gedauert hat, sondern nur, in welcher “Rahmen”-Episode er stattgefunden hat und wann diese begonnen und geendet hat. FurtherEducation ist ja sozusagen ein Sammeldatensatz aus Weiterbildungen aus unterschiedlichen Quelldatensätzen, in denen man noch zahlreiche weitere Informationen über die Weiterbildung finden kann. Das hängt natürlich vollkommen vom jeweiligen Forschungsinteresse ab. Bei der Konstruktion der Weiterbildungsdauern jedoch lohnt es sich, mal ein Beispiel näher zu betrachten, um ein paar wesentliche Dinge zu verstehen: So berichtet eine Person (ID_t 8000345) zum Beispiel, dass sie im Zeitraum vom November 2014 bis Oktober 2016 gleich 4x den Kurs “neue OP-Techniken” absolviert hat (course 901-904) und du berechnest dafür auf Basis der Episodenzeiten Kursdauern von jeweils 120 Monaten. Das liegt aber nur daran, dass die entsprechende Erwerbsepisode, in der diese Weiterbildungskurse berichtet wurden, von 11/2014 bis 10/2016 ging. Um die konkrete Kursdauer für die angegebenen vier Kurse zu berechnen, müsste man hier tatsächlich in den Ursprungsdatensatz dieser Weiterbildungskurse schauen, den du in der Variable tx28100 findest. Für dieses Beispiel finden sich in spCourses (VORSICHT: nicht long, sondern wide-Format") in Summe vier Kurse, die jeweils allerdings nur je 24 Stunden gedauert haben (zu entnehmen t271011_w1 bis t271011_w4). Wenn du also mit den Kursdauern irgendetwas anstellen möchtest und nicht nur, wie deine Frage eigentlich suggeriert, an der Gesamtanzahl an WEiterbildungskursen pro Person pro Welle interessiert bist, müsstest du hier noch ein wenig Aufbereitungsaufwand reinstecken, indem du dir die Zusatzinformationen in den Einzeldatensätzen anschaust.

(3) Die abschließende Zeile duplicates drop ID_t wave, force verstehe ich leider gar nicht. Dadurch reduzierst du deinen Datensatz auf nur eine Datenzeile pro Person und Welle. Häufig machen das Datennutzende, weil sie das Ergebnis per merge mit weiteren Datensätzen zusammenbringen wollen. Hier gehen dadurch jedoch wertvolle Informationen verloren. Und dass du die Zusatzoption force verwendest kann zwei Ursachen haben. Entweder du weißt genau, was du hier tust und warum, dann macht jedoch die Konstruktion der Kursdauern für jede Episode hier keinen Sinn weil du dadurch immer nur diejenige Episode behältst, die in der derzeitigen Datensortierung nach ID_t und wave blockweise die erste ist und alle anderen Weiterbildungskurse wegwirfst. Wenn du nur an fe__n interessiert wärst, wäre das der richtige Weg, aber wie gesagt, dann verstehe ich nicht, wieso du die Kursdauern auch generiert hast. Die andere Option wäre, dass ein reguläres duplicates drop nicht ohne Fehler funktioniert hat und du von der Option force in der Hilfe was gelesen hast und das ohne Fehlermeldung funktioniert hat. Das hoffe ich allerdings nicht.

Zusammenfassend und abschließend kann ich dir nur empfehlen, je nachdem, was du mit den Weiterbildungskursen und -dauern(?) anfangen wilst, nochmals einen Blick ins Datenmanual (https://www.neps-data.de/Portals/0/NEPS/Datenzentrum/Forschungsdaten/SC6/15-0-0/NEPS_SC6_DataManual_15-0-0_en.pdf) zu werfen und dir die Kapitel 4.5.7 und 5.3.6 mal zu Gemüte zu führen und gegebenenfalls auch einen Blick in die Herkunftsfiles der FurtherEducation Einträge zu schauen. Dann wirst du allerdings unter Umständen noch ein paar Gedanken an Datenstrukturen und merging verschwenden müssen. Falls du dazu Fragen hast, helfe ich jederzeit gerne.

Freundliche Grüße,

Benno Schönberger