******************************************************************************************. * GESIS - Leibniz-Institut für Sozialwissenschaften * German Microdata Lab (GML), Mannheim * Postfach 12 21 55 * 68072 Mannheim * Tel.: 0621/1246-265 Fax: 0621/1246-100 * E-Mail: gml@gesis.org *******************************************************************************************. * -------------------------- VarMZ_A.SPS ------------------------------. * 1. Programmname: VarMZ_A.SPS (URL http://www.gesis.org/fileadmin/upload/dienstleistung/tools_standards/mikrodaten_tools/Varianz/SP-Fehler/varmz_a.sps ) . * 2. Programmautoren: Ulrich Rendtel (rendtel@em.uni-frankfurt.de) . * Bernhard Schimpl-Neimanns (bernhard.schimpl-neimanns@gesis.org) . * 3. Zweck des Programms: Berechnung der Varianz des Regressionsschaetzers . * bei Randanpassung von Mikrozensus-Fallzahlen an die . * Bevoelkerungsfortschreibung im faktisch anonymisierten . * Mikrozensus (FAMZ) 1996. * Hier am Beispiel des Merkmals Y "Ledige" (EF35=1) fuer die . * Subpopulation Z "Bevoelkerung in Privathaushalten" (EF506=1) . * 4. Weiterfuehrende Aufgabenbeschreibungen: . * Rendtel, Ulrich; Schimpl-Neimanns, Bernhard: Varianzschaetzungen . * fuer den faktisch anonymisierten Mikrozensus. In: Jahrbuecher . * fuer Nationaloekonomie und Statistik, 220/6, 2000, S. 759-776. * Rendtel, Ulrich; Schimpl-Neimanns, Bernhard: Die Berechnung der * Varianz von Populationsschaetzern im Scientific Use File des * Mikrozensus. In: ZUMA-Nachrichten Nr. 48, 2001,S. 85-116. * (URL http://www.gesis.org/fileadmin/upload/dienstleistung/ * tools_standards/mikrodaten_tools/Varianz/SP-Fehler/zn48_10-bernhard.pdf) * Schimpl-Neimanns, Bernhard; Rendtel, Ulrich: SAS-, SPSS- und * STATA-Programme zur Berechnung der Varianz von * Populationsschaetzern im Mikrozensus. ZUMA-Methodenbericht * Nr. 2001/04. Mannheim. (URL http://www.gesis.org/fileadmin/upload/ * dienstleistung/tools_standards/mikrodaten_tools/Varianz/SP-Fehler/tb01_04.pdf) * 5. Projektbeginn: Oktober 1999 . * 6. Letzte Programmaenderung: 26. Januar 2001 . * 7. Programmstatus: Getestet mit SPSS for Windows, Release 10.0.5, . * (Windows NT 4.0, SP6) und Mikrozensus 1996 (faktisch . * anonymisierte 70%-Substichprobe). * 8. Erforderliche Programmeingaben: SAS-Datensatz basierend auf den . * Rohdaten des Mikrozensus ohne Missing Value Deklaration. * Schichtvariablen: EF1 Bundesland, EF708 Gemeindegroessenklasse, . * EF712 Gebaeudegroessenklasse . * Klumpenidentifikation (PSU): EF3 Auswahlbezirk . * Haushaltsidentifikation (HHNR): EF4 Haushaltsnummer * Abgrenzung der Anpassungsklassen (ANP): EF32 Geschlecht, . * EF52 Staatsangehoerigkeit, EF127 Stellung im Beruf . * Gruppendefinition (GRUPPE): EF1 Bundesland, ANP . * Die bei anderen als in diesem Beispiel verwendeten Y-Variablen . * und Subpopulationen (Z) sowie insgesamt zu aendernden . * Programmschritte sind mit spitzen Klammern <> gekennzeichnet. * 9. Grobe Programmstruktur: . * Einzeldaten einlesen und benoetigte Variablen definieren . * Berechnen des Regressionskoeffizienten B^ . * Ausgabe des SOLL/IST Vergleichs fuer die Gruppen und des . * gewichteten Gesamt-Totals ueber die Gruppen . * Berechnen der Hilfsgroesse u=g * (y - B^*1) . * Berechnen der Haushaltstotals der Hilfsgroesse . * Haushaltsbezogene Daten weiterverarbeiten . * Berechnen des Verhaeltnisses R=t_y / t_z . * Berechnen der Hilfsgroesse u=y - R*z . * Berechnen der PSU Totals und PSU Within Varianzen . * Berechnen der Schicht Totals, der Between Varianz und der . * Summe der gewichteten Within Varianzen . * Summation der Totals und Varianz Terme ueber die Schichten . * Berechnung der Standard Abweichungen . * Berechnung der auszugebenden Kennwerte . * Ausgabe der Kennwerte . *----------------------------------------------------------------------. set compression=on. set header=no. set mxwarns=300000. set blanks=sysmis. set width 80. set length none. set mxmemory=2097151. * Teil A: Personen-/Individualdaten . get file '' /keep ef1 ef3 ef4 ef32 ef52 ef127 ef708 ef712 /rename (ef3 ef4 = psu hhnr soll_ist). weight off. missing values all (). * interessierendes Merkmal definieren . compute y=0. if () y=1. variable label y ''. * y_w: mit Randanpassung gewichtete Beobachtung . compute y_w=y*soll_ist. * Protokollierung bis Ausgabe der Kennwerte abschalten. * set printback none. * Anpassungsklassen konstruieren. compute anp=0. if (ef52=1 & ef32=1 & ef127<>9 & ef127<>10) anp=1. if (ef52=1 & ef32=2) anp=2. if (ef52<>1 & ef32=1) anp=3. if (ef52<>1 & ef32=2) anp=4. if (ef52=1 & ef32=1 & ef127=9) anp=5. if (ef52=1 & ef32=1 & ef127=10) anp=6. variable label anp 'Anpassungsklasse'. value label anp 1 'Deutsche Maenner' 2 'Deutsche Frauen' 3 'Auslaendische Maenner' 4 'Auslaendische Frauen' 5 'Zeit-/Berufssoldaten, BGS, Ber.pol.' 6 'Grundwehrdienstleistende'. * Gruppenvariable konstruieren. compute gruppe=ef1*10+anp. variable label gruppe 'Bundesland (EF1) * Anpassungsklasse'. * Schichtvariable bilden: Bundesland (ef1) * . * Gemeindegroessenklasse (ef708) * Gebaeudeschicht (ef712). compute schicht = ef1*100 + ef708*10 + ef712. formats schicht (f4). compute schicht=ef1*100+ef708*10+ef712. * Sortieren nach Gruppen . sort cases by gruppe. * Personenfile (zwischen-) speichern . save outfile '' /keep schicht psu hhnr gruppe y y_w soll_ist /compressed . * Berechnen des Regressionskoeffizienten B_dach=t_y_g / t_x_g . aggregate outfile=* /presorted /break gruppe /t_y_g = sum(y) /t_y_w = sum(y_w) /t_s_i = sum(soll_ist) /t_x_g = n /t_x_w = n. compute B_dach=t_y_g/t_x_g. compute t_y_w =t_y_w*100/0.7. compute t_ist =t_x_w*100/0.7. compute t_soll=t_ist *t_s_i/t_x_g. * File mit Regressionskoeffizienten etc. (zwischen-) speichern. save outfile ''. * Berechnung des gewichteten Gesamt-Totals ueber die Gruppen . match files file '' /table '' /by gruppe. * Berechnen der Hilfsgroesse u=g*(y - B_dach*1) mit g=Soll_Ist . compute u=Soll_Ist * (y-B_dach). compute nw_stich=soll_ist*100/0.7. * Sortieren nach Schicht, PSU und Haushalts-Nr. sort cases by schicht psu hhnr. * Berechnung der Haushaltstotals von u . aggregate outfile = * /presorted /break schicht psu hhnr /u_k = sum(u) /t_w = sum(y_w) /n_stichp 'Personen im Haushalt' = n /nw_stich=sum(nw_stich). * Berechnen der PSU Totals und PSU Within Varianzen . aggregate outfile = * /presorted /break schicht psu /psu_u = sum(u_k) /psu_var = sd(u_k) /psu_n = n /t_w = sum(t_w) /n_stichp 'Personen in PSU' = sum(n_stichp) /nw_stich=sum(nw_stich). * Berechnen der Schicht Totals, der Between Varianz und der Summe der . * gewichteten Within Varianzen . * SD(u_k) => VAR(u_k): . compute psu_var=psu_var*psu_var. * Einige PSUs sind im FAMZ nur mit E I N E M Haushalt repraesentiert . * - Missings rekodieren . recode psu_var (missing=0). * Berechnung n_i*S^2(s_i) . compute N_Var=PSU_N*PSU_Var. * Schicht Totals . aggregate outfile = * /presorted /break schicht /str_u = sum(psu_u) /str_with = sum(n_var) /Between = sd(psu_u) /str_n = n /t_w = sum(t_w) /n_stichp 'Personen in Schicht' = sum(n_stichp) /nw_stich = sum(nw_stich). * SD(psu_u) => VAR(psu_u): . compute Between=Between*Between. recode Between (missing=0). * Strata Varianz = 100^2*0.99*n_(I,h)*S^2(n_I,h)/(0.7*0.7) [= V_betw]. * + 100*0.3/(0.7*0.7) * Summe n_i*S^2(s_i) [= V_with]. compute V_betw=10000*0.99*STR_N*Between/(0.7*0.7). compute V_with= 100*0.3 *STR_with/(0.7*0.7). compute v=v_Betw + V_with. * Summation der Varianz Terme ueber die Strata . compute eins=1. aggregate outfile = * /presorted /break eins /V_betw = sum(V_betw) /V_with = sum(V_with) /V = sum(V) /t_w = sum(t_w) /n_stichp 'Stichprobengroesse' = sum(n_stichp) /nw_stich = sum(nw_stich). * Berechnung der Standardabweichungen . compute sig_V=sqrt(V). compute sig_B=sqrt(V_betw). compute sig_W=sqrt(V_with). compute t_w=t_w*100/0.7. compute rel=sig_V/t_w. * Ausgabe in 1000: . compute t_w=t_w/1000. compute nw_stich=nw_stich/1000. compute sig_V=sig_V/1000. compute sig_B=sig_B/1000. compute sig_W=sig_W/1000. * Ausgabe in Prozent:. compute rel=rel*100. variable label t_w 'Hochgerechneter Merkmalswert (in 1000)'. variable label nw_stich 'hochger. Stichprobengroesse'. variable label sig_V 'Std.Fehler Merkmalswert (in 1000)'. variable label sig_B 'Std.Fehler Merkmalswert Between-Teil (in 1000)'. variable label sig_W 'Std.Fehler Merkmalswert Within-Teil (in 1000)'. variable label rel 'relativer Std.Fehler (sig_V*100/t_w)'. formats n_stichp nw_stich (f6) t_w (f7.1) sig_v sig_b sig_w (f10.4) rel (f5.4). * Ausgabe der Kennwerte. set printback both. SUMMARIZE /TABLES= t_w sig_v sig_b sig_w rel /FORMAT=NOLIST /CELLS=FIRST .