* Encoding: UTF-8. *--------------------------------------------------------------------------------------------------------------------------. * SPSS-Syntax zur Identifikation verschieden- und gleichgeschlechtlicher Partnerschaften * Mikrozensus Scientific Use File 2016 *--------------------------------------------------------------------------------------------------------------------------. * Dateiname: Part_MZ16.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/mz2016.sav'. *--------------------------------------------------- Vorbereitungen ---------------------------------------------------. MISSING VALUES ALL (). * Ausschluss von Faellen mit EF30=-7 oder EF30=-8 ("leere" Faelle). SELECT IF EF30>=0. EXECUTE. * Haushaltsnummer, fortlaufend. SORT CASES BY EF5b EF1 EF3 EF4. IF $CASENUM=1 hhnr=1. IF EF5b~=LAG(EF5b) OR EF1~=LAG(EF1) OR EF3~=LAG(EF3) OR EF4~=LAG(EF4) hhnr=hhnr+1. LEAVE hhnr. EXECUTE. *-------------------------------------------------------- Ehe ---------------------------------------------------------. * mit Ehepartner im Haushalt lebend. RECODE EF765 (2=1) (ELSE=0) INTO ehe. IF EF31=2 ehe=-2. *------------------------------------------ eingetragene Lebenspartnerschaft ------------------------------------------. * mit eingetragenem Lebenspartner im Haushalt lebend. RECODE EF765 (6=1) (ELSE=0) INTO elp. IF EF31=2 elp=-2. *-------------------------------- Partnerschaft (nichtehelich) im gemeinsamen Haushalt --------------------------------. *--- (1) mit Partner im Haushalt lebend, basierend auf gueltigen Angaben ---. * Partner verschiedengeschlechtlich. IF (EF56=1 AND (EF809=3 OR EF809=7)) OR EF56=8 OR EF56=-5 vgp_ga=0. IF EF56=1 AND (EF809=2 OR EF809=6) vgp_ga=1. IF EF56=9 vgp_ga=-1. IF EF31=2 vgp_ga=-2. * Partner gleichgeschlechtlich. IF (EF56=1 AND (EF809=2 OR EF809=6)) OR EF56=8 OR EF56=-5 ggp_ga=0. IF EF56=1 AND (EF809=3 OR EF809=7) ggp_ga=1. IF EF56=9 ggp_ga=-1. IF EF31=2 ggp_ga=-2. *--- (2) mit Partner im Haushalt lebend, basierend auf Schaetzung ---. * Vorbedingung 1: Zweifamilienhaushalt (zwei Personen im Haushalt mit EF34=1). * Vorbedingung 2: Haushalt mit familienfremden Personen (EF721=3,4,6,7). * Anzahl Familien im Haushalt. COMPUTE fam=0. IF EF34=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 (EF721=3 OR EF721=4 OR EF721=6 OR EF721=7) AND EF44>=16 AND ((EF34=1 AND EF865>=4 AND EF865<=9) OR EF34=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) EF25 (A) par(D) EF34 (A) EF44 (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 EF25~=LAG(EF25) fnr=fnr+1. LEAVE fnr. EXECUTE. IF $CASENUM=1 OR hhnr~=LAG(hhnr) OR EF25~=LAG(EF25) pnrf=par. IF hhnr=LAG(hhnr) AND EF25=LAG(EF25) 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=EF44. IF pnrf=2 altpp2=EF44. IF pnrf=3 altpp3=EF44. 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_tmp16.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_tmp16.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 EF721>=0 AND EF865>=1 vgp_s1=0. IF par2=1 AND gesch_p1~=gesch_p2 vgp_s1=1. IF EF31=2 vgp_s1=-2. * Partner verschiedengeschlechtlich, Altersdifferenz unter 18 Jahren. IF EF34>=1 AND EF721>=0 AND EF865>=1 vgp_s2=0. IF par2=1 AND altab<18 AND gesch_p1~=gesch_p2 vgp_s2=1. IF EF31=2 vgp_s2=-2. * Partner gleichgeschlechtlich, Altersdifferenz unerheblich. IF EF34>=1 AND EF721>=0 AND EF865>=1 ggp_s1=0. IF par2=1 AND gesch_p1=gesch_p2 ggp_s1=1. IF EF31=2 ggp_s1=-2. * Partner gleichgeschlechtlich, Altersdifferenz unter 18 Jahren. IF EF34>=1 AND EF721>=0 AND EF865>=1 ggp_s2=0. IF par2=1 AND altab<18 AND gesch_p1=gesch_p2 ggp_s2=1. IF EF31=2 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. *----------------------------------- Nummer der Person und des Partners im Haushalt -----------------------------------. * Nummer der Person im Haushalt. COMPUTE persnr=EF5a. * Nummer des Ehepartners im Haushalt. RECODE EF51 (-5=-2) (-1=-2) (ELSE=COPY) INTO epartnr. * Nummer des (nichtehelichen) Partners im Haushalt. RECODE EF57 (-5=-2) (-1=-2) (ELSE=COPY) INTO partnr. EXECUTE. *--------------------------------------- Vergabe von Variablen und Value Labels ---------------------------------------. VARIABLE LABELS ehe 'mit Ehepartner im HH lebend' / elp 'mit eingetragenem Lebenspartner 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' / persnr 'Nummer der Person im HH' / epartnr 'Nummer des Ehepartners im HH' / partnr 'Nummer des (nichtehelichen) Partners im HH'. VALUE LABELS ehe 0 'ohne Ehepartner' 1 'mit Ehepartner' -2 'entfaellt' / elp 0 'ohne eingetragenen Lebenspartner' 1 'mit eingetragenem Lebenspartner' -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' / epartnr -2 'entfaellt' / partnr -2 'entfaellt'. *------------------------ Vergabe von Variablenformaten (zur Vermeidung von Nachkommastellen) -------------------------. FORMATS ehe elp vgp_ga vgp_gia vgp_s1 vgp_s2 ggp_ga ggp_gia ggp_s1 ggp_s2 persnr epartnr partnr (F2.0). *--------------------------------- Ausschluss temporaerer Hilfsvariablen und -dateien ---------------------------------. DELETE VARIABLES 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_tmp16.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/mz2016b.sav'.