Hallo Herr/Frau Hillerich!
Sorry, dass es mit der Antwort so lange gedauert hat. Die Information aus dem pTargetCATI und spSchool stammen nicht zwingenderweise aus der gleichen Befragung. Sofern eine Befragung schon länger zurückliegt, stellen sich in einer Interviewsituation womöglich Erinnerungsfehler ein, die umso stärker zum Tragen kommen, je länger ein Ereignis zurückliegt. Das ist nur eine Annahme, die ich empirisch nicht belegen kann.
Ich würde.dieser Annahme folgend. die letzte Beobachtung als reliabler erachten. Zugleich würde ich die Missings mit den gültien Werten der jeweils anderen Datenquelle auffüllen.
Ich kommen dann auf ca. 10% unterschiedliche Angaben bzgl. des Schulabschlusses im Jahr 2011.
Anbei habe ich noch etwas Syntax gebastelt.
Ein Problem gilt es dabei jedoch zu beachten: Es ist sehr schwierig bis unmöglich die beiden Datenquellen zu konsolidieren. Falschangaben in einem Datensatz können also nicht einfach durch einfache Plausibilitätschecks mit Hilfe der anderen Datenquelle beseitigt werden. Dazu müsste man auch die anderen Abschlussjahrgänge betrachten. Das ist jedoch mit viel Aufwand verbunden - die Rendite ist dabei aber unklar. Das sollten Sie bei Ihrem Paper erwähnen.
Ich hoffe, wir konnten Ihnen etwas weiterhelfen.
Viele Grüße.
Dietmar Angerer
// Dateipfad als local
local datapath <PATH/TO/SUF_DATA>
// benötigte Variablen aus spSchool laden
use ID_t splink subspell ts11209 wave using ///
"`datapath'/SC4_spSchool_D_9-1-0.dta", clear
keep if subspell==0 // subspells löschen
rename wave wave_sp // waveindikator umbenenen
drop subspell
merge 1:1 ID_t splink using /// merge mit Biography
"`datapath'/SC4_Biography_D_9-1-0.dta", ///
keep(match) keepusing(splast endy endm) nogen // nur matches behalten
keep if inrange(ts11209,1,7) // nur Personen mit Abschlüssen behalten
keep if endy==2011 // nur Personen mit Spellende in 2011 behalten
assert splast==2 // überprüfen, ob nur abgeschlossene Ereignisse vorhanden sind
// Person hat im Jahr 2011 mehrere Abschlüsse erreicht
// Duplikate löschen, wenn Unterschiede nicht in ID_t endy ts11209 splast
duplicates drop ID_t endy ts11209 splast, force
capture: isid ID_t // checken, ob ID_t eine unique ID ist
if _rc==459 di as error "ID_t is not a unique identifier" // >> nein
// 3 Personen haben VERSCHIEDENE Abschlüsse in 2011 erlangt
duplicates report ID_t
// meine Annahme: letzten Abschluss behalten
tempvar last_month
bysort ID_t: egen `last_month'=max(endm)
keep if `last_month'==endm
drop `last_month'
// checken, ob ID_t nun unique:
isid ID_t // >> keine Fehlermeldung, ist unique
preserve // spSchool-Datensatz temporär speichern um später wieder zu verwenden
use ID_t tf11209 tf1112y wave using "`datapath'/SC4_pTargetCATI_D_9-1-0.dta", clear
rename wave wave_cati
keep if inrange(tf11209,1,8) // nur Personen mit Abschlüssen behalten
keep if tf1112y==2011 // nur Personen mit Abschluss in 2011 behalten
isid ID_t
tempfile abschlCATI // temporären CATI-Datensatz definieren
save "`abschlCATI'", replace // temporären CATI-Datensatz speichern
restore // wieder temporären und bearbeiteten spSchool-Datensatz laden
merge 1:1 ID_t using "`abschlCATI'", nogenerate // temp. CATI-Datensatz anspielen
tab tf11209 ts11209 if tf1112y==endy, mis
count if tf11209==ts11209 & tf1112y==endy // 1027 Personen mit gleichem Abschluss
count if tf11209!=ts11209 & tf1112y==endy // 128 Personen mit unterschiedl. Abschluss
format %30.0g tf11209 ts11209
// Harmonisierte Schulabschluss-Variable
gen absch_ha=ts11209 if ((wave_sp > wave_cati) & !missing(ts11209) & !missing(wave_sp))
replace absch_ha=tf11209 if ((wave_cati > wave_sp) & !missing(tf11209) & !missing(wave_cati))
replace absch_ha=tf11209 if (!missing(tf11209) & missing(ts11209))
replace absch_ha=ts11209 if (!missing(ts11209) & missing(tf11209))
label variable absch_ha `"`: variable label ts11209' (harmonized)"'
label values absch_ha `: value label ts11209'