SC4: Merge Biography mit pTarget

Liebes NEPS-Forum,

ich arbeite aktuell daran, die beruflichen Bildungsverläufe selbst zugewanderter Gruppen zu analysieren und arbeite mich in das Aufbereiten des Biographiedatensatzes ein. Mir ist nicht ganz klar, wie ich nun den Biographiedatensatz mit pTarget mergen kann.

Folgenden Code verwende ich, um den Biographiedatensatz vorzubereiten.

* set up information for -nepsuse-
* adjust file path to your setup
global NEPSuse_directory "C:\Daten\NEPS SC4\SC4_D_9-1-0\Stata14"
global NEPSuse_cohort SC4
global NEPSuse_version 9.1.0
global NEPSuse_level D
global NEPSuse_language en

* we will need some temporary variables and datasets, so tell Stata
tempfile biography
tempvar expandmarker

* open up Biography dataset
nepsuse `"Biography"' , clear

* bloat up dataset to one observation per month
generate startdate=ym(starty,startm)
generate enddate=ym(endy,endm)
drop if (missing(enddate) , missing(startdate)) // we can't use episodes without date information
generate duration=enddate-startdate+1
expand=duration , generate(`expandmarker')
generate month=.
generate monthnum=.
bysort ID_t splink (`expandmarker') : replace monthnum=_n-1
replace month=startdate+monthnum
format startdate enddate month %tm

* double check and drop temporary variable
assert startdate==month if (!`expandmarker')
assert enddate==month if (!`expandmarker'[_n+1] , missing(`expandmarker'[_n+1]))
drop `expandmarker'

Ich wäre für jeden Tipp dankbar.

Mit freundlichen Grüßen

Robin

 


Edit DS: Syntax-Highlighting eingefügt

Edit DS: Tags hinzugefügt.

Lieber Robin,

das Problem sind die unterschiedlichen Strukturen: Biography ist ein Episodendatensatz, bei pTarget handelt es sich um Paneldaten. Du schreibst leider nicht, welche Daten aus pTarget du ranspielen möchtest. Wenn es sich um letztliche Querschnittsinformationen handelt (z.B. Geburtsland), reicht es, den Datensatz pTarget so zu selektieren, dass du für jede Person nur noch eine Zeile im Datensatz hast, also etwa so (Syntax ungetestet):

nepsuse pTargetCATI, clear
keep if wave==1 // damit ist ID_t der alleinige Identifikator in pTarget
tempfile ptc
save `ptc'

nepsuse Biography, clear
merge m:1 ID_t using `ptc'

Falls du an tatsächlichen Panelinformationen interessiert bist (d.h. Variablen, die sich Welle für Welle ändern können), müsstest du vorher das Interviewdatum bzw. den Monat des Interviews aus dem Methodendatensatz/CohortProfile an pTarget anspielen. Dann kannst du über diesen Monat an deinen Biography ranspielen.

Hoffe das hilft dir!

Beste Grüße,

Tobias

Lieber Tobias,

ganz herzlichen Dank für deine Hilfe. Das hiflt mir ein ganzes Stück weiter.

Zu deiner Frage: Ich möchte die Variablen t40503y und t40503m an Biography anspielen. Somit spiele ich Querschnittsinformationen an den Datensatz heran. Das dürfte mit dem nachfolgenden Code (hoffentlich fehlerlos) soweit geklappt haben. Mich interessieren die Lebensverläufe selbst zugewanderter Personen. Erwarten würde ich, dass der Lebensverlauf erst nach der Zuwanderung erhoben wird (vielleicht liegt auch schon ein Fehler in der Annahme). Es gibt jedoch eine Menge Fälle, bei denen auch schon vor der Zuwanderung Episoden vorliegen.

Ein fiktives Beispiel zum besseren Verständnis: Eine Person wandert 1998 zu, geht jedoch seit 1991 zur Schule.

Wie ist das möglich? Wurde hier der Schulbesuch im Ausland erhoben?

Ganz herzliche Grüße

Robin

********************************************************************************
* Preparation: pTarget	
********************************************************************************

use "${data}\SC6_pTarget_D_${SUF}.dta", clear
keep if wave==1 // damit ist ID_t der alleinige Identifikator in pTarget
keep ID_t splink t40503y t40503m
save "${project}\pTarget.dta", replace

*********************************************************************************
* Step 1: Split into monthly structure: Expand, identify multiple months, reshape

FROM: ***** Kai, Corinna, 24.01.2016 ******     
*********************************************************************************
*Use Biography-Data 
use "${data}\SC6_Biography_D_${SUF}.dta", clear
nepsmiss _all

* Check and adjust data variables
fre starty endy startm endm
egen missy = rowmiss(starty endy)
egen missm = rowmiss(startm endm)
fre missy

* Drop spells with missing date information
drop if missy>0 , missm>0
drop missy missm

*Generate a new starting and ending variable (time format: yearmonth)
gen start = ym(starty,startm)
gen end = ym(endy,endm)
format start end %tm
lab var start "Monthly starting date (months since Jan 1960)"
lab var end "Monthly ending date (months since Jan 1960)"

*Generate and check the duration of each spell 
gen dur = end-start+1
sum dur, detail // no negative values or 0 durations

*Drop unnecessary variables
drop wave splast-endy

*Count number of episodes by person
sort ID_t start end 
by ID_t: gen epinr = [_n]
lab var epinr "Episode number"
fre epinr // up to 62 episodes per person

*Expand data by duration of episodes
sort ID_t start end
expand dur
sort ID_t epinr

*Counter for month number by person
by ID_t epinr: gen monnr = [_n]

*Generate a month variable containing each month of episodes
gen month = start+monnr-1

*Counter for multiple months
*For similar months, first sort by module (sptype) and then by spell number
sort ID_t month sptype splink
by ID_t month: gen monthnr = [_n]

*Check and drop strange cases
fre monthnr // maximum 15 similar spells, but only some cases with >6 spells
list if monthnr>6 // only one person --> errors in biography: see biography-file
drop if ID_t==8007327 
drop monthnr
*NOTE: if you work with more recent SUF-versions, there might be more than 
*6 parallel events for a month. In this case syntax structure has to be modified 
*(e.g. lines 284-286) 
		 
*For improving usability, sort information of multiple months 								
*sort order: 
*a) dominant event prior to side event
*b) Spell types, which allow no parallel events prior to others

*First recode sptype in a new order 
recode sptype 22=2 23=4 24=3 25=1 26=8 27=5 29=6 30=7 99=9, gen(spsort)
*Then order first by a) and then by b) 
sort ID_t month spms spsort splink 
drop spsort
by ID_t month: gen monthnr = [_n] 

********************************************************************************
* Step 2: Merge information from p-datasets 
********************************************************************************

merge m:1 ID_t using "${project}\pTarget.dta",
nepsmiss t40503y t40503m

* Check and adjust data variables

egen misszuwy = rowmiss(t40503y)
egen misszuwm = rowmiss(t40503m)
fre misszuwy

* Drop spells with missing date information
drop if misszuwy>0 , misszuwm>0
drop misszuwy misszuwm

gen zuwstart = ym(t40503y,t40503m)
format zuwstart %tm
lab var zuwstart "Monthly starting immigration date (months since Jan 1960)"

save "${project}\sc6bio.dta", replace



 

 

Lieber Robin,

vielen Dank für die umfangreiche Syntax, ich habe sie jetzt nicht überprüft, sie sieht aber sehr vernünftig aus! Deine Frage beantwortest du dir ja schon selbst: Lebensverlaufsepisoden in der SC6 wurden/werden retrospektiv erfasst (am Zeitpunkt des Interviews) und sind somit unabhängig vom Datum der Zuwanderung.

Vielleicht noch ein Hinweis: Wenn du die Variablen t40503y/m mit wave kreuztabellierst, siehst du, dass es auch noch Fälle in anderen Wellen gibt, nämlich in Welle 2 (Nacherhebung) und Welle 4 (Aufstockung). Das ist auch eine nicht zu vernachlässigende Population. Wahrscheinlich willst du diese auch noch mitnehmen? Einfachster Weg wäre z.B.

use pTarget.dta
keep ID_t wave t40503y t40503m
drop if t40503m==-54 // entferne "designbedingt fehlend"
isid ID_t // Datensatz ist jetzt ein Querschnitt
fre wave // jedoch kommt die Information aus verschiedenen Wellen
drop wave

Alles Gute!

Lieber Tobias,

eine Rückfrage hätte ich: Ich arbeite nun ebenfalls mit der SC4 und versuche dort den Generationsstatus über die Variable t400500_g1 an das Masterfile (SC4_Biography_D_${SUF}.dta) anzuspielen. Jedoch gibt es viele designbedingte Missings bei dieser Variable, sodass bei vielen Befragten keine Informationen über den Generationsstatus vorliegen. Gibt es eine andere "ertragreichere" Alternative? 

Folgenden Befehl verwende ich fürs Aufbereiten und Mergen.

*Aufbereiten pTarget Datensatz
use "${data}\SC4_pTarget_D_${SUF}.dta", clear
keep ID_t wave t700031 t70004m t70004y t400500_g1
isid ID_t wave
drop if t400500_g1==-54 /Ausschluss designbedingter Missings
save "${project}\pTarget.dta", replace


*Hier wird der Biografie-Datensatz aufbereitet
*...........


*Merge pTarget Datensatz
merge m:1 ID_t wave using "${project}\pTarget.dta",
nepsmiss t700031 t70004m t70004y t400500_g1
drop _merge

 

Lieber Robin,

Designbedingt fehlend sind viele Fälle nur deswegen, weil in späteren Wellen die Variable nicht mehr erhoben worden ist. Die Zeile 

drop if t40503m==-54 // entferne "designbedingt fehlend"

ist in meinem Beispiel oben nur der schnellste Weg, dafür Sorge zu tragen, dass es nur noch eine Zeile pro Befragter gibt. Bei mehreren Variablen kommst du so einfach nicht dran, da ja die Missings (wahrscheinlich) unterschiedlich verteilt sind. Entweder, du führst diesen Schritt für jede Variable einzeln aus, speicherst jeweils einen Datensatz und mergest dann diese 3 Datensätze an den Arbeitsdatensatz. Da du aber in deinem Beispiel wieder an pTarget mergest, gehe ich davon aus, du hättest gerne einen pTarget-Datensatz, in dem die Missings in späteren Wellen aufgefüllt sind. Das geht z.B. auch dadurch, indem du die Werte einer früheren Welle in eine spätere reinkopierst (sofern vorhanden):

use pTarget.dta, clear
tab t400500_g1 wave, miss // die Verteilung zeigt die meisten Werte in Welle 1
foreach var in t700031 t70004m t70004y t400500_g1 {
   // der Befehl nepsmiss wandelt negative Werte in Stata-Missings um
   // ohne ihn funktioniert es auch, dann muss nur die Filterbedingung unten
   // (if ...) angepasst werden
   nepsmiss `var' 

   // sortiere nach ID und Welle und ersetze innerhalb dieser Gruppe
   // einen fehlenden Wert durch den Wert aus der darüberliegenden ("_n-1") Zeile
   bysort ID_t (wave): replace `var'=`var'[_n-1] if missing(`var')
}
tab t400500_g1 wave, miss // vorhandene Werte wurden in spätere Wellen kopiert

Ich hoffe das hilft!

Tobias

Hallo Robin, hallo Tobias,

zuallererst möchte ich mich bei euch für die hilfreieche Diskussion inklusive Code in diesem Thread bedanken. Euer kleiner Austausch hat mir in meiner Datenaufbereitung der SC4 bereits jetzt sehr viel geholfen.

Eine Frage habe ich dann allerdings doch: Tobias, du schreibst weiter oben in diesem Thread, dass man "das Interviewdatum bzw. den Monat des Interviews aus dem Methodendatensatz/CohortProfile an pTarget anspielen" muss um dann in einem nächsten Schritt den Datensatz pTarget an den Datensatz Biography anspielen zu können. Ich hoffe das habe ich richtig verstanden.

Jetzt meine Frage: Hast du, oder du Robin, für diesen Schritt vielleicht einen Stata Code für mich oder einen Ausschnitt damit ich die Vorgehensweise nachvollziehen und selbst replizieren kann?

Edit: D.h. ich möchte nicht wie im obigen Beispiel die Querschnittsinformationen aus pTarget an den Biography Datensatz anspielen, sondern ich beabsichtige den umgekehrten Weg zu gehen und Informationen aus dem Biography Datensatz (bzw. dort angespielten Spellfiles) in den pTarget Datensatz zu transferieren. Mein Ziel ist es die Panelstruktur zu behalten.

Ihr würdet mir damit einen großen Dienst erweisen und mir helfen die Vorgehensweise zu verstehen.

Beste Grüße,

Jonas

Hi Jonas, willkommen im Forum!

Deine Frage ist leider nicht so einfach zu beantworten, da es sehr stark davon abhängt, welche Variablen dich genau interessieren und was du damit machen möchtest. Ganz abstrakt beschrieben ist das Problem hier das Vorhandensein von sowohl Zeitpunkten als auch Zeitspannen, die sich eben nicht eins zu eins aufeinander abbilden lassen.

Ich versuche das mal an einem Beispiel zu verdeutlichen, entschuldigung, es wird etwas länger...

Datensatz A ist ein Längsschnittdatensatz im Wellenformat (also vergleichbar mit unseren Datensätzen pTarget, CohortProfile, etc.). L1 ist das Längschnittsmerkmal Familienstand, zur Verfügung steht neben der Wellenvariable wave auch noch der Interviewzeitpunkt int (als Jahr, Monat, Tag).


clear
input id wave inty intm intd       str20 L1
       1    1 2017    9   23        "ledig"
       1    2 2018    6   11  "verheiratet"
       2    1 2017    9   21        "ledig"
       2    2 2018    5   29   "geschieden"
end
tempfile A
save `A'

Datensatz B ist ein Datensatz im Episodenformat, vergleichbar also mit Biography und den Spellmodulen (spEmp, etc.). Neben dem Episodenidentifikator spell gibt es auch noch den Start und Endmonat der jeweiligen Episode, außerdem das Episodenmerkmal S1 Beschäftigungsverhältnis.


clear
input id spell starty startm endy endm     str20 S1
       1     1   2017      1 2017    7   "vollzeit"
       1     2   2017      8 2017   11 "arbeitslos"
       1     3   2017     12 2018    6   "teilzeit"
       2     1   2016     11 2017    4   "vollzeit"
       2     2   2017      5 2018    6   "vollzeit"
 end
tempfile B
save `B'

Die Frage ist nun: Wie bekomme ich die beiden Datensätze zusammengespielt bzw. die Information in beiden konsolidiert? Um das zu erreichen gibt es nur leider viele unterschiedliche Herangehensweisen, und je nachdem, wie die weitere Analyse aussieht, muss man ggf. Annahmen und Entscheidungen anders treffen. Ein paar Beispiele (ohne Anspruch auf Vollständigkeit!):

1. Der einfachste Weg ist wahrscheinlich, die Daten auf Querschnitte zu verdichten. Möglicherweise ist das ja für die eigene Analyse ausreichend. Im Beispiel oben z.B. nur die Antwort auf die Frage "War die Person jemals verheiratet" bzw. "War die Person jemals arbeitslos"

 

** erzeuge einen Querschnittsdatensatz aus A
use `A', clear
** Der Wert L1=="verheiratet" ist entweder 1 (falls verheiratet)
** oder 0 (falls nicht verheiratet). 
** Die Funktion 'bysort id: egen .. = max(..)' erzeugt eine Variable,
** die das Maximum dieses Wertes innerhalb der id beinhaltet (in allen Zeilen)
bysort id: egen married=max(L1=="verheiratet")
list
/*
  +-----------------------------------------------------------------+
  , id   spell   starty   startm   endy   endm           S1   unemp ,
  ,-----------------------------------------------------------------,
  ,  1       1     2017        1   2017      7     vollzeit       1 ,
  ,  1       2     2017        8   2017     11   arbeitslos       1 ,
  ,  1       3     2017       12   2018      6     teilzeit       1 ,
  ,  2       1     2016       11   2017      4     vollzeit       0 ,
  ,  2       2     2017        5   2018      6     vollzeit       0 ,
  +-----------------------------------------------------------------+
*/
keep id married
duplicates drop
list
tempfile A_QS
save `A_QS'

** erzeuge einen Querschnittsdatensatz aus B
use `B', clear
bysort id: egen unemp=max(S1=="arbeitslos")
list
keep id unemp
duplicates drop
list
tempfile B_QS
save `B_QS'

** beide Datensaetze zusammenspielen
use `A_QS', clear
merge 1:1 id using `B_QS', nogen
list
/*
  +----------------------+
  , id   married   unemp ,
  ,----------------------,
  ,  1         1       1 ,
  ,  2         0       0 ,
  +----------------------+
*/

 

2. Die Daten der zum jew. Interviewzeitpunkt gültigen Episode an den Welleneintrag des Längschnittdatensatz anspielen (also die Information aus B rauspicken, die zur entsprechenden Zeile in A passt).

use `B', clear
** erzeuge Stata-Datumsvariablen
gen sdate = ym(starty, startm)
gen edate = ym(endy, endm)
format sdate edate %tm
** berechne die Dauer einer Episode (in Monaten)
gen dur   = edate - sdate +1
list, noobs
** erzeuge fuer jeden Monat eine Zeile
expand dur
** erzeuge das Datum dieses Monats
bysort id spell: generate curdate = sdate + _n-1
format curdate %tm
list in 1/8, sepby(id spell) noobs
/*
  +--------------------------------------------------------------------------------------------+
  , id   spell   starty   startm   endy   endm           S1    sdate     edate   dur   curdate ,
  ,--------------------------------------------------------------------------------------------,
  ,  1       1     2017        1   2017      7     vollzeit   2017m1    2017m7     7    2017m1 ,
  ,  1       1     2017        1   2017      7     vollzeit   2017m1    2017m7     7    2017m2 ,
  ,  1       1     2017        1   2017      7     vollzeit   2017m1    2017m7     7    2017m3 ,
  ,  1       1     2017        1   2017      7     vollzeit   2017m1    2017m7     7    2017m4 ,
  ,  1       1     2017        1   2017      7     vollzeit   2017m1    2017m7     7    2017m5 ,
  ,  1       1     2017        1   2017      7     vollzeit   2017m1    2017m7     7    2017m6 ,
  ,  1       1     2017        1   2017      7     vollzeit   2017m1    2017m7     7    2017m7 ,
  ,--------------------------------------------------------------------------------------------,
  ,  1       2     2017        8   2017     11   arbeitslos   2017m8   2017m11     4    2017m8 ,
  +--------------------------------------------------------------------------------------------+
 */
tempfile B_exp
save `B_exp'

use `A', clear
** erzeuge Stata-Datumsvariable
gen curdate = ym(inty, intm)
format curdate %tm
** spiele die Information aus dem monatsgenauen Datensatz von oben an
merge 1:m id curdate using `B_exp', nogen keep(master match) keepusing(S1)
list, noobs
tempfile A_S1
save `A_S1'

 

3. Die Episodendaten in B mit Daten aus A anreichern. Hier fangen die Probleme an. Hierzu muss ich die Episode identifizieren, in deren Spanne das Interviewdatum liegt. Aber: Was bedeutet das für Episoden, für die kein Interviewzeitpunkt vorliegt (im Beispiel oben spell 1)? Was bedeutet das für den Zeitraum, der zwar innerhalb der identifizierten Episode, aber nicht genau auf dem Interviewzeitpunkt liegt (Im Beispiel oben die Monate August, Oktober, November 2017 in Episode 2 von id 1)? Fehlen offensichtliche Daten und wie kann ich damit umgehen (im Beispiel oben: Wann war Person 2 verheiratet?). Mit der nachfolgende Syntax kann man sich das anschauen, allerdings sind jetzt die Daten weder im Panel- noch im Episodenformat (sondern monatsgenau), und müssen, so man denn mit einem dieser Format arbeiten möchte, erst wieder zusammengefasst werden.


use `B_exp', clear
merge m:1 id curdate using `A_S1', nogen keepusing(L1)
list

 

Kombinationen dieser unterschiedlichen Ansätze sind natürlich auch möglich. So macht es wahrscheinlich in vielen Fällen Sinn (und so verstehe ich deine Frage auch), Daten aus den Spellmodulen soweit zu reduzieren bzw. zu aggregieren (siehe 1.), dass sie problemlos an Längsschnitt- oder Querschnittsdaten angespielt werden können (siehe 2.).

Hoffe das hilft dir weiter!

Tobias

Hallo Tobias, 

da du mir bereits mit deinem vorherigen Post extrem weiter geholfen hast, hoffe ich, dass du mir noch eine weitere Frage beantworten wirst. Ich glaube nämlich, dass ich deinen Input gegenwärtig sehr gut gebrauchen kann. Entschuldigung, es wird etwas länger...

Was habe ich vor: Ich möchte zuallererst herausfinden ob Schülerinnen und Schüler zum Erhebungszeitpunkt (d.h. 3. Welle) in einer allgemeinbildenden Schule waren um dann in einem nächsten Schritt zu bestimmen wer von diesen Schülerinnen und Schüler in die gymnasiale Oberstufe gewechselt ist und wer einen anderen Bildungsweg eingeschlagen hat. Was der oder die Schüler*in nach Verlassen der allgemeinbildenden Schule macht ist für mich irrelevant. Ich möchte quasi eine Dummy  Variable (0 "hat die Schule verlassen"   1 "ist in die gymnasiale Oberstufe gewechselt") die nur unterscheided ob ein Schüler bzw. eine Schülerin nach der 10. Klasse unmittelbar mit der Schule weitermacht oder nicht.

Ich bin bisher davon ausgegangen, dass ich dafür die Informationen aus den Episodendatensatz spSchool an den Biographiedatensatz heranspiele, die für mich relevanten Variablen herauspicke – ich habe jetzt an ts11204 und ts11209 gedacht,  den Datensatz speicher und ihn anschließend mit dem Paneldatensatz CohortProfile merge.

Folgendes habe ich diesbezüglich unternommen: Erstens, Datensatz spSchool mit Biographiedatensatz mergen, Stata-Datumsvariable erzeugen, Episodendauer berechnen, monatsgenaue Abbildung erstellen und die einzelnen Monate datieren. Quasi alle Schritte, die du mir in deinem letzten Post mit an die Hand gegeben hast.

 

*-------------------------------------------------------
* Schritt 1: spSchool & Biography mergen u. aufbereiten
*-------------------------------------------------------

// Datensatz spSchool laden
local spvar ID_t wave splink subspell ts11209 ts11204 tf11218
use `spvar' using "${Data}/SC4_spschool_D_9-1-0.dta", clear
keep if subspell == 0	// subspells löschen
drop subspell			// variable subspell droppen


// Merge mit Biographiedatensatz
merge 1:1 ID_t splink using "${Data}/SC4_Biography_D_9-1-0.dta", ///
	keep(match) keepusing(splast starty startm endy endm sptype) nogen // -> 34,489 matches
keep if sptype == 22	// nur School Spells behalten
keep if splast == 2		// nur abgeschlossene Spells verwenden
drop sptype splast


// eruzeuge Stata-Datumsvariable
gen sdate = ym(starty, startm)
gen edate = ym(endy, endm)
format sdate edate %tm
drop if (missing(edate) , missing(sdate)) 


// berechne die Dauer einer Episode
gen dur = edate - sdate +1
list ID_t starty startm sdate endy endm edate dur in 1/20, sepby(ID_t) noobs


// erzeuge für jeden Monat eine Zeile
expand dur


// erstellte Monate datieren
bysort ID_t splink: generate curdate = sdate + _n-1
format curdate %tm
list ID_t starty startm sdate endy endm edate dur curdate in 1/100, ///
	sepby(ID_t splink) noobs


// Duplikate entfernen
* ...


// Datensatz speichern
save "${Prepdata}/Biodata.dta", replace

 

Zweitens, den Datensatz CohortProfile mit dem Methodendatensatz TargetMethods verschmolzen um so die Merge-Variable curdate im Datensatz CohortProfile erstellen zu können. Anschließend habe ich dann den zuvor bearbeiteten Datensatz Biodata.dta mit dem Datensatz CohortProfile gemerged.

 


// Datensatz CohortProfile laden
local cohortvar ID_t wave t723080_g1 tx80106
use `cohortvar' using "${Data}/$CohortProfile", clear
drop if tx80106==7	// Sonderschüler*innen droppen


// Merge mit TargetMethods
merge 1:1 ID_t wave using "${Data}/SC4_TargetMethods_D_9-1-0.dta", ///
	keep(3) nogen keepusing(intm inty)


// erzeuge Stata-Datumsvariable
gen curdate = ym(inty, intm)
format curdate %tm
drop if missing(curdate)



*-----------------------------------------------------------------
* Schritt 3: Informationen aus Biodata an CohortProfile anspielen
*-----------------------------------------------------------------

// Merge CohortProfile mit Biodata
merge 1:m ID_t curdate using "${Prepdata}/Biodata.dta", nogen keep(1 3) ///
	keepusing(ts11209 ts11204 tf11218)
list ID_t wave

 

Was ich allerdings nicht verstehe und wobei ich deine Hilfe bzw. deinen Input bräuchte ist folgendes:

  1. Wieso verliere ich so viele Fälle? 
    Im Grunde genommen bin ich an den Variablen im Datensatz pTarget und pParent interessiert. Wenn ich den Datensatz pTarget mit dem Datensatz CohortProfile merge habe ich 55,158 Matches. Wenn ich den Datensatz CohortProfile mit TargetMethods merge habe ich 59,668 matches. Fälle die sowohl aus dem Datensatz TargetMethods als auch pTarget gematcht werden können sind lediglich noch 6,164 Fälle. Wenn ich zusätzlich berücksichtige dass ich Informationen aus dem pTarget Datensatz brauche, dann befürchte ich dass ich letztlich überhaupt keine Fälle mehr habe. Oder mach ich in meinen Gedanken und in meiner Vorgehensweise irgendwo einen Fehler den ich nicht sehe?
  2. Hast du eine Idee wie ich die von mir gewünschte Dummy Variable am besten aus dem Datensatz spSchool herausziehen/aggregieren kann. Ich bin im Moment nämlich ehrlich gesagt ein bisschen ratlos. Wahrscheinlich ist das Problem relativ einfach nur ich sehe gerade die Lösung nicht.

Beste Grüße und nochmal danke für deine Hilfe

Jonas

Hi Jonas!

Du stolperst hier über unser Erhebungsdesign, welches leider in den Daten immer noch nicht so gut dokumentiert ist, wie es seien sollte:

Solange die Schüler noch in die ursprünglich gesampelte Klasse gehen (wir sprechen in unseren Daten dann von "Hauptfeld") werden sie in der Schule via PAPI befragt. Erst sobald sie diese Klasse verlassen haben (aus unterschiedlichen Gründen, z.B. Abschluss, Schulwechsel, Schulartwechsel,Wiederholen, etc.) werden sie individuell befragt; dann zum Großteil via Telefon (CATI). Siehe Variable tx80230 "Panel Frame" in CohortProfile.

Aus diesen CATI-Interviews resultieren u.a. die Datensätze TargetMethods und spSchool. Du hast also in diesen Dateien nur Daten von Personen, die so lange Teil der Befragung waren, dass sie an einem CATI teilgenommen haben. Im Datensatz pTarget hingegen sind die Daten aus den PAPI-Befragungen sowie Inhalte aus den Online-Erhebungen (CAWI) und CATI-Befragungen, die dazu passen (also z.B. die Panelerhebung von bestimmten Inhalten, die PAPI gestartet wurden und dann im CAWI weitererhoben wurden). Die Überschneidung TargetMethods/pTarget existiert also nur dann, wenn in derselben Welle für eine Person sowohl PAPI/CAWI als auch CATI Daten vorliegen. Darum diese relative geringe Fallzahl.

Für deine Fragestellung ist das aber ja zunächst nicht so entscheidend, weil du ja weniger am Panelverlauf direkt interessiert bist. Wenn ich es richtig verstehe, benötigst du zwei Querschnittsinformationen:
a) Welche Schulart besuchte das Kind in der neunten Klasse?
b) Wann besucht das Kind nicht mehr diese Schule?

Ich würde versuchen, für diese beiden Fragestellung jeweils einen Querschnittsdatensatz zu erzeugen.

spSchool zu verwenden ist sicher ergiebig, leider hast du hier das o.g. PAPI/CATI-Problem, d.h., nur Schüler, die am CATI mitgemacht haben, haben ihre Schulhistorie hier berichtet. Du könntest außerdem noch spParentSchool zu Rate ziehen, das ist die von den Eltern berichtete Schulgeschichte. Die hingegen ist allerdings nur vorhanden, sofern die Eltern an der Befragung teilgenommen haben. Starten könntest du ja erstmal mit den Daten aus CohortProfile. Hier gibt es z.B. die Variablen tx80234 "Hauptfeld: Klassenstufe" und t723080_g1 "aktuelle Schulform (konstruiert)".

Liebes NEPS Forum,

mir ist jetzt noch nicht so ganz klar wie ich Panelinformationen aus Education an das Masterfile Biography anspielen kann:

Variable aus Datensatz Education: tx28101

Ich habe das Biography File im Monatsformat aufbereitet und möchte wissen, in welchem Monat ein Befragter welchen Casmin hat.

Vielen Dank für die Hilfe.