Subspell

Guten Tag an Alle,

ich möchte Einkommensentwicklungen näher betrachten. Somit ist die Anwendung von
subspell == 0 nicht zielführend, da dadurch nur ein Einkommen den gesamten spell repräsentiert.

Beispiel: [Edit: zensiert]

wird nach dem Merge mit SC6_Biography_D_8-0-0 nur das Einkommen EUR 3330 (supspell=0; spell=10) übernommen:

[Edit: zensiert]

Die Frage ist: Wie kann der Datensatz SC6_spEmp_D_8-0-0 an den Datensatz
SC6_Biography_D_8-0-0 angedockt werden, sodass die verschiedenen Einkommen
in den Wellen 2007/2008 bis 2015/2016 beibehalten werden? Spells vor 2007 sind uninteressant.

Welche Schwierigkeiten könnten im Weiteren beim Anfügen der Datensätze SC6_FurtherEducation_D_8-0-0,
SC6_pTarget_D_8-0-0 und SC6_spFurtherEdu2_D_8-0-0 auftreten?

Vielen Dank im Voraus

Thomas

 

Hallo Thomas!

Vielen Dank für die erneut sehr detaillierte und gut verständlich gestellte Frage. Ich will versuchen, sie im Folgenden zu beantworten.

Du beschreibst hier gerade nicht den Standardfall des Zusammenführens der Episodeninformationen; in der Regel empfehlen wir, einfach die Informationen aus subspell==0 an Biography zu spielen. Das sorgt dafür, dass für jede Episode der harmonisierte Wert (das ist in der Regel der letzbekannte, bei manchen Variablen auch der erstgenannte) angespielt wird.

Nun interessierst du dich aber gerade für die Variation der Einkommensvariable innerhalb einer Erwerbstätigkeit, aber über mehrere Interviewellen hinweg. Exakt zu diesem Zweck sind in den ursprünglichen Episodendaten (hier: spEmp) die einzelnen, zum jeweiligen Erhebungszeitpunkt berichteten Teil-Episoden enthalten. Du hast im Prinzip zwei Wahlmöglichkeiten:

  1. Du verbindest Biography nicht mit dem harmonisierten Desiderat der Teilspells, sondern mit allen Teilspells. Das sorgt allerdings dafür, dass du für eine logische Erwerbsepisode in Biography mehrere Zeilen im Datensatz erhältst: Eine pro Welle, in der zu der Episode berichtet wurde. Vor einer weiterführenden Analyse ist es sehr wahrscheinlich sinnvoll, diese Zeilen wieder auf eine Zeile pro Episode zu reduzieren.
  2. Du berechnest zunächst in spEmp eine (oder mehrere) Variable(n), die die (wie auch immer operationalisierte) Variation des Brutto-Einkommens innerhalb der Erwerbs-Episode enthält. Das Ergebnis schreibst du in alle Zeilen der Episode (also auch die harmonisierte Teil-Episode). Anschließend kannst du wie gehabt Biography mit den harmonisierten Episoden zusammenspielen.

Ich habe beide Lösungsvorschläge einmal im Folgenden skizziert; das ist nur etwas länger geworden, weil ich am Anfang ein fiktives Datenbeispiel dafür erzeuge:

 

// data example for employment episodes
clear
input long ID_t byte subspell long splink byte wave double ts23510_g1 byte ts2311m_g1 int ts2311y_g1 byte ts2312m_g1 int ts2312y_g1
10001 0 260023 8 3400 2 2004  11 2015
10001 1 260023 1  -55 2 2004  7 2008
10001 2 260023 2 3000 2 2004  12 2010
10001 3 260023 3 3100 2 2004  2 2012
10001 4 260023 4 2700 2 2004 9 2012
10001 5 260023 5 3500 2 2004  11 2013
10001 6 260023 6 3200 2 2004  6 2014
10001 7 260023 7 3300 2 2004 9 2015
10001 8 260023 8 3400 2 2004  11 2015
end
label values ts2311m_g1 ts2312m_g1 en1874
label values ts23510_g1 enmiss
tempfile spEmp
save `"`spEmp'"' , replace
// data example for generated biography
clear
input long(ID_t splink) byte(wave sptype startm) int starty byte endm int endy
10001 260023 8 26  2 2004  11 2015
end
label values wave en1871
label define en1871 ///
	1 "2007/2008 (ALWA)" ///
	2 "2009/2010 (1. NEPS-main survey)" ///
	3 "2010/2011 (2. NEPS-main survey)" ///
	4 "2011/2012 (3. NEPS-main survey)" ///
	5 "2012/2013 (4. NEPS-main survey)" ///
	6 "2013/2014 (5. NEPS-main survey)" ///
	7 "2014/2015 (6. NEPS-main survey)" ///
	8 "2015/2016 (7th NEPS-main survey)"
label values sptype en1870
label def en1870 26 "Emp"
label values startm endm en1874
label define en1874 ///
	1 "January" ///
	2 "February" ///
	3 "March" ///
	4 "April" ///
	5 "May" ///
	6 "June" ///
	7 "July" ///
	8 "August" ///
	9 "September" ///
	10 "October" ///
	11 "November" ///
	12 "December"
label define enmiss -55 "Not determinable"
tempfile Biography
save `"`Biography'"'
// end of data example setup; if you want to use real-life NEPS data, uncomment the following two lines,
// and insert the file path to your data copies there
*local spEmp <PATH TO SC6_spEmp>
*local Biography <PATH TO SC6_Biography>

// combine spEmp and Biography the classical way: only "harmonized" episodes
use `"`Biography'"' , clear
generate subspell=0
merge 1:1 ID_t splink subspell using `"`spEmp'"' , keepusing(ts23510_g1 ts2311m_g1 ts2311y_g1 ts2312m_g1 ts2312y_g1) keep(master match) nogenerate
drop subspell
list , sepby(ID_t)
* --> as reported, only the harmonized (== most recent earnings) information is merged

// combine spEmp and Biography more sophisticated, variant 1:
// include all subspell information
use `"`spEmp'"' , clear
drop if subspell==0
tempfile spEmp_reduced
save `"`spEmp_reduced'"'
use `"`Biography'"' , clear
merge 1:m ID_t splink using `"`spEmp_reduced'"' , keepusing(ts23510_g1 ts2311m_g1 ts2311y_g1 ts2312m_g1 ts2312y_g1) keep(master match) nogenerate
list , sepby(ID_t)

// combine spEmp and Biography more sophisticated, variant 2:
// generate earnings variation in spEmp, merge the classical way afterwards
use `"`spEmp'"' , clear
* encode missing values in ts23510_g1
nepsmiss ts23510_g1
* erase earnings information from harmonized subspell in order to not distort the follow-up calculations
* (save in backup variable anyways, to re-insert lateron)
generate ts23510_g1_bak=ts23510_g1 if subspell==0
replace ts23510_g1=.z if subspell==0
* generate any kind of indicator for earnings variation inside of an episode
bysort ID_t splink (subspell) : egen ts23510_sd=sd(ts23510_g1)
bysort ID_t splink (subspell) : egen ts23510_min=min(ts23510_g1)
bysort ID_t splink (subspell) : egen ts23510_max=max(ts23510_g1)
bysort ID_t splink (subspell) : egen ts23510_mean=mean(ts23510_g1)
* re-insert backup value into ts23510_g1
replace ts23510_g1=ts23510_g1_bak if subspell==0
drop ts23510_g1_bak
tempfile spEmp_prepared
save `"`spEmp_prepared'"'
use `"`Biography'"' , clear
generate subspell=0
merge 1:1 ID_t splink subspell using `"`spEmp_prepared'"' , keepusing(ts23510_*) keep(master match) nogenerate
drop subspell
list , sepby(ID_t)

Ich empfehle dir eher Variante 2. Sie behält Biography im ursprünglichen Episodenformat bei.

Zur Anschlussfrage: Das Zusammenfügen mit FurtherEducation und spFurtherEdu2 sollte eigentlich unproblematisch funktionieren; beim Zusammenspielen der Daten zu pTarget sind naturgemäß alle Stolpersteine zu beachten, die immer im Weg legen, wenn man Episodendaten mit Paneldaten zusammenspielen möchte (Stichwort: Mehrere Episoden in einer Welle, daher mehrere Zeilen pro Person und Welle im Episodendatensatz).

Beste Grüße
Bela