/* Replication of conditional logit and predicted probabilities from Glasgow (2005) PRQ. Note this won't replicate exactly, as imputed data was used in the published article. */ #delimit; set mem 5000k; set more off; /* Note this assumes you have internet access: You could also install these files ahead of time from http://www.indiana.edu/~jslsoc/stata/ Or use the alternative do file */ /* If already installed comment this out to save time */ /* net from http://www.indiana.edu/~jslsoc/stata/; net install spost9_ado; */ log using clogit.log, replace; use PRQ2005; rename disbush discand1; rename disclin discand2; rename dispero discand3; /* saving mean issue distances for predicted probabilities */ egen mdisb1 = mean(discand1); egen mdisc1 = mean(discand2); egen mdisp1 = mean(discand3); egen mdisb2 = mean(discand1); egen mdisc2 = mean(discand2); egen mdisp2 = mean(discand3); egen mdisb3 = mean(discand1); egen mdisc3 = mean(discand2); egen mdisp3 = mean(discand3); case2alt, alt(discand mdisb mdisc mdisp) case(id) choice(vote) gen(votec) altnum(choice); /* creating data matrix, normalized wrt Perot */ generate bunion = unionh*Bush; generate cunion = unionh*Clinton; generate bjoblh = joblossh*Bush; generate cjoblh = joblossh*Clinton; generate bjobla = joblossa*Bush; generate cjobla = joblossa*Clinton; generate bjoblp = joblossp*Bush; generate cjoblp = joblossp*Clinton; generate bujlh = unionjlh * Bush; generate cujlh = unionjlh * Clinton; generate bujla = unionjla * Bush; generate cujla = unionjla * Clinton; generate bujlp = unionjlp * Bush; generate cujlp = unionjlp * Clinton; generate bwage1992 = wage1992 * Bush; generate cwage1992 = wage1992 *Clinton; generate bwagejlh = wagejlh * Bush; generate cwagejlh = wagejlh * Clinton; generate bmanuf = manuf * Bush; generate cmanuf = manuf * Clinton; generate bmanufjlh = manufjlh * Bush; generate cmanufjlh = manufjlh * Clinton; generate bhisp_af = hisp_aff * Bush; generate chisp_aff = hisp_aff * Clinton; generate bim_aff = im_aff * Bush; generate cim_aff = im_aff * Clinton; generate bill_im_aff = ill_im_aff * Bush; generate cill_im_aff = ill_im_aff * Clinton; generate bperfin = perfin * Bush; generate cperfin = perfin * Clinton; generate bnatecon = natecon * Bush; generate cnatecon = natecon * Clinton; generate bglobecon = globecon * Bush; generate cglobecon = globecon * Clinton; generate bjapan = japan_unfair * Bush; generate cjapan = japan_unfair * Clinton; generate blimimp = limimp * Bush; generate climimp = limimp * Clinton; generate bpid = pid * Bush; generate cpid = pid * Clinton; generate beduc = yrseduc * Bush; generate ceduc = yrseduc * Clinton; generate bincome = income * Bush; generate cincome = income * Clinton; generate bminority = minority * Bush; generate cminority = minority * Clinton; generate bfemale = female * Bush; generate cfemale = female * Clinton; generate bage = age * Bush; generate cage = age * Clinton; clogit votec discand bunion bjoblh bjobla bjoblp bujlh bujla bujlp bwage1992 bwagejlh bmanuf bmanufjlh bhisp_af bim_aff bill_im_aff bperfin bnatecon bglobecon bjapan blimimp bpid beduc bincome bminority bfemale bage Bush cunion cjoblh cjobla cjoblp cujlh cujla cujlp cwage1992 cwagejlh cmanuf cmanufjlh chisp_af cim_aff cill_im_aff cperfin cnatecon cglobecon cjapan climimp cpid ceduc cincome cminority cfemale cage Clinton, group(id); matrix coeffs = e(b); matrix covmat = e(V); drawnorm b1-b53, means(coeffs) cov(covmat) double; egen minc = mean(income); egen meduc = mean(yrseduc); egen mwage = mean(wage1992); egen mhisp = mean(hisp_aff); egen mim = mean(im_aff); egen mill = mean(ill_im_aff); generate bjl0u0 = .; generate cjl0u0 = .; generate pjl0u0 = .; generate bjl3u0 = .; generate cjl3u0 = .; generate pjl3u0 = .; generate bjl0u1 = .; generate cjl0u1 = .; generate pjl0u1 = .; generate bjl3u1 = .; generate cjl3u1 = .; generate pjl3u1 = .; local a=1; while `a'<1001{; qui generate ebjl0u0 = exp(mdisb*b1[`a'] + 0*b2[`a'] + 0*b3[`a'] + 1*b4[`a'] + 0*b5[`a'] + 0*b6[`a'] + 0*b7[`a'] + 0*b8[`a'] + mwage*b9[`a'] + 0*b10[`a'] + 0*b11[`a'] + 0*b12[`a'] + mhisp*b13[`a'] + mim*b14[`a'] + mill*b15[`a'] + (-1*b16[`a']) + (-1*b17[`a']) + (-1*b18[`a']) + 1*b19[`a'] + 1*b20[`a'] + 2*b21[`a'] + meduc*b22[`a'] + minc*b23[`a'] + 0*b24[`a'] + 0*b25[`a'] + 46*b26[`a'] + b27[`a']); qui generate ecjl0u0 = exp(mdisc*b1[`a'] + 0*b28[`a'] + 0*b29[`a'] + 1*b30[`a'] + 0*b31[`a'] + 0*b32[`a'] + 0*b33[`a'] + 0*b34[`a'] + mwage*b35[`a'] + 0*b36[`a'] + 0*b37[`a'] + 0*b38[`a'] + mhisp*b39[`a'] + mim*b40[`a'] + mill*b41[`a'] + (-1*b42[`a']) + (-1*b43[`a']) + (-1*b44[`a']) + 1*b45[`a'] + 1*b46[`a'] + 2*b47[`a'] + meduc*b48[`a'] + minc*b49[`a'] + 0*b50[`a'] + 0*b51[`a'] + 46*b52[`a'] + b53[`a']); qui generate epjl0u0 = exp(mdisp*b1[`a']); qui generate sumjl0u0 = ebjl0u0 + ecjl0u0 + epjl0u0; qui replace bjl0u0 = (ebjl0u0/sumjl0u0)*100 if _n==`a'; qui replace cjl0u0 = (ecjl0u0/sumjl0u0)*100 if _n==`a'; qui replace pjl0u0 = (epjl0u0/sumjl0u0)*100 if _n==`a'; drop ebjl0u0 ecjl0u0 epjl0u0 sumjl0u0; qui generate ebjl3u0 = exp(mdisb*b1[`a'] + 0*b2[`a'] + 3*b3[`a'] + 1*b4[`a'] + 0*b5[`a'] + 0*b6[`a'] + 0*b7[`a'] + 0*b8[`a'] + mwage*b9[`a'] + (mwage*3*b10[`a']) + 0*b11[`a'] + 0*b12[`a'] + mhisp*b13[`a'] + mim*b14[`a'] + mill*b15[`a'] + (-1*b16[`a']) + (-1*b17[`a']) + (-1*b18[`a']) + 1*b19[`a'] + 1*b20[`a'] + 2*b21[`a'] + meduc*b22[`a'] + minc*b23[`a'] + 0*b24[`a'] + 0*b25[`a'] + 46*b26[`a'] + b27[`a']); qui generate ecjl3u0 = exp(mdisc*b1[`a'] + 0*b28[`a'] + 3*b29[`a'] + 1*b30[`a'] + 0*b31[`a'] + 0*b32[`a'] + 0*b33[`a'] + 0*b34[`a'] + mwage*b35[`a'] + (mwage*3*b36[`a']) + 0*b37[`a'] + 0*b38[`a'] + mhisp*b39[`a'] + mim*b40[`a'] + mill*b41[`a'] + (-1*b42[`a']) + (-1*b43[`a']) + (-1*b44[`a']) + 1*b45[`a'] + 1*b46[`a'] + 2*b47[`a'] + meduc*b48[`a'] + minc*b49[`a'] + 0*b50[`a'] + 0*b51[`a'] + 46*b52[`a'] + b53[`a']); qui generate epjl3u0 = exp(mdisp*b1[`a']); qui generate sumjl3u0 = ebjl3u0 + ecjl3u0 + epjl3u0; qui replace bjl3u0 = (ebjl3u0/sumjl3u0)*100 if _n==`a'; qui replace cjl3u0 = (ecjl3u0/sumjl3u0)*100 if _n==`a'; qui replace pjl3u0 = (epjl3u0/sumjl3u0)*100 if _n==`a'; drop ebjl3u0 ecjl3u0 epjl3u0 sumjl3u0; qui generate ebjl0u1 = exp(mdisb*b1[`a'] + 1*b2[`a'] + 0*b3[`a'] + 1*b4[`a'] + 0*b5[`a'] + 0*b6[`a'] + 0*b7[`a'] + 0*b8[`a'] + mwage*b9[`a'] + 0*b10[`a'] + 0*b11[`a'] + 0*b12[`a'] + mhisp*b13[`a'] + mim*b14[`a'] + mill*b15[`a'] + (-1*b16[`a']) + (-1*b17[`a']) + (-1*b18[`a']) + 1*b19[`a'] + 1*b20[`a'] + 2*b21[`a'] + meduc*b22[`a'] + minc*b23[`a'] + 0*b24[`a'] + 0*b25[`a'] + 46*b26[`a'] + b27[`a']); qui generate ecjl0u1 = exp(mdisc*b1[`a'] + 1*b28[`a'] + 0*b29[`a'] + 1*b30[`a'] + 0*b31[`a'] + 0*b32[`a'] + 0*b33[`a'] + 0*b34[`a'] + mwage*b35[`a'] + 0*b36[`a'] + 0*b37[`a'] + 0*b38[`a'] + mhisp*b39[`a'] + mim*b40[`a'] + mill*b41[`a'] + (-1*b42[`a']) + (-1*b43[`a']) + (-1*b44[`a']) + 1*b45[`a'] + 1*b46[`a'] + 2*b47[`a'] + meduc*b48[`a'] + minc*b49[`a'] + 0*b50[`a'] + 0*b51[`a'] + 46*b52[`a'] + b53[`a']); qui generate epjl0u1 = exp(mdisp*b1[`a']); qui generate sumjl0u1 = ebjl0u1 + ecjl0u1 + epjl0u1; qui replace bjl0u1 = (ebjl0u1/sumjl0u1)*100 if _n==`a'; qui replace cjl0u1 = (ecjl0u1/sumjl0u1)*100 if _n==`a'; qui replace pjl0u1 = (epjl0u1/sumjl0u1)*100 if _n==`a'; drop ebjl0u1 ecjl0u1 epjl0u1 sumjl0u1; qui generate ebjl3u1 = exp(mdisb*b1[`a'] + 1*b2[`a'] + 3*b3[`a'] + 1*b4[`a'] + 0*b5[`a'] + 3*b6[`a'] + 0*b7[`a'] + 0*b8[`a'] + mwage*b9[`a'] + (mwage*3*b10[`a']) + 0*b11[`a'] + 0*b12[`a'] + mhisp*b13[`a'] + mim*b14[`a'] + mill*b15[`a'] + (-1*b16[`a']) + (-1*b17[`a']) + (-1*b18[`a']) + 1*b19[`a'] + 1*b20[`a'] + 2*b21[`a'] + meduc*b22[`a'] + minc*b23[`a'] + 0*b24[`a'] + 0*b25[`a'] + 46*b26[`a'] + b27[`a']); qui generate ecjl3u1 = exp(mdisc*b1[`a'] + 1*b28[`a'] + 3*b29[`a'] + 1*b30[`a'] + 0*b31[`a'] + 3*b32[`a'] + 0*b33[`a'] + 0*b34[`a'] + mwage*b35[`a'] + (mwage*3*b36[`a']) + 0*b37[`a'] + 0*b38[`a'] + mhisp*b39[`a'] + mim*b40[`a'] + mill*b41[`a'] + (-1*b42[`a']) + (-1*b43[`a']) + (-1*b44[`a']) + 1*b45[`a'] + 1*b46[`a'] + 2*b47[`a'] + meduc*b48[`a'] + minc*b49[`a'] + 0*b50[`a'] + 0*b51[`a'] + 46*b52[`a'] + b53[`a']); qui generate epjl3u1 = exp(mdisp*b1[`a']); qui generate sumjl3u1 = ebjl3u1 + ecjl3u1 + epjl3u1; qui replace bjl3u1 = (ebjl3u1/sumjl3u1)*100 if _n==`a'; qui replace cjl3u1 = (ecjl3u1/sumjl3u1)*100 if _n==`a'; qui replace pjl3u1 = (epjl3u1/sumjl3u1)*100 if _n==`a'; drop ebjl3u1 ecjl3u1 epjl3u1 sumjl3u1; local a = `a'+1; }; generate dbjlu0 = bjl0u0-bjl3u0; generate dcjlu0 = cjl0u0-cjl3u0; generate dpjlu0 = pjl0u0-cjl3u0; generate dbjlu1 = bjl0u1-bjl3u1; generate dcjlu1 = cjl0u1-cjl3u1; generate dpjlu1 = pjl0u1-cjl3u1; generate dbjl0u = bjl0u1-bjl0u0; generate dcjl0u = cjl0u1-cjl0u0; generate dpjl0u = pjl0u1-cjl0u0; generate dbjl3u = bjl3u1-bjl3u0; generate dcjl3u = cjl3u1-cjl3u0; generate dpjl3u = pjl3u1-cjl3u0; generate diffb = dbjl0u-dbjl3u; generate diffc = dcjl0u-dcjl3u; generate diffp = dpjl0u-dpjl3u; summarize bjl0u0 cjl0u0 pjl0u0 bjl3u0 cjl3u0 pjl3u0 bjl0u1 cjl0u1 pjl0u1 bjl3u1 cjl3u1 pjl3u1 dbjlu0 dcjlu0 dpjlu0 dbjlu1 dcjlu1 dpjlu1 dbjl0u dcjl0u dpjl0u dbjl3u dcjl3u dpjl3u diffb diffc diffp; log close;