* Encoding: UTF-8. *--------------------------------------------------------------------------------------------------------------------------. * SPSS-Syntax zur Identifikation verschieden- und gleichgeschlechtlicher Partnerschaften * Mikrozensus Scientific Use File 2000 *--------------------------------------------------------------------------------------------------------------------------. * Dateiname: Part_MZ00.sps * Version: 1 * IBM SPSS Statistics Version 24.0 * Bei Nutzung dieses Programmcodes bitte zitieren: Lengerer, Andrea (2019): Mikrozensus Tools: Identifikation verschieden- und gleichgeschlechtlicher Partnerschaften in den Scientific Use Files 1973 bis 2014 GESIS Papers 2019/09. Mannheim: GESIS. * GESIS - Leibniz-Institut fuer Sozialwissenschaften German Microdata Lab https://www.gesis.org/gml gml@gesis.org *--------------------------------------------------------------------------------------------------------------------------. *---------------------------------------------------- Konfiguration ---------------------------------------------------. * Angabe des Verzeichnisses, in dem das Mikrozensus SUF gespeichert ist: Ersetzen von VERZEICHNIS_MZDATEN in die lokale Pfadangabe. FILE HANDLE pfad_mzdat / NAME='VERZEICHNIS_MZDATEN'. * Angabe des Verzeichnisses, in dem das bearbeitete Mikrozensus SUF gespeichert werden soll: Ersetzen von VERZEICHNIS_DATEN in die lokale Pfadanagabe. FILE HANDLE pfad_dat / NAME='VERZEICHNIS_DATEN'. * ab hier sollten keine weiteren Aenderungen mehr noetig sein. *---------------------------------------------- Oeffnen des Datensatzes -----------------------------------------------. GET FILE='pfad_mzdat/mz2000.sav'. *--------------------------------------------------- Vorbereitungen ---------------------------------------------------. MISSING VALUES ALL (). * Haushaltsnummer, fortlaufend. SORT CASES BY EF3 EF4. IF $CASENUM=1 hhnr=1. IF EF3~=LAG(EF3) OR EF4~=LAG(EF4) hhnr=hhnr+1. LEAVE hhnr. EXECUTE. *-------------------------------------------------------- Ehe ---------------------------------------------------------. * mit Ehepartner im Haushalt lebend. IF EF509>0 AND EF575>0 ehe=0. IF (EF509=1 AND (EF575=1 OR EF575=2)) OR EF509=2 ehe=1. IF EF506=3 ehe=-2. *-------------------------------- Partnerschaft (nichtehelich) im gemeinsamen Haushalt --------------------------------. *--- (1) mit Partner im Haushalt lebend, basierend auf gueltigen Angaben ---. * Hilfsvariable ep=1, wenn Person angibt, Ehepartner der Bezugsperson zu sein. COMPUTE ep=0. IF EF507=2 ep=1. * Hilfsvariable lp=1, wenn Person angibt, Lebenspartner der Bezugsperson zu sein. COMPUTE lp=0. IF EF39=1 lp=1. * Hilfsvariable glp=1, wenn Lebenspartner der Bezugsperson maennlich und glp=2, wenn Lebenspartner der Bezugsperson weiblich ist. IF EF39=1 AND EF32=1 glp=1. IF EF39=1 AND EF32=2 glp=2. * Hilfsvariable v=1, wenn Person die Angabe bei EF39 verweigert. COMPUTE v=0. IF EF39=9 v=1. SORT CASES BY hhnr. AGGREGATE OUTFILE=* MODE=ADDVARIABLES / PRESORTED / BREAK hhnr / sum_ep=SUM(ep) / sum_lp=SUM(lp) / sum_glp=SUM(glp) / sum_v=SUM(v). * Kontrolle: - Anzahl Ehepartner im Haushalt 0 oder 1 (sum_ep) - Anzahl Lebenspartner im Haushalt 0 oder 1 (sum_lp) - Geschlecht des Lebenspartners 1, 2 oder missing (sum_glp) - Anzahl Personen ohne Angabe im Haushalt 0 oder mehr (sum_v). * FREQ sum_ep sum_lp sum_glp sum_v. * Partner verschiedengeschlechtlich. IF (EF507=1 AND sum_ep=1) OR (EF507=1 AND sum_lp=0 AND sum_v=0) OR (((EF507=1 AND sum_lp=1) OR EF39=1) AND ((EF557=1 AND sum_glp=1) OR (EF557=2 AND sum_glp=2))) OR EF37=1 OR EF39=8 vgp_ga=0. IF ((EF507=1 AND sum_lp=1) OR EF39=1) AND ((EF557=1 AND sum_glp=2) OR (EF557=2 AND sum_glp=1)) vgp_ga=1. IF (EF507=1 AND sum_ep=0 AND sum_lp=0 AND sum_v>=1) OR EF39=9 vgp_ga=-1. IF EF506=3 vgp_ga=-2. * Partner gleichgeschlechtlich. IF (EF507=1 AND sum_ep=1) OR (EF507=1 AND sum_lp=0 AND sum_v=0) OR (((EF507=1 AND sum_lp=1) OR EF39=1) AND ((EF557=1 AND sum_glp=2) OR (EF557=2 AND sum_glp=1))) OR EF37=1 OR EF39=8 ggp_ga=0. IF ((EF507=1 AND sum_lp=1) OR EF39=1) AND ((EF557=1 AND sum_glp=1) OR (EF557=2 AND sum_glp=2)) ggp_ga=1. IF (EF507=1 AND sum_ep=0 AND sum_lp=0 AND sum_v>=1) OR EF39=9 ggp_ga=-1. IF EF506=3 ggp_ga=-2. *--- (2) mit Partner im Haushalt lebend, basierend auf Schaetzung ---. * Vorbedingung 1: Zweifamilienhaushalt (zwei Personen im Haushalt mit EF509=1). * Vorbedingung 2: Haushalt mit familienfremden Personen (EF541=3,4,6,7). * Anzahl Familien im Haushalt. COMPUTE fam=0. IF EF509=1 fam=1. AGGREGATE OUTFILE=* MODE=ADDVARIABLES / PRESORTED / BREAK hhnr / anz_fam=SUM(fam). * potenzielle Partner: Personen in Zweifamilienhaushalten mit familienfremden Personen, im Alter von 16 Jahren und darueber, die Bezugsperson in der Familie sind und ohne Ehepartner im Haushalt leben, oder Kind in der Familie sind. COMPUTE par=0. IF anz_fam=2 AND (EF541=3 OR EF541=4 OR EF541=6 OR EF541=7) AND EF30>=16 AND ((EF509=1 AND EF575>=4 AND EF575<=9) OR EF509=3) par=1. * Sortierung potenzieller Partnern in der Familie nach folgender Reihenfolge: zuerst Bezugsperson, dann Kinder, bei mehreren Kindern zuerst aeltestes Kind. SORT CASES BY hhnr (A) EF28 (A) par(D) EF509 (A) EF30 (D). * Hilfsvariablen zur Berechnung der Altersdifferenz zwischen potenziellen Partnern: fortlaufende Nummer der Familie im Haushalt (fnr) fortlaufende Nummer des potenziellen Partners in der Familie (pnrf). IF $CASENUM=1 OR hhnr~=LAG(hhnr) fnr=1. IF hhnr=LAG(hhnr) AND EF28~=LAG(EF28) fnr=fnr+1. LEAVE fnr. EXECUTE. IF $CASENUM=1 OR hhnr~=LAG(hhnr) OR EF28~=LAG(EF28) pnrf=par. IF hhnr=LAG(hhnr) AND EF28=LAG(EF28) pnrf=pnrf+par. LEAVE pnrf. IF par=0 pnrf=0. * Berechnung der Altersdifferenz zwischen allen potenziellen Partnern im Haushalt, die unterschied- lichen Familien angehoeren (wobei die ersten drei potenziellen Partner pro Familie beruecksichtigt werden). * zunaechst wird das Alter der potenziellen Partner einer Familie den potenziellen Partnern der anderen Familie im Haushalt zugespielt. IF pnrf=1 altpp1=EF30. IF pnrf=2 altpp2=EF30. IF pnrf=3 altpp3=EF30. SORT CASES BY hhnr fnr. AGGREGATE OUTFILE=* MODE=ADDVARIABLES / PRESORTED / BREAK hhnr fnr / altpp1ef=MAX(altpp1) / altpp2ef=MAX(altpp2) / altpp3ef=MAX(altpp3). RECODE fnr (1=2) (2=1) INTO fnr2. SORT CASES BY hhnr fnr2. TEMP. SEL IF pnrf=1. SAVE OUTFILE='pfad_dat/alt_tmp00.sav' / KEEP=hhnr fnr2 altpp1ef altpp2ef altpp3ef / RENAME (fnr2 altpp1ef altpp2ef altpp3ef=fnr altpp1af altpp2af altpp3af). SORT CASES BY hhnr fnr. MATCH FILES / FILE=* / TABLE='pfad_dat/alt_tmp00.sav' / BY hhnr fnr. EXECUTE. * dann wird die Altersdifferenz zwischen allen potenziellen Partnern im Haushalt ermittelt (wobei aa11 die Altersdifferenz zwischen dem ersten Partner der einen und dem ersten Partner der anderen Familie, aa12 die Altersdifferenz zwischen dem ersten Partner der einen und dem zweiten Partner der anderen Familie wiedergibt, ...). COMPUTE aa11=ABS(altpp1ef-altpp1af). COMPUTE aa12=ABS(altpp1ef-altpp2af). COMPUTE aa13=ABS(altpp1ef-altpp3af). COMPUTE aa21=ABS(altpp2ef-altpp1af). COMPUTE aa22=ABS(altpp2ef-altpp2af). COMPUTE aa23=ABS(altpp2ef-altpp3af). COMPUTE aa31=ABS(altpp3ef-altpp1af). COMPUTE aa32=ABS(altpp3ef-altpp2af). COMPUTE aa33=ABS(altpp3ef-altpp3af). * Altersdifferenz zu nicht vorhandenen potenziellen Partnern wird auf Code 99 gesetzt. RECODE aa11 aa12 aa13 aa21 aa22 aa23 aa31 aa32 aa33 (SYSMIS=99) (ELSE=COPY). * Identifikation potenzieller Partner mit der geringsten Altersdifferenz, nach folgenden Regeln: - fuer beide potenzielle Partner darf es in der jeweils anderen Familie keinen anderen potenziellen Partner geben, zu dem die Altersdifferenz geringer ist - die Altersdifferenz zu allen anderen potenziellen Partnern muss mindestens x+1 Jahre groesser sein. COMPUTE x=9. COMPUTE par2=0. DO IF pnrf=1 AND (aa11+x)=1 AND EF541<=7 AND EF575>=1 vgp_s1=0. IF par2=1 AND gesch_p1~=gesch_p2 vgp_s1=1. IF EF506=3 vgp_s1=-2. * Partner verschiedengeschlechtlich, Altersdifferenz unter 18 Jahren. IF EF509>=1 AND EF541<=7 AND EF575>=1 vgp_s2=0. IF par2=1 AND altab<18 AND gesch_p1~=gesch_p2 vgp_s2=1. IF EF506=3 vgp_s2=-2. * Partner gleichgeschlechtlich, Altersdifferenz unerheblich. IF EF509>=1 AND EF541<=7 AND EF575>=1 ggp_s1=0. IF par2=1 AND gesch_p1=gesch_p2 ggp_s1=1. IF EF506=3 ggp_s1=-2. * Partner gleichgeschlechtlich, Altersdifferenz unter 18 Jahren. IF EF509>=1 AND EF541<=7 AND EF575>=1 ggp_s2=0. IF par2=1 AND altab<18 AND gesch_p1=gesch_p2 ggp_s2=1. IF EF506=3 ggp_s2=-2. EXECUTE. *--- (3) mit Partner im Haushalt lebend, basierend auf gueltigen und imputierten Angaben ---. * Partner verschiedengeschlechtlich. COMPUTE vgp_gia=vgp_ga. IF vgp_ga=-1 AND vgp_s1=0 vgp_gia=0. IF vgp_ga=-1 AND vgp_s1=1 vgp_gia=1. * Partner gleichgeschlechtlich. COMPUTE ggp_gia=ggp_ga. IF ggp_ga=-1 AND ggp_s1=0 ggp_gia=0. IF ggp_ga=-1 AND ggp_s1=1 ggp_gia=1. EXECUTE. *--------------------------------------- Vergabe von Variablen und Value Labels ---------------------------------------. VARIABLE LABELS ehe 'mit Ehepartner im HH lebend' / vgp_ga 'mit verschiedengeschl. Partner im HH lebend, gültige Angaben' / vgp_gia 'mit verschiedengeschl. Partner im HH lebend, gültige und imputierte Angaben' / vgp_s1 'mit verschiedengeschl. Partner im HH lebend, Schätzung, Altersdiff. unerheblich' / vgp_s2 'mit verschiedengeschl. Partner im HH lebend, Schätzung, Altersdiff. <18 Jahre' / ggp_ga 'mit gleichgeschl. Partner im HH lebend, gültige Angaben' / ggp_gia 'mit gleichgeschl. Partner im HH lebend, gültige und imputierte Angaben' / ggp_s1 'mit gleichgeschl. Partner im HH lebend, Schätzung, Altersdiff. unerheblich' / ggp_s2 'mit gleichgeschl. Partner im HH lebend, Schätzung, Altersdiff. <18 Jahre'. VALUE LABELS ehe 0 'ohne Ehepartner' 1 'mit Ehepartner' -2 'entfaellt' / vgp_ga vgp_gia vgp_s1 vgp_s2 0 'ohne verschiedengeschl. Partner' 1 'mit verschiedengeschl. Partner' -1 'ohne Angabe' -2 'entfaellt' / ggp_ga ggp_gia ggp_s1 ggp_s2 0 'ohne gleichgeschl. Partner' 1 'mit gleichgeschl. Partner' -1 'ohne Angabe' -2 'entfaellt'. *------------------------ Vergabe von Variablenformaten (zur Vermeidung von Nachkommastellen) -------------------------. FORMATS ehe vgp_ga vgp_gia vgp_s1 vgp_s2 ggp_ga ggp_gia ggp_s1 ggp_s2 (F2.0). *--------------------------------- Ausschluss temporaerer Hilfsvariablen und -dateien ---------------------------------. DELETE VARIABLES ep lp glp v sum_ep sum_lp sum_glp sum_v fam anz_fam par fnr pnrf altpp1 altpp2 altpp3 altpp1ef altpp2ef altpp3ef altpp1af altpp2af altpp3af fnr2 aa11 aa12 aa13 aa21 aa22 aa23 aa31 aa32 aa33 x par2 sum_par2 altab gesch_p gesch_p1 gesch_p2. EXECUTE. ERASE FILE='pfad_dat/alt_tmp00.sav'. *--------------------------------------- Speichern des bearbeiteten Datensatzes ---------------------------------------. * Sollen nicht alle, sondern nur ausgewaehlte Variablen gespeichert werden, muessen diese in einem KEEP- Unterbefehl angegeben werden. SAVE OUTFILE='pfad_dat/mz2000b.sav'.