* 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 using traeg, clear if _rc == 601 { di as text "Data not found. Try to recover" do crtraeg use traeg, 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 pil15 = pi[_n-15] by persnr: gen egpl15 = egp[_n-15] by persnr: gen ikonsl15 = ikons[_n-15] by persnr: gen ispdl15 = ispd[_n-15] by persnr: gen ib90l15 = ib90[_n-15] * 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 ~= . & pil15 ~= . & egp ~= . & egpl15 ~= . gen valid1 = pi ~= . & pil1 ~= . & egp ~= . & egpl1 ~= . * Dummy-Bildung * ------------- quietly { foreach var of varlist egp egpl15 egpl1 { tab `var', gen(`var'_) mis drop `var' } } * +------+ * |Modell| * +------+ * Save memory * ----------- keep psample bw uw intnr pi egp_2-egp_6 egpl15_2-egpl15_6 /* */ ikons ispd ib90 ikonsl15 ikonsl1 ispdl15 ispdl1 ib90l15 ib90l1 /* */ hbil age men olds 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 egpl15_2-egpl15_6 /* */ ikons ispd ib90 ikonsl15 ispdl15 ib90l15 /* */ hbil age men olds 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 egpl15_2-egpl15_6 /* */ ikons ispd ib90 ikonsl15 ispdl15 ib90l15 /* */ hbil age men olds 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_15 cdu_15 b90_15 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, replace