* Design 2: 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 * Lag-15: Zeitraum: 1984-1999 (15-Jahre) * ------------------------------------ sort persnr welle by persnr: gen pil13 = pi[_n-13] by persnr: gen egpl13 = egp[_n-13] by persnr: gen ikonsl13 = ikons[_n-13] by persnr: gen ispdl13 = ispd[_n-13] by persnr: gen ib90l13 = ib90[_n-13] * Lag-1 * ----- sort persnr welle by persnr: gen pil1 = pi[_n-1] by persnr: gen egpl1 = egp[_n-1] by persnr: gen ikonsl1 = ikons[_n-1] by persnr: gen ispdl1 = ispd[_n-1] by persnr: gen ib90l1 = ib90[_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 egp egpl13 egpl1 konf { tab `var', gen(`var'_) mis drop `var' } } * +------+ * |Modell| * +------+ * Save memory * ----------- keep psample bw uw intnr pi egp_2-egp_6 egpl13_2-egpl13_6 /* */ ikons ispd ib90 ikonsl13 ikonsl1 ispdl13 ispdl1 ib90l13 ib90l1 /* */ 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 egp_2-egp_6 egpl13_2-egpl13_6 /* */ ikons ispd ib90 ikonsl13 ispdl13 ib90l13 /* */ hbil age men olds konf_2-konf_4 if valid15 & mark * 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 egp_2-egp_6 egpl13_2-egpl13_6 /* */ ikons ispd ib90 ikonsl13 ispdl13 ib90l13 /* */ 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 marg2_3, replace