/* DOUGLAS HIBBS THE FOLLOWING STATA "DO" FILE THAT GENERATES ALL RESULS REPORTED IN MY FEBRUARY 29 2012 WEB POST ON THE TWO-FACTOR 'BREAD AND INCUMBENCY' MODEL'S IMPLICATIONS FOR THE PARTISAN DIVISION OF HOUSE SEATS IN THE 2012 ELECTION. */ version 11.2 cd "/Users/douglashibbs/Documents/myfiles2011/presvoteUS-2011-2008/PresElection2012" use hibbs-house-election2012-webpost-29February2012.dta describe, fullnames sort qdates tsset qdates, quarterly gen cpi = cpi_u_8284 gen r = dpi_pc/(cpi/100) gen lnr = log(r) gen dlnr = (lnr-L1.lnr)*400 gen seats_inc = house_seat_dem*dem_inc+ house_seat_rep*rep_inc gen L8seats_inc = L8.house_seat_dem*dem_inc+ L8.house_seat_rep*rep_inc replace L8seats_inc = 0 if L8seats_inc==. * ON-YEAR TWO-FACTOR 'BREAD AND INCUMBENCY' HOUSE SEATS MODEL, 1952-2008 N=15 nl ( seats_inc = {b0} + {bdlnr}*((L1.dlnr /// +{g}*L2.dlnr+{g}^2*L3.dlnr+{g}^3*L4.dlnr+{g}^4*L5.dlnr /// +{g}^5*L6.dlnr +{g}^6*L7.dlnr) / (1.0+{g} /// +{g}^2+{g}^3+{g}^4+{g}^5+{g}^6) ) /// + {bL8seats_inc}*(L8seats_inc) ) /// if preselectq==1,variables(seats_inc dlnr L8seats_inc ) /// initial(b0 45 g 0.95 bdlnr 4 bL8seats_inc 0.5 ) /// iterate(500) nolog predict shat if e(sample), yhat predict serror if e(sample), residual matrix list e(b) matrix b_2F= e(b) gen b0_2F = b_2F[1,1] display b0_2F gen bdlnr_2F = b_2F[1,2] display bdlnr_2F gen g_2F = b_2F[1,3] display g_2F gen bL8seats_2F = b_2F[1,4] display bL8seats_2F * WEIGHTED-AVG PER CAPITA REAL INCOME GROWTH SO FAR, 2011q1 - 2011q4: gen Rbar_2011q4 = ((dlnr+g_2F*L1.dlnr+g_2F^2*L2.dlnr+g_2F^3*L3.dlnr) / (1.0+g_2F+g_2F^2+g_2F^3) ) if qcount==260 list qcount qdates Rbar_2011q4 if qcount==260 * PER CAPITA REAL INCOME DATA FOR 2012 NOTIONAL PREDICTION GRAPH: gen Rbar_2F = . replace Rbar_2F = -.5561609 if qcount==264 gen shat_2F = b0_2F + bdlnr_2F*Rbar_2F+bL8seats_2F*193 list Rbar_2F shat_2F if qcount==264 * GRAPH OF ACTUAL AND FITTED VALUES SHOWING NOTIONAL 2012 PREDICTION USING BEA 2012-02-29 DATA THROUGH 2011:Q4 graph twoway connected seats_inc shat shat_2F year if preselectq==1, /// title("{bf:Bread and Incumbency Voting in On-Year House Elections, 1952-2012}", span tstyle(size(medlarge)) ) /// subtitle("{bf:2012 prediction based on conditions through 2011:q4}" " ",tstyle(size(medsmall)) ) /// ylabel(, grid gstyle(dot) glwidth(medthin) ) /// ytitle("Seats won by the president's party (#)" , /// size(medsmall) margin(small) ) ylabel(140 (30) 300) /// xtitle("Year", size(medsmall) margin(small) ) /// tlabel(1952 (8) 2012) /// graphregion(color(white)) msize(large large large) mcolor(black black red) /// msymbol(circle triangle triangle) lpattern(solid _ _) lcolor(black black red) /// lwidth(medthin medthin) /// yline(218, lpattern(solid) lwidth(thick) lcolor(gray) ) /// ttext(222 1996 "Majority (218 seats)" " ", placement(we) size(small) ) /// legend(on label(1 "Actual") size(small) label(2 "Fitted") label(3 "2012 Notional Prediction 177 Seats") position(5) ) /// caption("{it:Source: www.douglas-hibbs.com February 29 2012}", size(small) justification(left) ) /* COMPUTATIONS FOR TABLE OF POTENTIAL HOUSE SEAT OUTCOMES GIVEN BEA 2011-10-27 INCOME DATA AND HYPOTHETICAL PER CAPITA REAL INCOME GROWTH RATES */ gen Rbar_seats = ((L1.dlnr /// +g_2F*L2.dlnr+g_2F^2*L3.dlnr+g_2F^3*L4.dlnr+g_2F^4*L5.dlnr /// +g_2F^5*L6.dlnr +g_2F^6*L7.dlnr) / (1.0+g_2F /// +g_2F^2+g_2F^3+g_2F^4+g_2F^5+g_2F^6) ) if preselectq==1 * DLNR = -4 replace dlnr = -4 if qcount>260 gen Rbarmin4 = /// (L1.dlnr /// +g_2F*L2.dlnr+g_2F^2*L3.dlnr+g_2F^3*L4.dlnr+g_2F^4*L5.dlnr /// +g_2F^5*L6.dlnr +g_2F^6*L7.dlnr) / (1.0+g_2F /// +g_2F^2+g_2F^3+g_2F^4+g_2F^5+g_2F^6) if qcount==264 gen smin4 = b0_2F + bdlnr_2F*Rbarmin4 + bL8seats_2F*L8seats_inc * DLNR = -2 replace dlnr = -2 if qcount>260 gen Rbarmin2 = /// (L1.dlnr /// +g_2F*L2.dlnr+g_2F^2*L3.dlnr+g_2F^3*L4.dlnr+g_2F^4*L5.dlnr /// +g_2F^5*L6.dlnr +g_2F^6*L7.dlnr) / (1.0+g_2F /// +g_2F^2+g_2F^3+g_2F^4+g_2F^5+g_2F^6) if qcount==264 gen smin2 = b0_2F + bdlnr_2F*Rbarmin2 + bL8seats_2F*L8seats_inc * DLNR = 0 replace dlnr = 0 if qcount>260 gen Rbar0 = /// (L1.dlnr /// +g_2F*L2.dlnr+g_2F^2*L3.dlnr+g_2F^3*L4.dlnr+g_2F^4*L5.dlnr /// +g_2F^5*L6.dlnr +g_2F^6*L7.dlnr) / (1.0+g_2F /// +g_2F^2+g_2F^3+g_2F^4+g_2F^5+g_2F^6) if qcount==264 gen s0 = b0_2F + bdlnr_2F*Rbar0 + bL8seats_2F*L8seats_inc * DLNR = +2 replace dlnr = 2 if qcount>260 gen Rbarpls2 = /// (L1.dlnr /// +g_2F*L2.dlnr+g_2F^2*L3.dlnr+g_2F^3*L4.dlnr+g_2F^4*L5.dlnr /// +g_2F^5*L6.dlnr +g_2F^6*L7.dlnr) / (1.0+g_2F /// +g_2F^2+g_2F^3+g_2F^4+g_2F^5+g_2F^6) if qcount==264 gen spls2 = b0_2F + bdlnr_2F*Rbarpls2 + bL8seats_2F*L8seats_inc * DLNR = +4 replace dlnr = 4 if qcount>260 gen Rbarpls4 = /// (L1.dlnr /// +g_2F*L2.dlnr+g_2F^2*L3.dlnr+g_2F^3*L4.dlnr+g_2F^4*L5.dlnr /// +g_2F^5*L6.dlnr +g_2F^6*L7.dlnr) / (1.0+g_2F /// +g_2F^2+g_2F^3+g_2F^4+g_2F^5+g_2F^6) if qcount==264 gen spls4 = b0_2F + bdlnr_2F*Rbarpls4 + bL8seats_2F*L8seats_inc * DLNR = +6 replace dlnr = 6 if qcount>260 gen Rbarpls6 = /// (L1.dlnr /// +g_2F*L2.dlnr+g_2F^2*L3.dlnr+g_2F^3*L4.dlnr+g_2F^4*L5.dlnr /// +g_2F^5*L6.dlnr +g_2F^6*L7.dlnr) / (1.0+g_2F /// +g_2F^2+g_2F^3+g_2F^4+g_2F^5+g_2F^6) if qcount==264 gen spls6 = b0_2F + bdlnr_2F*Rbarpls6 + bL8seats_2F*L8seats_inc format smin4 smin2 s0 spls2 spls4 spls6 %9.0f format Rbarmin4 Rbarmin2 Rbar0 Rbarpls2 Rbarpls4 Rbarpls6 %9.1f list smin4 smin2 s0 spls2 spls4 spls6 if qcount==264, noobs clean list Rbarmin4 Rbarmin2 Rbar0 Rbarpls2 Rbarpls4 Rbarpls6 if qcount==264, noobs clean