* Design 1: Ermittlung der Marginaleffekte * ----------------------------------------- clear version 7.0 set more off set memory 90m set matsize 80 * +----+ * |Data| * +----+ capture use persnr welle psample hnr intnr pi pid hbil age olds men bw uw /* */ mark kons spd b90 egp konf using traeg_3 if welle <=97, clear if _rc == 601 { di as text "Data not found. Try to recover" do crtraeg_3 use persnr welle psample hnr intnr pi pid hbil age olds men bw uw /* */ mark kons spd b90 egp konf using traeg_3 if welle <=97, clear } * +--------------+ * | Rekodierungen| * +--------------+ * Imputation der Stimmung im HH fuer Einpersonenhaushalte * -------------------------------------------------------- * (Zur exakten Reproduktion der Ergebnisse muessen die markierten * Zeilen Auskommentiert werden) * Reproduzierbarkeit set seed 731 /* Kommentiere fuer Zufallsergebnisse */ gen long r = _n /* Kommentiere fuer Zufallsergebnisse */ * gen long r = uniform() /* Auskommentiere fuer Zufallsergebnisse */ gen split = kons==. sort pid egp hbil split r by pid egp hbil: gen valid = sum(split == 0) by pid egp hbil: gen ikons = kons[int(uniform()*valid)+1] if kons == . replace ikons = kons if ikons == . drop kons replace split = spd==. sort pid egp hbil split r by pid egp hbil: replace valid = sum(split == 0) by pid egp hbil: gen ispd = spd[int(uniform()*valid)+1] if b90 == . replace ispd = spd if ispd == . drop spd replace split = b90==. sort pid egp hbil split r by pid egp hbil: replace valid = sum(split == 0) by pid egp hbil: gen ib90 = b90[int(uniform()*valid)+1] if b90 == . replace ib90 = b90 if ib90 == . drop b90 valid r pid split * Lag-15: Zeitraum: 1984-1999 (15-Jahre) * ------------------------------------ sort persnr welle by persnr: gen pil13 = pi[_n-13] by persnr: gen egpl13 = egp[_n-13] * Lag-1 * ----- sort persnr welle by persnr: gen pil1 = pi[_n-1] by persnr: gen egpl1 = egp[_n-1] * Auswahl der Beobachtungen * ------------------------- * Nur CDU,SPD,FDP,B90 (-> Note 1) gen valid15 = pi ~= . & pil13 ~= . & egp ~= . & egpl13 ~= . gen valid1 = pi ~= . & pil1 ~= . & egp ~= . & egpl1 ~= . * Dummy-Bildung * ------------- quietly { foreach var of varlist pil13 pil1 egp konf { tab `var', gen(`var'_) mis drop `var' } } * +------+ * |Modell| * +------+ * Save memory * ----------- keep psample bw uw intnr pi pil13_2-pil13_3 pil1_2-pil1_3 egp_2-egp_6 /* */ ikons ispd ib90 hbil age men olds konf_2-konf_4 mark valid15 valid1 keep if mark | valid1 | valid15 compress * Lag-15 * ------ * Svy-Data svyset strata psample svyset pweight bw svyset psu intnr * Modell svymlog pi pil13_2-pil13_3 egp_2-egp_6 ikons ispd ib90 hbil age men olds konf_2-konf_4 /* */ if mark & valid15 * Marginaleffekte mfx compute, predict(outcome(1)) nose at(ikons=0,ispd=0,ib90=0) matrix eq1 = e(Xmfx_dydx) mfx compute, predict(outcome(2)) nose at(ikons=0,ispd=0,ib90=0) matrix eq2 = e(Xmfx_dydx) mfx compute, predict(outcome(3)) nose at(ikons=0,ispd=0,ib90=0) matrix eq3 = e(Xmfx_dydx) * Keep results in a Matrix matrix lag15 = (eq1 \ eq2 \ eq3)' * Lag-1 * ----- * Svy-Data svyset strata psample svyset pweight uw svyset psu intnr * Modell svymlog pi pil1_2-pil1_3 egp_2-egp_6 ikons ispd ib90 hbil age men olds konf_2-konf_4 /* */ if valid1 * Marginaleffekte mfx compute, predict(outcome(1)) nose at(ikons=0,ispd=0,ib90=0) matrix eq1 = e(Xmfx_dydx) mfx compute, predict(outcome(2)) nose at(ikons=0,ispd=0,ib90=0) matrix eq2 = e(Xmfx_dydx) mfx compute, predict(outcome(3)) nose at(ikons=0,ispd=0,ib90=0) matrix eq3 = e(Xmfx_dydx) * Keep results in a Matrix matrix lag1 = (eq1 \ eq2 \ eq3)' * +-----------+ * |Create Data| * +-----------+ local vars: colnames eq1 matrix colnames lag15 = spd_13 cdu_13 b90_13 matrix colnames lag1 = spd_1 cdu_1 b90_1 drop _all svmat lag15, names(col) svmat lag1, names(col) local i 1 gen str8 coef = " " foreach piece of local vars { replace coef = "`piece'" in `i' local i = `i' + 1 } compress save marg1_3, replace