* Encoding: UTF-8. *--------------------------------------------------------------------------------------------------------------------------. * SPSS-Syntax zur Identifikation verschieden- und gleichgeschlechtlicher Partnerschaften * Mikrozensus Scientific Use File 1980 *--------------------------------------------------------------------------------------------------------------------------. * Dateiname: Part_MZ80.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/mz1980.sav'. *--------------------------------------------------- Vorbereitungen ---------------------------------------------------. MISSING VALUES ALL (). * Ausschluss von Duplikaten mit Angaben zur zweiten Erwerbstaetigkeit. SELECT IF EF38=0 OR EF38=1. EXECUTE. * Haushaltsnummer, fortlaufend. SORT CASES BY EF1 EF5 EF203. IF $CASENUM=1 hhnr=1. IF EF1~=lag(EF1) OR EF5~=lag(EF5) OR EF203~=lag(EF203) hhnr=hhnr+1. LEAVE hhnr. EXECUTE. *--- Identifikation von Duplikaten ueber Abgleich von personenbezogenen Variablen ---. * in Faellen, in denen die Duplikate in EF4 ausgewiesen sind, werden die Daten so sortiert, dass die Duplikate den Originalfaellen unmittelbar folgen. RECODE EF4 (1=2) (ELSE=1) INTO EF4r. SORT CASES BY hhnr EF18 EF20 EF19 EF66 EF21 EF22 EF23 EF17 EF27 EF28 EF29 EF30 EF33 EF34 EF35 EF36 EF37 EF39 EF40 EF41 EF42 EF43 EF44 EF45 EF48 EF49 EF50 EF51 EF52 EF53 EF54 EF55 EF62 EF70 EF71 EF72 EF74 EF78 EF79 EF80 EF85 EF86 EF88 EF89 EF4r. COMPUTE p=1. * Markierung der Personen mit identischen Auspraegungen in allen relevanten Variablen (sum gibt deren Anzahl wieder). AGGREGATE OUTFILE=* MODE=ADDVARIABLES / PRESORTED / BREAK hhnr EF18 EF20 EF19 EF66 EF21 EF22 EF23 EF17 EF27 EF28 EF29 EF30 EF33 EF34 EF35 EF36 EF37 EF39 EF40 EF41 EF42 EF43 EF44 EF45 EF48 EF49 EF50 EF51 EF52 EF53 EF54 EF55 EF62 EF70 EF71 EF72 EF74 EF78 EF79 EF80 EF85 EF86 EF88 EF89 / sum=SUM(p). EXECUTE. * jeweils erste Person wird als Originalfall markiert. IF (hhnr~=LAG(hhnr) OR ((hhnr=LAG(hhnr) AND (EF18~=LAG(EF18) OR EF20~=LAG(EF20) OR EF19~=LAG(EF19) OR EF66~=LAG(EF66) OR EF21~=LAG(EF21) OR EF22~=LAG(EF22) OR EF23~=LAG(EF23) OR EF17~=LAG(EF17) OR EF27~=LAG(EF27) OR EF28~=LAG(EF28) OR EF29~=LAG(EF29) OR EF30~=LAG(EF30) OR EF33~=LAG(EF33) OR EF34~=LAG(EF34) OR EF35~=LAG(EF35) OR EF36~=LAG(EF36) OR EF37~=LAG(EF37) OR EF39~=LAG(EF39) OR EF40~=LAG(EF40) OR EF41~=LAG(EF41) OR EF42~=LAG(EF42) OR EF43~=LAG(EF43) OR EF44~=LAG(EF44) OR EF45~=LAG(EF45) OR EF48~=LAG(EF48) OR EF49~=LAG(EF49) OR EF50~=LAG(EF50) OR EF51~=LAG(EF51) OR EF52~=LAG(EF52) OR EF53~=LAG(EF53) OR EF54~=LAG(EF54) OR EF55~=LAG(EF55) OR EF62~=LAG(EF62) OR EF70~=LAG(EF70) OR EF71~=LAG(EF71) OR EF72~=LAG(EF72) OR EF74~=LAG(EF74) OR EF78~=LAG(EF78) OR EF79~=LAG(EF79) OR EF80~=LAG(EF80) OR EF85~=LAG(EF85) OR EF86~=LAG(EF86) OR EF88~=LAG(EF88) OR EF89~=LAG(EF89))))) AND sum>1 master=1. * alle weiteren Personen werden als Duplikat markiert. IF sum>1 AND SYSMIS(master) master=2. EXECUTE. * Korrektur fuer den ersten Fall im ersten Haushalt. IF $CASENUM=1 master=1. EXECUTE. *--- Ausschluss von Duplikaten ---. SELECT IF SYSMIS(master) OR master=1. EXECUTE. *-------------------------------------------------------- Ehe ---------------------------------------------------------. * mit Ehepartner im Haushalt lebend. IF EF62>0 AND EF64>0 ehe=0. IF (EF62=1 AND (EF64=1 OR EF64=2)) OR EF62=2 ehe=1. IF EF60=2 OR EF60=3 ehe=-2. *-------------------------------- Partnerschaft (nichtehelich) im gemeinsamen Haushalt --------------------------------. *--- mit Partner im Haushalt lebend, basierend auf Schaetzung ---. * Vorbedingung 1: Zweifamilienhaushalt (zwei Personen im Haushalt mit EF62=1). * Vorbedingung 2: Haushalt mit familienfremden Personen (EF63=7,8,9). * Anzahl Familien im Haushalt. COMPUTE fam=0. IF EF62=1 fam=1. SORT CASES BY hhnr. 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 (EF63=7 OR EF63=8 OR EF63=9) AND EF66>=16 AND ((EF62=1 AND EF64>=4 AND EF64<=9) OR EF62=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) EF205 (A) par(D) EF62 (A) EF66 (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 EF205~=LAG(EF205) fnr=fnr+1. LEAVE fnr. EXECUTE. IF $CASENUM=1 OR hhnr~=LAG(hhnr) OR EF205~=LAG(EF205) pnrf=par. IF hhnr=LAG(hhnr) AND EF205=LAG(EF205) 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=EF66. IF pnrf=2 altpp2=EF66. IF pnrf=3 altpp3=EF66. 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_tmp80.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_tmp80.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 EF63<=9 AND EF64>=1 vgp_s1=0. IF par2=1 AND gesch_p1~=gesch_p2 vgp_s1=1. IF EF60=2 OR EF60=3 vgp_s1=-2. * Partner verschiedengeschlechtlich, Altersdifferenz unter 18 Jahren. IF EF62>=1 AND EF63<=9 AND EF64>=1 vgp_s2=0. IF par2=1 AND altab<18 AND gesch_p1~=gesch_p2 vgp_s2=1. IF EF60=2 OR EF60=3 vgp_s2=-2. * Partner gleichgeschlechtlich, Altersdifferenz unerheblich. IF EF62>=1 AND EF63<=9 AND EF64>=1 ggp_s1=0. IF par2=1 AND gesch_p1=gesch_p2 ggp_s1=1. IF EF60=2 OR EF60=3 ggp_s1=-2. * Partner gleichgeschlechtlich, Altersdifferenz unter 18 Jahren. IF EF62>=1 AND EF63<=9 AND EF64>=1 ggp_s2=0. IF par2=1 AND altab<18 AND gesch_p1=gesch_p2 ggp_s2=1. IF EF60=2 OR EF60=3 ggp_s2=-2. EXECUTE. *--------------------------------------- Vergabe von Variablen und Value Labels ---------------------------------------. VARIABLE LABELS ehe 'mit Ehepartner im HH lebend' / 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_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_s1 vgp_s2 0 'ohne verschiedengeschl. Partner' 1 'mit verschiedengeschl. Partner' -2 'entfaellt' / ggp_s1 ggp_s2 0 'ohne gleichgeschl. Partner' 1 'mit gleichgeschl. Partner' -2 'entfaellt'. *------------------------ Vergabe von Variablenformaten (zur Vermeidung von Nachkommastellen) -------------------------. FORMATS ehe vgp_s1 vgp_s2 ggp_s1 ggp_s2 (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_tmp80.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/mz1980b.sav'.