* Encoding: windows-1252. * Diese Datei: panel_1213_v2.sps (06.02.2018) * https://www.gesis.org/missy/materials/MZ/tools/panel/panel_1213_v2.sps * Dateiformat: Dos/Windows. * Zeichensatz: Windows-1252. * Diese Datei: panel_1213_v2.sps * https://www.gesis.org/missy/materials/MZ/tools/panel/panel_1213_v2.sps * Dateiformat: Dos/Windows. * ============================================================================== * Zusammenführung der Daten Mikrozensus Scientific Use File 2012 und 2013 * zu einem Panel * * Siehe * Herter-Eschweiler/Schimpl-Neimanns (2018): Möglichkeiten der Verknüpfung von * Mikrozensus-Querschnittserhebungen ab 2012 zu Panels. Bonn/Mannheim. * https://www.gesis.org/missy/files/documents/MZ/panelbildung_suf2012.pdf * * 3. Panelbildung * 3.2 Version 2 (Quersschnittorientierung) * Für die Analyse von Netto-Veränderungen oder Kumulation von Querschnittsdaten * * ------------------------------------------------------------------------------ * Programmstruktur * * 1 Aufbereitung SUF 2012 * Erstellung des Personenidentifkators mit Kennung des Jahresüberhangs * Prüfung auf doppelte IDs * * 2 Aufbereitung SUF 2013 * Erstellung des Personenidentifkators ohne Kennung des Jahresüberhangs * Prüfung auf doppelte IDs und Datenbereinigung * * 3 Files untereinander Stellen (long format) * Ermittlung der Anzahl der Sätze mit Angaben zu 2012 oder 2013 pro idpersx * * 4 Files nebeneinander stellen (wide format) * * 5 Hinweis auf zusätzliche Identifikatoren * * Programmautoren: Robert Herter-Eschweiler, Bernhard Schimpl-Neimanns * * =============================================================================. * IBM SPSS Statistics 24.0.0.1 . * Falls SPSS einer fruehreen Version verwendet wird, kann die set summaray * Anweisung auskommentiert werden. set summary=none basetextdirection=automatic unicode=no tablerender=light OLang=German Locale=German TLook=None printback=On TFit=Both. set decimal dot. set length none. set header off. * Arbeitsverzeichnis eintragen, z.B: cd "c:\temp" . cd "". * 1 Aufbereitung SUF MZ 2012, Variablenauswahl. get file = '' /keep = EF1 /* Bundesland EF3 /* Nr. des Auswahlbezirks (systemfrei) EF4 /* Nr. des Haushalts im Auswahlbezirk (systemfrei) EF5b /* Jahresüberhang aus dem Vorjahr EF12 /* Berichtsquartal EF63 /* Personennummer EF5a /* Nr. der Person im Haushalt (systemfrei) EF30 /* Bevölkerung: Haupt- oder Nebenwohnsitz EF31 /* Bevölkerung: Privathaushalte EF45 /* Zuzug (i. d. letzten 12 Monaten) EF46 /* Geschlecht EF47 /* Geburtsjahr EF451 /* Selber Wohnsitz (vor einem Jahr) (FB) EF952 /* Standardhochrechnungsfaktor Jahr (in 1000) - neuer Hochrechnungsrahmen ID /* Identifikationsnummer */ . Dataset Name $DataSet WINDOW=FRONT. * Deklaration fehlender Werte aufheben. missing values all(). rename variables id = id12. * Vorbereitung der Identifkatoren für das Zusammenführen der Querschnitte. string s1 (A2) s3 (A6) s4 (A3) s5b (A2) s12 (A2) s63 (A2) . compute s1 = string(ef1,n2). compute s3 = string(ef3,n6). * Führende Null umsetzten. do if (ef4>=0). compute s4 = string(ef4,n3). else if (ef4=-7). compute s4 = "0-7". end if. compute s5b = string(ef5b,n2). compute s12 = strings(ef12,n2). do if (ef63>=0). compute s63 = string(ef63,n2). else if (ef63=-7). compute s63 = "-7". else if (ef63=-8). compute s63 = "-8". end if. execute. * ID Person mit Kennungen für Jahresüberhänge . * Verkettung der Ordnungsnummern zum alphanumerischen Indikator idpersx. string idpersx (A17). compute idpersx = concat(char.rpad(s1,2),char.rpad(s3,6),char.rpad(s4,3), char.rpad(s5b,2), char.rpad(s12,2), char.rpad(s63,2)). var lab idpersx "ID Person (ef1 ef3 ef4 ef5b ef12 ef63)". exe. * Doppelte IDs ? . sort cases by idpersx. aggregate outfile = * mode = addvariables /break idpersx /n_idpersx = nu(idpersx). fre n_idpersx. * ok. delete variables n_idpersx. compute file = 1. formats file (f1). var lab file "Datenquelle". val lab file 1 "2012". sort cases by file idpersx. save outfile = '' /compressed. * n = 511.946. * =============================================================================. * 2 Aufbereitung MZ SUF 2013, Variablenauswahl . get file = '' /keep = EF1 /* Bundesland EF3 /* Nr. des Auswahlbezirks (systemfrei) EF4 /* Nr. des Haushalts im Auswahlbezirk (systemfrei) EF5b /* Jahresüberhang aus dem Vorjahr EF12 /* Berichtsquartal EF63 /* Personennummer EF5a /* Nr. der Person im Haushalt (systemfrei) EF30 /* Bevölkerung: Haupt- oder Nebenwohnsitz EF31 /* Bevölkerung: Privathaushalte EF45 /* Zuzug (i. d. letzten 12 Monaten) EF46 /* Geschlecht EF47 /* Geburtsjahr EF451 /* Selber Wohnsitz (vor einem Jahr) (FB) EF952 /* Standardhochrechnungsfaktor Jahr (in 1000) - neuer Hochrechnungsrahmen ID /* Identifikationsnummer */ . Dataset Name $DataSet WINDOW=FRONT. * n = 525787 . * Deklaration fehlender Werte aufheben. missing values all(). rename variables id = id13. * Vorbereitung der Identifkatoren für das Zusammenführen der Querschnitte. string s1 (A2) s3 (A6) s4 (A3) s5b (A2) s12 (A2) s63 (A2) . compute s1 = string(ef1,n2). compute s3 = string(ef3,n6). * compute s4 = string(ef4,n3). * Führende Null umsetzen. do if (ef4>=0). compute s4 = string(ef4,n3). else if (ef4=-7). compute s4 = "0-7". end if. do if (ef5b>=0). compute s5b = string(ef5b,n2). else if (ef5b=-7). compute s5b = "-7". end if. compute s12 = strings(ef12,n2). do if (ef63>=0). compute s63 = string(ef63,n2). else if (ef63=-7). compute s63 = "-7". else if (ef63=-8). compute s63 = "-8". end if. execute. * ID Person incl. Kennungen für Jahresüberhänge . * Verkettung der Ordnungsnummern zum alphanumerischen Indikator idpersx. string idpersx (A17). compute idpersx = concat(char.rpad(s1,2),char.rpad(s3,6),char.rpad(s4,3), char.rpad(s5b,2),char.rpad(s12,2),char.rpad(s63,2)). var lab idpersx "ID Person (ef1 ef3 ef4 ef5b ef12 ef63)". exe. sort cases by idpersx. * Doppelte IDs ? . sort cases by idpersx. aggregate outfile = * mode = addvariables /break idpersx /n_idpersx = nu(idpersx). fre n_idpersx. * ok . delete variables n_idpersx. compute file = 2. var lab file "Datenquelle". val lab file 1 "2012" 2 "2013". formats file (f1). sort cases by idpersx. save outfile='' /compressed. * n = 525.787 . * =============================================================================. * 3 Files untereinander Stellen (long format) . NEW FILE. DATASET NAME $DataSet WINDOW=FRONT. ADD FILES file = '' /file = ''. execute. * n = 1.037.733 . * Satznummer pr idpersx . sort cases by idpersx file. if idpersx ne lag(idpersx,1) p1 = 0. compute p1 = p1 + 1. leave p1. var lab p1 "Satznummer zu idpersx". formats p1 (f2). execute. * Für jede idpersx Anzahl der Sätze mit Angaben zu 2012 und/oder 2013 ermitteln. sort cases by idpersx file. * Falls SPSS vor Release 22.0 genutzt wird, muss die Funktion "CIN" (s.u.) wie * folgt ersetzt werden: * compute x1 = (file=1). * compute x2 = (file=2). * compute x3 = (file>=1 & file<=2). * aggregate outfile= * mode=addvariables * /break = idpersx * /t1 = sum(x1) /t2 = sum(x2) /t_insg = sum(x3). * delete variables x1 x2 x3. aggregate outfile= * mode=addvariables /break = idpersx /t1 = cin(file,1,1) /t2 = cin(file,2,2) /t_insg= cin(file,1,2). formats t1 t2 t_insg (f1). var lab t1 "Angaben zu 2012". var lab t2 "Angaben zu 2013". var lab t_insg "Angaben zu 2012 oder 2013". val lab t1 0 "nein" 1 "ja". val lab t2 0 "nein" 1 "ja". execute. temporary. * Angaben zu 2012 und/oder 2013. * - Befragtensätze incl. Ausfallsätze. * 1. Satz in idpersx. select if p1=1. crosstabs t2 by t1. * Ergebnis: * t2 | t1 0 1 Gesamt * ---------------------------------- * 0 0 223871 223871 * 1 237712 288075 525787 * ---------------------------------- * Gesamt 237712 511946 749658 . temporary. * Angaben zu 2012 und/oder 2013. * - Befragtensätze ohne Ausfallsätze. * 1. Satz in idpersx. select if p1=1. select if ef63>0. crosstabs t2 by t1. * Ergebnis: * t2 | t1 0 1 Gesamt * ---------------------------------- * 0 0 204763 204763 * 1 200812 277364 478176 * ---------------------------------- * Gesamt 200812 482127 682939 * * Zellen-% * 0 30,0% * 1 29,4% 40,6% 70,0% * Gesamt 70,6% 100,0% . save outfile = '' /compressed. * =============================================================================. * 4 Files nebeneinander stellen (wide format). casestovars /id = idpersx /index = file /count = count /fixed = ef1 ef3 ef4 ef5b ef12 ef63 s1 s3 s4 s5b s12 s63 t1 t2 t_insg id12 id13 /separator = "_". * n = 749.658. * Angaben zu 2012 und/oder 2013. * - Befragtensätze incl. Ausfallsätze. * (Repliziert Auswertung long format). crosstabs t2 by t1. compute ptyp = 0. if (count = 1 & t1=1 & t2=0) ptyp=1. if (count = 1 & t1=0 & t2=1) ptyp=2. if (count = 2 & t1=1 & t2=1) ptyp=3. var lab ptyp "Panelangaben". val lab ptyp 0 "Rest" 1 "12--" 2 "--13" 3 "1213". formats ptyp (f1). fre ptyp. * ptyp n % * ---------------------- * 1 12-- 223871 29,9 * 2 --13 237712 31,7 * 3 1213 288075 38,4 * ---------------------- * Gesamt 749658 100,0 . save outfile = '' /compressed. * =============================================================================. * 5 Hinweis auf zusätzliche Identifikatoren . * In dieser Version der Datenverknüpfung werden Sätze von Personen und * Haushalten des Jahresüberhangs als eigenständige Sätze behandelt. * Um erkennen zu können, welche Sätze unabhängig vom Jahresüberhang * "zueinander" gehören, sind folgende zusätzliche Identifikatoren sowie * eine erweitere Sortierfolge hilfreich. * ID Auswahlbezirk. string idpsu (A8). compute idpsu = concat(char.rpad(s1,2),char.rpad(s3,6)). var lab idpsu "ID Auswahlbezirk (ef1 ef3)". exe. * ID Haushalte ohne Kennung für Jahresüberhänge . string idhh (A15). compute idhh = concat(char.rpad(s1,2),char.rpad(s3,6),char.rpad(s4,3)). var lab idhh "ID Haushalt (ef1 ef3 ef4)". exe. * Sortierung für Netto-Veränderungen . sort cases by idpsu /* Auswahlbezirk idhh /* Haushalt (ohne Kennung für Jahresüberhänge) idpersx /* Person .