******************************************************************************************. * 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_T.DO ---------------------------------- 1. Programmname: VarMZ_A.DO (URL http://www.gesis.org/fileadmin/upload/dienstleistung/tools_standards/mikrodaten_tools/Varianz/SP-Fehler/varmz_t.do) 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 Pi-Schaetzers fuer ein Merkmal Y 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 Intercooled STATA 6.0 for Windows 95/98/NT (Windows NT 4.0, SP6) und Mikrozensus 1996 (faktisch anonymisierte 70%-Substichprobe) 8. Erforderliche Programmeingaben: STATA-Datensatz basierend auf den Rohdaten des Mikrozensus. Das File sollte keine Missing Values enthalten. Schichtvariablen: EF1 Bundesland, EF708 Gemeindegroessenklasse, EF712 Gebaeudegroessenklasse Klumpenidentifikation (PSU): EF3 Auswahlbezirk Haushaltsidentifikation (HHNR): EF4 Haushaltsnummer 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: A Einzeldaten einlesen und benoetigte Variablen definieren Berechnen der Haushaltstotals B Haushaltsbezogene Daten weiterverarbeiten (ggf. einlesen) C 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 Standardabweichungen Berechnung der Varianz unter Annahme der Binomialverteilung Berechnung der auszugebenden Kennwerte Ausgabe der Kennwerte -------------------------------------------------------------------- */ version 6.0 log using , replace set log linesize 250 set memory <80m> * set virtual on set more off #delimit ; /* Teil A: Daten Personenbezogen */ use ef1 ef3 ef4 ef708 ef712 using , clear ; rename ef3 psu ; rename ef4 hhnr ; generate schicht = ef1*100 + ef708*10 + ef712; generate y = (ef35==1)*(ef506==1) ; generate z = (ef506==1) ; label variable psu "Auswahlbezirksnummer (EF3)" ; label variable hhnr "lfd. Haushaltsnummer (EF4)" ; label variable schicht "Bu.land | Gem.groesse | Geb.schicht" ; label variable y "Ledige in Privathaushalten (1, sonst 0)" ; label variable z "Bevoelkerung in Privathaushalten (1, sonst 0)" ; /* Sortieren falls noetig, sonst ueberspringen */ sort schicht psu hhnr; /* Berechnen der Haushaltstotals */ collapse (sum) y_k=y z_k=z, by(schicht psu hhnr) ; /* Ende Teil A */ /* Teil B: Daten Haushaltsbezogen Beim Einlesen haushaltsbezogener Daten muessen Y und Z als y_k und z_k aggregiert vorliegen */ /* Sortieren falls noetig, sonst ueberspringen */ sort schicht psu hhnr; /* Ende Teil B */ /* Teil C: Ab hier weiter in beiden Faellen */ /* Berechnen der PSU Totals und PSU Within Varianzen */ collapse (sum) psu_y=y_k n_stichp=z_k (count) psu_n=y_k (sd) psu_var=y_k, by(schicht psu) ; * psu_var ist nur Std.Abw. (sd): quadrieren ; replace psu_var = psu_var*psu_var ; /* Berechnen der Schicht Totals, der Between Varianz und der Summe der gewichteten Within Varianzen */ /* Einige PSUs sind im FAMZ nur mit E I N E M Haushalt repraesentiert: Missings rekodieren */ recode psu_var .=0 ; /* Berechnung n_i*S^2(s_i) */ generate n_var = psu_n * psu_var ; label var n_var "PSU Within Varianz" ; * AGGREGATION PSU- => Schicht-EBENE ; collapse (sum) str_y=psu_y str_with=n_var n_stichp (count) str_n=psu_y (sd) between=psu_y, by(schicht); * Missing Vaules rekodieren ; recode between .=0 ; * Std.Abw. => Varianz ; replace between=between*between ; /* Strata Varianz = 100^2*0.99*n_(I,h)*S^2(n_I,h) [= V_betw ] +100*0.3/(0.7*0.7) * Summe n_i*S^2(s_i) [= V_with ] */ generate total=100*str_y/0.7 ; generate v_betw=100*100*0.99*str_n*between/(0.7*0.7) ; generate v_with=100*0.3*str_with/(0.7*0.7) ; generate v = v_betw+v_with ; /* Summation der Totals und Varianz Terme ueber die Strata */ collapse (sum) total v v_betw v_with n_stichp ; /* Berechnung der Standard Abweichungen */ generate sig_v = sqrt(v) ; generate sig_b = sqrt(v_betw) ; generate sig_w = sqrt(v_with) ; generate rel = sig_v / total ; /* Berechnung der Binomial Varianz hier: Y-Merkmal und Anzahl der zur Subpopulation gehoerenden Personen liegen aggregiert vor (y_k, n_stichp) --- bei total Hochrechnung (100/0.7) zuruecknehmen --- */ generate p_dach = (total*(0.7/100))/n_stichp ; generate rel_bin = sqrt( 0.99*(1-p_dach)/(p_dach*(n_stichp-1)) ) ; generate deft=rel/rel_bin; * Ausgabe in 1000 ; replace total = total/1000; replace sig_v = sig_v/1000; replace sig_b = sig_b/1000; replace sig_w = sig_w/1000; * Ausgabe in Prozent ; replace rel = rel*100; replace rel_bin = rel_bin*100; replace p_dach=p_dach*100; label variable total "Total (in 1000)" ; label variable sig_v "Std.Fehler (in 1000)" ; label variable sig_b "Std.Fehler Between-Teil (in 1000)" ; label variable sig_w "Std.Fehler Within-Teil (in 1000)" ; label variable rel "relativer Std.Fehler (in %)" ; label variable deft "Design-Effekt Faktor des Std.Fehlers" ; label variable rel_bin "Relativer Std.Fehler Binomialverteilung (in %)" ; label variable p_dach "Anteil Y in Subpopulation Z (in %)"; list total sig_v sig_b sig_w rel deft rel_bin p_dach ; #delimit cr log close exit