diff --git a/2012-predicted.csv b/2012-predicted.csv deleted file mode 100644 index e8ce3a5..0000000 --- a/2012-predicted.csv +++ /dev/null @@ -1,42 +0,0 @@ -State,poll -Arizona,-6.35103758203 -California,19.7939605433 -Colorado,6.94680413392 -Connecticut,13.9673695823 -Florida,2.07942320278 -Georgia,-8.9685783511 -Hawaii,31.2329731476 -Illinois,26.8689454989 -Indiana,-6.87022364116 -Iowa,2.32494127675 -Kansas,-9.54075722393 -Maine,12.7344881691 -Maryland,28.8556122688 -Massachusetts,21.8158972511 -Michigan,8.56148458235 -Minnesota,8.04648458474 -Mississippi,-8.63666431435 -Missouri,-1.97440258249 -Montana,-7.03529525259 -Nebraska,-8.66305659485 -Nevada,9.02203805722 -New Hampshire,-1.13269055622 -New Jersey,13.5452010098 -New Mexico,9.14499594544 -New York,23.2067488327 -North Carolina,-0.590242725331 -North Dakota,-9.13833707796 -Ohio,4.38365889772 -Oregon,9.11669401207 -Pennsylvania,5.69195264214 -Rhode Island,25.9308025562 -South Carolina,-6.76679008144 -South Dakota,-1.13647592348 -Tennessee,-2.88284606462 -Texas,-2.57819116911 -Utah,-29.142100213 -Vermont,16.8113052033 -Virginia,4.9851756192 -Washington,16.1182074603 -West Virginia,-9.77644909265 -Wisconsin,4.90894385251 diff --git a/data/2012-predicted.csv b/data/2012-predicted.csv new file mode 100644 index 0000000..08de6dc --- /dev/null +++ b/data/2012-predicted.csv @@ -0,0 +1,42 @@ +State,poll +Arizona,-5.36244790596 +California,19.9664750649 +Colorado,2.66784319603 +Connecticut,8.9362274122 +Florida,2.17096302191 +Georgia,-8.85859171804 +Hawaii,18.584803377 +Illinois,15.4778671922 +Indiana,-7.22011474159 +Iowa,2.11176030586 +Kansas,-9.70849453844 +Maine,12.3537974257 +Maryland,16.3842951633 +Massachusetts,14.1746314895 +Michigan,8.39317008802 +Minnesota,6.74991517435 +Mississippi,-8.34658151627 +Missouri,-2.15293038253 +Montana,-7.18813752641 +Nebraska,-8.78919577642 +Nevada,5.09313003222 +New Hampshire,-1.54705616998 +New Jersey,10.6412190369 +New Mexico,10.7094653488 +New York,23.4735500439 +North Carolina,-0.466602437954 +North Dakota,-9.28719433084 +Ohio,4.22939440827 +Oregon,8.79474159474 +Pennsylvania,5.50255611546 +Rhode Island,13.2368530126 +South Carolina,-6.4647998996 +South Dakota,-1.42359773058 +Tennessee,-2.63022570014 +Texas,-2.29550733867 +Utah,-29.1702386849 +Vermont,14.8917641789 +Virginia,2.42024421684 +Washington,12.3125048739 +West Virginia,-9.53945115143 +Wisconsin,4.6277436276 diff --git a/data_nuevo/2012_poll_data_national.pkl b/data_nuevo/2012_poll_data_national.pkl new file mode 100644 index 0000000..bb83e40 Binary files /dev/null and b/data_nuevo/2012_poll_data_national.pkl differ diff --git a/data_nuevo/2012_poll_data_states.csv b/data_nuevo/2012_poll_data_states.csv new file mode 100644 index 0000000..ad37014 --- /dev/null +++ b/data_nuevo/2012_poll_data_states.csv @@ -0,0 +1,740 @@ +,Pollster,State,MoE,Obama (D),Romney (R),Sample,Spread,obama_spread,poll_date +0,Rasmussen Reports,WA,4.5,52.0,41.0,500.0,Obama +11,11.0,2012-09-26 +1,Gravis Marketing,WA,4.6,56.0,39.0,625.0,Obama +17,17.0,2012-09-22 +2,Elway Poll,WA,5.0,53.0,36.0,405.0,Obama +17,17.0,2012-09-11 +3,SurveyUSA,WA,4.4,54.0,38.0,524.0,Obama +16,16.0,2012-09-08 +4,SurveyUSA,WA,4.4,54.0,37.0,524.0,Obama +17,17.0,2012-08-02 +5,SurveyUSA,WA,4.0,46.0,37.0,630.0,Obama +9,9.0,2012-07-17 +6,PPP (D),WA,3.0,54.0,41.0,1073.0,Obama +13,13.0,2012-06-16 +7,Elway Poll,WA,5.0,49.0,41.0,408.0,Obama +8,8.0,2012-06-15 +8,Strategies 360 (D),WA,4.4,51.0,40.0,500.0,Obama +11,11.0,2012-05-23 +9,SurveyUSA,WA,4.2,50.0,36.0,557.0,Obama +14,14.0,2012-05-09 +10,PPP (D),WA,2.8,53.0,38.0,1264.0,Obama +15,15.0,2012-02-18 +11,SurveyUSA,WA,4.2,50.0,39.0,572.0,Obama +11,11.0,2012-02-14 +12,Elway Poll,WA,5.0,49.0,38.0,405.0,Obama +11,11.0,2012-02-08 +13,SurveyUSA,WA,4.3,49.0,41.0,549.0,Obama +8,8.0,2011-11-22 +14,The Washington Poll,WA,4.5,50.0,41.0,469.0,Obama +9,9.0,2012-10-20 +15,Strategies 360 (D),WA,4.4,49.0,40.0,500.0,Obama +9,9.0,2011-09-13 +16,PPP (D),WA,3.0,51.0,40.0,1098.0,Obama +11,11.0,2011-05-14 +17,WeAskAmerica,WI,2.8,53.0,41.0,1238.0,Obama +12,12.0,2012-09-22 +18,PPP (D),WI,3.4,52.0,45.0,842.0,Obama +7,7.0,2012-09-19 +19,Rasmussen Reports,WI,4.5,49.0,46.0,500.0,Obama +3,3.0,2012-09-17 +20,NBC/WSJ/Marist,WI,3.2,50.0,45.0,968.0,Obama +5,5.0,2012-09-17 +21,Marquette University,WI,4.1,54.0,40.0,601.0,Obama +14,14.0,2012-09-15 +22,CBS/NYT/Quinnipiac,WI,3.0,51.0,45.0,1485.0,Obama +6,6.0,2012-09-14 +23,CBS/NYT/Quinnipiac,WI,3.0,49.0,47.0,1190.0,Obama +2,2.0,2012-08-18 +24,Marquette University,WI,4.2,49.0,46.0,576.0,Obama +3,3.0,2012-08-18 +25,PPP (D),WI,2.7,47.0,48.0,1308.0,Romney +1,-1.0,2012-08-18 +26,Rasmussen Reports,WI,4.5,47.0,48.0,500.0,Romney +1,-1.0,2012-08-15 +27,CNN/Opinion Research,WI,3.0,49.0,45.0,920.0,Obama +4,4.0,2012-08-14 +28,CBS/NYT/Quinnipiac,WI,3.0,51.0,45.0,1428.0,Obama +6,6.0,2012-08-03 +29,Marquette University,WI,2.9,50.0,45.0,1188.0,Obama +5,5.0,2012-08-04 +30,Rasmussen Reports,WI,4.5,49.0,46.0,500.0,Obama +3,3.0,2012-07-25 +31,WeAskAmerica,WI,2.9,49.0,42.0,1162.0,Obama +7,7.0,2012-07-18 +32,Marquette University,WI,3.5,51.0,43.0,810.0,Obama +8,8.0,2012-07-07 +33,PPP (D),WI,3.3,50.0,44.0,1057.0,Obama +6,6.0,2012-07-07 +34,Marquette University,WI,4.1,49.0,43.0,594.0,Obama +6,6.0,2012-06-15 +35,Rasmussen Reports,WI,4.5,44.0,47.0,500.0,Romney +3,-3.0,2012-06-12 +36,WeAskAmerica,WI,2.8,48.0,43.0,1270.0,Obama +5,5.0,2012-06-06 +37,Marquette University,WI,4.1,51.0,43.0,600.0,Obama +8,8.0,2012-05-25 +38,WPR/St. Norbert,WI,5.0,49.0,43.0,406.0,Obama +6,6.0,2012-05-20 +39,Daily Kos/PPP (D),WI,,47.0,46.0,,Obama +1,1.0,2012-05-12 +40,Marquette University,WI,4.1,46.0,46.0,600.0,Tie,0.0,2012-05-11 +41,Rasmussen Reports,WI,4.5,49.0,45.0,500.0,Obama +4,4.0,2012-05-09 +42,Marquette University,WI,3.8,51.0,42.0,705.0,Obama +9,9.0,2012-04-28 +43,Daily Kos/PPP (D),WI,2.9,50.0,44.0,1136.0,Obama +6,6.0,2012-04-14 +44,Rasmussen Reports,WI,4.5,52.0,41.0,500.0,Obama +11,11.0,2012-03-27 +45,NBC News/Marist,WI,2.6,52.0,35.0,1391.0,Obama +17,17.0,2012-03-27 +46,Marquette University,WI,3.8,48.0,43.0,707.0,Obama +5,5.0,2012-03-24 +47,Rasmussen Reports,WI,4.5,47.0,42.0,500.0,Obama +5,5.0,2012-02-27 +48,PPP (D),WI,3.3,53.0,39.0,900.0,Obama +14,14.0,2012-02-25 +49,Marquette University,WI,3.7,53.0,38.0,716.0,Obama +15,15.0,2012-02-18 +50,Marquette University,WI,3.8,48.0,40.0,701.0,Obama +8,8.0,2012-01-21 +51,Rasmussen Reports,WI,4.5,45.0,41.0,500.0,Obama +4,4.0,2011-10-26 +52,WPRI,WI,4.0,46.0,35.0,605.0,Obama +11,11.0,2012-10-25 +53,PPP (D),WI,2.9,46.0,43.0,1170.0,Obama +3,3.0,2011-10-22 +54,PPP (D),WI,3.4,47.0,42.0,830.0,Obama +5,5.0,2011-08-20 +55,PPP (D),WI,2.4,51.0,39.0,1636.0,Obama +12,12.0,2011-05-21 +56,PPP (D),WI,3.5,48.0,38.0,768.0,Obama +10,10.0,2011-02-26 +57,PPP (D),WI,3.7,46.0,42.0,702.0,Obama +4,4.0,2010-12-11 +58,PPP (D),WV,3.2,33.0,54.0,932.0,Romney +21,-21.0,2012-10-01 +59,PPP (D),WV,3.7,37.0,49.0,708.0,Romney +12,-12.0,2012-09-03 +60,PPP (D),WV,2.9,37.0,50.0,1105.0,Romney +13,-13.0,2012-01-22 +61,Suffolk/WSVN,FL,4.0,46.0,43.0,600.0,Obama +3,3.0,2012-09-29 +62,Gravis Marketing,FL,3.4,49.0,48.0,914.0,Obama +1,1.0,2012-09-30 +63,Florida Times-Union/InAdv,FL,4.1,49.0,46.0,540.0,Obama +3,3.0,2012-09-24 +64,PPP (D),FL,3.3,50.0,46.0,861.0,Obama +4,4.0,2012-09-22 +65,Washington Post,FL,4.5,51.0,47.0,769.0,Obama +4,4.0,2012-09-21 +66,ARG,FL,4.0,50.0,45.0,600.0,Obama +5,5.0,2012-09-21 +67,CBS/NYT/Quinnipiac,FL,3.0,53.0,44.0,1162.0,Obama +9,9.0,2012-09-21 +68,Miami Herald/Mason-Dixon,FL,3.5,48.0,47.0,800.0,Obama +1,1.0,2012-09-18 +69,Purple Strategies,FL,4.0,47.0,48.0,600.0,Romney +1,-1.0,2012-09-17 +70,WeAskAmerica,FL,2.8,49.0,46.0,1230.0,Obama +3,3.0,2012-09-18 +71,FOX News,FL,3.0,49.0,44.0,829.0,Obama +5,5.0,2012-09-17 +72,Gravis Marketing,FL,2.5,47.0,48.0,1728.0,Romney +1,-1.0,2012-09-16 +73,Rasmussen Reports,FL,4.5,48.0,46.0,500.0,Obama +2,2.0,2012-09-12 +74,Caddell/McLaughlin/SAN (R),FL,4.0,44.0,48.0,600.0,Romney +4,-4.0,2012-09-12 +75,NBC/WSJ/Marist,FL,3.1,49.0,44.0,980.0,Obama +5,5.0,2012-09-10 +76,AIF/McLaughlin (R),FL,4.0,47.0,50.0,600.0,Romney +3,-3.0,2012-09-10 +77,SurveyUSA,FL,4.1,48.0,44.0,596.0,Obama +4,4.0,2012-09-08 +78,Gravis Marketing,FL,2.7,47.0,48.0,1288.0,Romney +1,-1.0,2012-09-02 +79,PPP (D),FL,2.5,48.0,47.0,1548.0,Obama +1,1.0,2012-09-01 +80,CNN/Time,FL,3.0,50.0,46.0,776.0,Obama +4,4.0,2012-08-24 +81,Gravis Marketing,FL,3.8,46.0,50.0,728.0,Romney +4,-4.0,2012-08-20 +82,CBS/NYT/Quinnipiac,FL,3.0,49.0,46.0,1241.0,Obama +3,3.0,2012-08-18 +83,Rasmussen Reports,FL,4.5,43.0,45.0,500.0,Romney +2,-2.0,2012-08-15 +84,Purple Strategies,FL,4.0,47.0,48.0,600.0,Romney +1,-1.0,2012-08-14 +85,CBS/NYT/Quinnipiac,FL,3.0,51.0,45.0,1177.0,Obama +6,6.0,2012-07-27 +86,PPP (D),FL,3.3,48.0,47.0,871.0,Obama +1,1.0,2012-07-28 +87,SurveyUSA,FL,3.9,48.0,43.0,647.0,Obama +5,5.0,2012-07-18 +88,Purple Strategies,FL,4.0,45.0,48.0,600.0,Romney +3,-3.0,2012-07-11 +89,Mason-Dixon*,FL,3.5,46.0,45.0,800.0,Obama +1,1.0,2012-07-10 +90,Rasmussen Reports,FL,4.5,45.0,46.0,500.0,Romney +1,-1.0,2012-07-09 +91,WeAskAmerica,FL,2.9,46.0,45.0,1127.0,Obama +1,1.0,2012-07-02 +92,Quinnipiac,FL,2.8,45.0,41.0,1200.0,Obama +4,4.0,2012-06-22 +93,Quinnipiac,FL,2.4,46.0,42.0,1697.0,Obama +4,4.0,2012-06-15 +94,Purple Strategies,FL,4.0,45.0,49.0,600.0,Romney +4,-4.0,2012-06-03 +95,PPP (D),FL,3.9,50.0,46.0,642.0,Obama +4,4.0,2012-06-02 +96,NBC News/Marist,FL,3.0,48.0,44.0,1078.0,Obama +4,4.0,2012-05-19 +97,Quinnipiac,FL,2.4,41.0,47.0,1722.0,Romney +6,-6.0,2012-05-18 +98,Suffolk/WSVN,FL,4.0,46.0,45.0,600.0,Obama +1,1.0,2012-05-07 +99,Quinnipiac,FL,2.9,43.0,44.0,1169.0,Romney +1,-1.0,2012-04-28 +100,Rasmussen Reports,FL,4.5,45.0,46.0,500.0,Romney +1,-1.0,2012-04-25 +101,Purple Strategies,FL,4.1,44.0,47.0,600.0,Romney +3,-3.0,2012-04-21 +102,FOX News,FL,4.0,45.0,43.0,757.0,Obama +2,2.0,2012-04-16 +103,PPP (D),FL,3.7,50.0,45.0,700.0,Obama +5,5.0,2012-04-14 +104,Quinnipiac,FL,2.8,49.0,42.0,1228.0,Obama +7,7.0,2012-03-23 +105,Rasmussen Reports,FL,4.5,46.0,43.0,500.0,Obama +3,3.0,2012-03-13 +106,Rasmussen Reports,FL,4.5,47.0,44.0,500.0,Obama +3,3.0,2012-02-09 +107,NBC News/Marist,FL,2.6,49.0,41.0,1379.0,Obama +8,8.0,2012-01-26 +108,Miami Herald/Mason-Dixon,FL,3.5,44.0,48.0,800.0,Romney +4,-4.0,2012-01-25 +109,Suffolk/WSVN,FL,4.0,42.0,47.0,600.0,Romney +5,-5.0,2012-01-23 +110,Quinnipiac,FL,2.5,45.0,45.0,1518.0,Tie,0.0,2012-01-21 +111,Quinnipiac,FL,2.6,43.0,46.0,1412.0,Romney +3,-3.0,2012-01-06 +112,NBC News/Marist,FL,2.1,48.0,41.0,2119.0,Obama +7,7.0,2011-12-06 +113,Quinnipiac,FL,2.8,42.0,45.0,1226.0,Romney +3,-3.0,2011-12-02 +114,PPP (D),FL,3.7,45.0,44.0,700.0,Obama +1,1.0,2011-11-30 +115,Rasmussen Reports,FL,4.5,42.0,46.0,500.0,Romney +4,-4.0,2011-11-17 +116,Quinnipiac,FL,2.9,42.0,45.0,1185.0,Romney +3,-3.0,2011-11-04 +117,Suffolk University,FL,3.5,42.0,42.0,800.0,Tie,0.0,2012-10-28 +118,NBC News/Marist,FL,2.1,45.0,43.0,2225.0,Obama +2,2.0,2011-10-11 +119,PPP (D),FL,4.5,46.0,45.0,476.0,Obama +1,1.0,2011-09-24 +120,Quinnipiac,FL,3.1,40.0,47.0,1007.0,Romney +7,-7.0,2011-09-17 +121,Mason-Dixon,FL,4.0,43.0,51.0,625.0,Romney +8,-8.0,2012-08-20 +122,Magellan Strategies (R),FL,3.6,39.0,49.0,723.0,Romney +10,-10.0,2012-08-17 +123,AIF/McLaughlin (R),FL,4.0,44.0,45.0,600.0,Romney +1,-1.0,2012-08-09 +124,Quinnipiac,FL,3.6,44.0,44.0,743.0,Tie,0.0,2011-08-02 +125,Quinnipiac,FL,3.8,46.0,41.0,674.0,Obama +5,5.0,2011-07-29 +126,Sunshine State News/VSS,FL,3.1,42.0,46.0,1000.0,Romney +4,-4.0,2012-07-06 +127,PPP (D),FL,3.4,47.0,43.0,848.0,Obama +4,4.0,2011-06-18 +128,Suffolk University,FL,4.0,42.0,43.0,600.0,Romney +1,-1.0,2012-04-11 +129,Mason-Dixon,FL,3.5,43.0,48.0,800.0,Romney +5,-5.0,2012-04-06 +130,PPP (D),FL,4.4,46.0,44.0,500.0,Obama +2,2.0,2011-03-26 +131,PPP (D),FL,3.0,46.0,44.0,1034.0,Obama +2,2.0,2010-12-19 +132,WMUR/UNH,NH,4.0,54.0,39.0,600.0,Obama +15,15.0,2012-09-29 +133,ARG,NH,4.0,50.0,45.0,600.0,Obama +5,5.0,2012-09-26 +134,NBC/WSJ/Marist,NH,3.1,51.0,44.0,1012.0,Obama +7,7.0,2012-09-24 +135,Rasmussen Reports,NH,4.5,45.0,48.0,500.0,Romney +3,-3.0,2012-09-18 +136,ARG,NH,4.5,48.0,47.0,463.0,Obama +1,1.0,2012-09-16 +137,WMUR/UNH,NH,4.0,45.0,40.0,592.0,Obama +5,5.0,2012-09-07 +138,PPP (D),NH,3.0,51.0,45.0,1055.0,Obama +6,6.0,2012-08-11 +139,WMUR/UNH,NH,4.2,49.0,46.0,555.0,Obama +3,3.0,2012-08-07 +140,WMUR/UNH,NH,4.5,49.0,45.0,470.0,Obama +4,4.0,2012-07-10 +141,NBC News/Marist,NH,3.1,45.0,45.0,1029.0,Tie,0.0,2012-06-25 +142,ARG,NH,4.2,49.0,46.0,417.0,Obama +3,3.0,2012-06-23 +143,Rasmussen Reports,NH,4.5,48.0,43.0,500.0,Obama +5,5.0,2012-06-20 +144,PPP (D),NH,2.9,53.0,41.0,1163.0,Obama +12,12.0,2012-05-12 +145,WMUR/UNH,NH,4.4,51.0,42.0,486.0,Obama +9,9.0,2012-04-15 +146,Dartmouth,NH,4.9,42.0,44.0,403.0,Romney +2,-2.0,2012-04-04 +147,ARG,NH,4.2,48.0,41.0,557.0,Obama +7,7.0,2012-03-17 +148,WMUR/UNH,NH,4.4,50.0,40.0,495.0,Obama +10,10.0,2012-01-29 +149,NBC News/Marist,NH,2.9,43.0,46.0,1116.0,Romney +3,-3.0,2011-11-29 +150,WMUR/UNH,NH,4.0,44.0,47.0,606.0,Romney +3,-3.0,2011-11-18 +151,Bloomberg News,NH,5.5,40.0,50.0,324.0,Romney +10,-10.0,2011-11-11 +152,NBC News/Marist,NH,2.1,40.0,49.0,2218.0,Romney +9,-9.0,2011-10-04 +153,Mason-Dixon,NH,4.0,41.0,52.0,600.0,Romney +11,-11.0,2012-10-04 +154,WMUR/UNH,NH,4.1,42.0,50.0,559.0,Romney +8,-8.0,2011-10-01 +155,PPP (D),NH,3.8,44.0,46.0,662.0,Romney +2,-2.0,2011-07-03 +156,WMUR/UNH,NH,3.5,43.0,47.0,729.0,Romney +4,-4.0,2011-06-26 +157,WMUR/UNH,NH,4.4,43.0,50.0,471.0,Romney +7,-7.0,2011-04-21 +158,Dartmouth,NH,4.8,39.0,47.0,426.0,Romney +8,-8.0,2012-04-13 +159,PPP (D),NH,3.5,47.0,46.0,769.0,Obama +1,1.0,2011-04-02 +160,Magellan Strategies (R),NH,3.5,48.0,44.0,789.0,Obama +4,4.0,2012-02-10 +161,WMUR/UNH,NH,3.5,41.0,49.0,757.0,Romney +8,-8.0,2011-02-02 +162,Monmouth University,NJ,4.0,52.0,37.0,613.0,Obama +15,15.0,2012-09-21 +163,Philadelphia Inquirer,NJ,4.0,51.0,37.0,600.0,Obama +14,14.0,2012-09-11 +164,Fairleigh Dickinson,NJ,3.8,52.0,38.0,706.0,Obama +14,14.0,2012-09-09 +165,Quinnipiac,NJ,2.6,51.0,44.0,1471.0,Obama +7,7.0,2012-08-30 +166,Rutgers-Eagleton,NJ,3.5,51.0,37.0,710.0,Obama +14,14.0,2012-08-24 +167,Fairleigh Dickinson,NJ,3.5,49.0,36.0,849.0,Obama +13,13.0,2012-07-26 +168,Monmouth University,NJ,4.2,50.0,42.0,535.0,Obama +8,8.0,2012-07-20 +169,Quinnipiac,NJ,2.4,49.0,38.0,1623.0,Obama +11,11.0,2012-07-12 +170,Rutgers-Eagleton,NJ,2.9,56.0,33.0,1065.0,Obama +23,23.0,2012-06-02 +171,Quinnipiac,NJ,2.5,49.0,39.0,1582.0,Obama +10,10.0,2012-05-12 +172,Quinnipiac,NJ,2.4,49.0,40.0,1607.0,Obama +9,9.0,2012-04-06 +173,Fairleigh Dickinson,NJ,3.5,50.0,37.0,800.0,Obama +13,13.0,2012-03-08 +174,SurveyUSA,NJ,4.3,52.0,38.0,533.0,Obama +14,14.0,2012-02-25 +175,Quinnipiac,NJ,2.6,49.0,39.0,1396.0,Obama +10,10.0,2012-02-24 +176,Quinnipiac,NJ,2.6,48.0,38.0,1460.0,Obama +10,10.0,2012-01-13 +177,Quinnipiac,NJ,2.3,49.0,40.0,1788.0,Obama +9,9.0,2011-11-12 +178,Quinnipiac,NJ,2.9,47.0,41.0,1186.0,Obama +6,6.0,2011-10-08 +179,PPP (D),NJ,4.5,53.0,39.0,480.0,Obama +14,14.0,2012-07-17 +180,Rasmussen Reports,NJ,4.5,49.0,43.0,500.0,Obama +6,6.0,2012-05-26 +181,PPP (D),NJ,4.3,52.0,37.0,520.0,Obama +15,15.0,2012-01-08 +182,Rasmussen Reports,NM,4.5,51.0,40.0,500.0,Obama +11,11.0,2012-09-27 +183,WeAskAmerica*,NM,2.9,51.0,41.0,1258.0,Obama +10,10.0,2012-09-26 +184,PPP (D),NM,2.9,53.0,42.0,1122.0,Obama +11,11.0,2012-09-08 +185,Albuquerque Journal*,NM,3.8,45.0,40.0,667.0,Obama +5,5.0,2012-09-05 +186,Rasmussen Reports,NM,4.5,52.0,38.0,500.0,Obama +14,14.0,2012-08-21 +187,PPP (D),NM,3.6,49.0,44.0,724.0,Obama +5,5.0,2012-07-15 +188,WeAskAmerica,NM,2.8,51.0,40.0,1295.0,Obama +11,11.0,2012-07-10 +189,PPP (D),NM,4.3,54.0,40.0,526.0,Obama +14,14.0,2012-04-21 +190,Rasmussen Reports,NM,4.5,52.0,36.0,500.0,Obama +16,16.0,2012-04-03 +191,Rasmussen Reports,NM,4.5,55.0,36.0,500.0,Obama +19,19.0,2012-02-14 +192,PPP (D),NM,4.4,53.0,38.0,500.0,Obama +15,15.0,2011-12-11 +193,PPP (D),NM,3.6,49.0,42.0,732.0,Obama +7,7.0,2011-06-25 +194,PPP (D),NM,4.2,53.0,37.0,545.0,Obama +16,16.0,2011-02-05 +195,SurveyUSA,NC,4.2,49.0,47.0,573.0,Obama +2,2.0,2012-09-30 +196,ARG,NC,4.0,46.0,50.0,600.0,Romney +4,-4.0,2012-09-29 +197,PPP (D),NC,3.1,48.0,48.0,981.0,Tie,0.0,2012-09-29 +198,NBC/WSJ/Marist,NC,3.1,48.0,46.0,1035.0,Obama +2,2.0,2012-09-24 +199,Civitas (R),NC,4.0,49.0,45.0,600.0,Obama +4,4.0,2012-09-19 +200,Purple Strategies,NC,4.0,48.0,46.0,600.0,Obama +2,2.0,2012-09-17 +201,Rasmussen Reports,NC,4.5,45.0,51.0,500.0,Romney +6,-6.0,2012-09-13 +202,High Point,NC,4.7,48.0,44.0,448.0,Obama +4,4.0,2012-09-13 +203,PPP (D),NC,3.0,49.0,48.0,1087.0,Obama +1,1.0,2012-09-08 +204,SurveyUSA/Civitas (R),NC,4.5,43.0,53.0,500.0,Romney +10,-10.0,2012-09-05 +205,PPP (D),NC,3.1,48.0,48.0,1012.0,Tie,0.0,2012-09-01 +206,Elon Univ./Charlotte Observer,NC,3.0,43.0,47.0,1089.0,Romney +4,-4.0,2012-08-28 +207,High Point/SurveyUSA,NC,4.3,43.0,46.0,543.0,Romney +3,-3.0,2012-08-28 +208,CNN/Time,NC,3.0,47.0,48.0,766.0,Romney +1,-1.0,2012-08-24 +209,High Point/SurveyUSA,NC,4.3,43.0,43.0,540.0,Tie,0.0,2012-08-21 +210,PPP (D),NC,3.4,49.0,46.0,813.0,Obama +3,3.0,2012-08-04 +211,Rasmussen Reports,NC,4.5,44.0,49.0,500.0,Romney +5,-5.0,2012-08-01 +212,Civitas (R),NC,4.0,48.0,49.0,600.0,Romney +1,-1.0,2012-07-17 +213,PPP (D),NC,3.5,47.0,46.0,775.0,Obama +1,1.0,2012-07-07 +214,Project New America/Myers (D),NC,4.4,48.0,49.0,500.0,Romney +1,-1.0,2012-07-05 +215,SurveyUSA/Civitas (R),NC,4.2,45.0,50.0,558.0,Romney +5,-5.0,2012-06-30 +216,NBC News/Marist,NC,3.1,46.0,44.0,1019.0,Obama +2,2.0,2012-06-25 +217,Rasmussen Reports,NC,4.5,44.0,47.0,500.0,Romney +3,-3.0,2012-06-25 +218,PPP (D),NC,3.4,46.0,48.0,810.0,Romney +2,-2.0,2012-06-09 +219,Civitas (R),NC,4.0,45.0,47.0,600.0,Romney +2,-2.0,2012-05-20 +220,SurveyUSA,NC,4.4,44.0,45.0,524.0,Romney +1,-1.0,2012-05-20 +221,Rasmussen Reports,NC,4.5,43.0,51.0,500.0,Romney +8,-8.0,2012-05-14 +222,PPP (D),NC,3.8,48.0,47.0,666.0,Obama +1,1.0,2012-05-12 +223,SurveyUSA,NC,2.5,47.0,43.0,1636.0,Obama +4,4.0,2012-04-28 +224,Rasmussen Reports,NC,4.5,44.0,46.0,500.0,Romney +2,-2.0,2012-04-10 +225,PPP (D),NC,3.1,49.0,44.0,975.0,Obama +5,5.0,2012-04-06 +226,PPP (D),NC,3.5,49.0,46.0,804.0,Obama +3,3.0,2012-03-10 +227,Civitas (R),NC,4.0,48.0,46.0,600.0,Obama +2,2.0,2012-02-28 +228,PPP (D),NC,3.0,47.0,46.0,1052.0,Obama +1,1.0,2012-02-04 +229,Civitas (R),NC,4.0,39.0,48.0,300.0,Romney +9,-9.0,2012-01-10 +230,PPP (D),NC,3.5,46.0,45.0,780.0,Obama +1,1.0,2012-01-07 +231,PPP (D),NC,3.3,46.0,46.0,865.0,Tie,0.0,2011-12-03 +232,PPP (D),NC,4.0,45.0,46.0,615.0,Romney +1,-1.0,2011-10-29 +233,PPP (D),NC,3.6,46.0,45.0,760.0,Obama +1,1.0,2011-10-02 +234,Civitas (R),NC,4.0,39.0,50.0,600.0,Romney +11,-11.0,2011-09-24 +235,Magellan Strategies (R),NC,3.2,45.0,43.0,923.0,Obama +2,2.0,2012-09-08 +236,PPP (D),NC,4.3,45.0,44.0,520.0,Obama +1,1.0,2011-09-03 +237,PPP (D),NC,3.5,46.0,43.0,780.0,Obama +3,3.0,2011-08-06 +238,PPP (D),NC,3.8,45.0,45.0,651.0,Tie,0.0,2011-07-09 +239,PPP (D),NC,4.1,45.0,44.0,563.0,Obama +1,1.0,2011-06-10 +240,PPP (D),NC,3.4,46.0,43.0,835.0,Obama +3,3.0,2011-05-14 +241,PPP (D),NC,4.4,47.0,44.0,507.0,Obama +3,3.0,2011-04-16 +242,PPP (D),NC,4.1,44.0,42.0,584.0,Obama +2,2.0,2011-03-19 +243,PPP (D),NC,3.8,47.0,44.0,650.0,Obama +3,3.0,2011-02-19 +244,PPP (D),NC,4.1,47.0,44.0,575.0,Obama +3,3.0,2011-01-22 +245,PPP (D),NC,4.3,46.0,43.0,520.0,Obama +3,3.0,2010-12-18 +246,PPP (D),NC,4.3,44.0,44.0,517.0,Tie,0.0,2010-11-20 +247,Rasmussen Reports,ND,5.0,36.0,51.0,400.0,Romney +15,-15.0,2012-07-11 +248,Mason-Dixon,ND,4.0,39.0,52.0,625.0,Romney +13,-13.0,2012-06-05 +249,Omaha World-Herald,NE,3.8,39.0,53.0,656.0,Romney +14,-14.0,2012-09-19 +250,Rasmussen Reports,NE,4.5,39.0,53.0,500.0,Romney +14,-14.0,2012-05-16 +251,PPP (D),NE,3.1,39.0,51.0,1028.0,Romney +12,-12.0,2012-03-24 +252,Rasmussen Reports,NE,4.5,35.0,52.0,500.0,Romney +17,-17.0,2012-03-05 +253,PPP (D),NE,3.6,38.0,51.0,739.0,Romney +13,-13.0,2011-10-01 +254,PPP (D),NE,3.1,37.0,49.0,977.0,Romney +12,-12.0,2011-01-27 +255,Quinnipiac,NY,2.5,62.0,34.0,1486.0,Obama +28,28.0,2012-09-07 +256,Siena,NY,3.8,62.0,33.0,671.0,Obama +29,29.0,2012-08-17 +257,Quinnipiac,NY,2.3,55.0,32.0,1779.0,Obama +23,23.0,2012-07-20 +258,Siena,NY,3.6,61.0,34.0,758.0,Obama +27,27.0,2012-07-13 +259,Siena,NY,3.4,59.0,35.0,807.0,Obama +24,24.0,2012-06-05 +260,Quinnipiac,NY,2.5,56.0,31.0,1504.0,Obama +25,25.0,2012-05-25 +261,Siena,NY,3.5,57.0,37.0,766.0,Obama +20,20.0,2012-05-08 +262,Marist,NY,4.0,57.0,35.0,632.0,Obama +22,22.0,2012-04-11 +263,Siena,NY,3.4,60.0,35.0,808.0,Obama +25,25.0,2012-04-03 +264,Quinnipiac,NY,2.5,56.0,33.0,1597.0,Obama +23,23.0,2012-03-31 +265,Siena,NY,3.4,60.0,34.0,808.0,Obama +26,26.0,2012-02-28 +266,SurveyUSA,NY,4.3,60.0,30.0,518.0,Obama +30,30.0,2012-02-25 +267,Quinnipiac,NY,2.8,52.0,35.0,1233.0,Obama +17,17.0,2012-02-11 +268,Siena,NY,3.4,63.0,31.0,807.0,Obama +32,32.0,2012-01-31 +269,Marist,NY,6.0,58.0,35.0,296.0,Obama +23,23.0,2012-01-19 +270,Siena,NY,3.5,59.0,34.0,803.0,Obama +25,25.0,2011-11-11 +271,Marist,NY,3.5,59.0,35.0,855.0,Obama +24,24.0,2011-10-26 +272,Siena,NY,3.5,55.0,37.0,800.0,Obama +18,18.0,2011-10-11 +273,Siena,NY,3.4,56.0,36.0,808.0,Obama +20,20.0,2011-09-18 +274,Siena,NY,3.1,55.0,37.0,1008.0,Obama +18,18.0,2011-08-12 +275,WPRI/Fleming,RI,4.4,57.0,33.0,501.0,Obama +24,24.0,2012-09-28 +276,PPP (D),RI,4.2,54.0,37.0,544.0,Obama +17,17.0,2012-02-19 +277,WeAskAmerica,NV,3.1,53.0,42.0,1078.0,Obama +11,11.0,2012-09-26 +278,NBC/WSJ/Marist,NV,3.1,49.0,47.0,984.0,Obama +2,2.0,2012-09-24 +279,ARG,NV,4.0,51.0,44.0,600.0,Obama +7,7.0,2012-09-22 +280,Retail Assoc. of Nevada/POS (R),NV,4.4,46.0,46.0,500.0,Tie,0.0,2012-09-20 +281,PPP (D),NV,4.4,52.0,43.0,501.0,Obama +9,9.0,2012-09-19 +282,Rasmussen Reports,NV,4.5,47.0,45.0,500.0,Obama +2,2.0,2012-09-18 +283,CNN/Opinion Research,NV,3.5,49.0,46.0,741.0,Obama +3,3.0,2012-09-16 +284,PPP (D),NV,3.4,50.0,47.0,831.0,Obama +3,3.0,2012-08-25 +285,LVRJ/SurveyUSA,NV,3.4,47.0,45.0,869.0,Obama +2,2.0,2012-08-19 +286,Rasmussen Reports,NV,4.5,50.0,45.0,500.0,Obama +5,5.0,2012-07-24 +287,WeAskAmerica*,NV,3.0,49.0,43.0,1092.0,Obama +6,6.0,2012-07-18 +288,AFP/Magellan (R),NV,3.8,50.0,46.0,665.0,Obama +4,4.0,2012-07-17 +289,PPP (D),NV,4.4,48.0,42.0,500.0,Obama +6,6.0,2012-06-09 +290,NBC News/Marist,NV,3.0,48.0,46.0,1040.0,Obama +2,2.0,2012-05-23 +291,Rasmussen Reports,NV,4.5,52.0,44.0,500.0,Obama +8,8.0,2012-04-30 +292,PPP (D),NV,4.2,51.0,43.0,553.0,Obama +8,8.0,2012-03-31 +293,Rasmussen Reports,NV,4.5,50.0,44.0,500.0,Obama +6,6.0,2012-03-19 +294,Las Vegas Review-Journal,NV,4.0,46.0,40.0,600.0,Obama +6,6.0,2011-12-16 +295,PPP (D),NV,4.4,46.0,46.0,500.0,Tie,0.0,2011-10-22 +296,PPP (D),NV,4.0,47.0,46.0,601.0,Obama +1,1.0,2011-07-30 +297,PPP (D),NV,4.4,43.0,46.0,491.0,Romney +3,-3.0,2011-04-23 +298,PPP (D),NV,3.2,47.0,46.0,932.0,Obama +1,1.0,2011-01-04 +299,WeAskAmerica,CO,2.8,49.0,46.0,1273.0,Obama +3,3.0,2012-09-26 +300,Gravis Marketing,CO,3.4,50.0,46.0,765.0,Obama +4,4.0,2012-09-22 +301,PPP (D),CO,3.2,51.0,45.0,940.0,Obama +6,6.0,2012-09-22 +302,Purple Strategies,CO,4.0,48.0,45.0,600.0,Obama +3,3.0,2012-09-17 +303,Rasmussen Reports,CO,4.5,45.0,47.0,500.0,Romney +2,-2.0,2012-09-17 +304,NBC/WSJ/Marist,CO,3.1,50.0,45.0,971.0,Obama +5,5.0,2012-09-17 +305,CBS/NYT/Quinnipiac,CO,3.0,48.0,47.0,1497.0,Obama +1,1.0,2012-09-14 +306,ARG,CO,4.0,49.0,47.0,600.0,Obama +2,2.0,2012-09-11 +307,Denver Post/SurveyUSA,CO,4.0,47.0,46.0,615.0,Obama +1,1.0,2012-09-11 +308,Project New America/Keating (D),CO,4.4,49.0,44.0,503.0,Obama +5,5.0,2012-09-11 +309,PPP (D),CO,3.1,49.0,46.0,1001.0,Obama +3,3.0,2012-09-01 +310,Keating (D),CO,4.4,48.0,44.0,500.0,Obama +4,4.0,2012-08-22 +311,Purple Strategies,CO,4.0,49.0,46.0,600.0,Obama +3,3.0,2012-08-14 +312,Gravis Marketing,CO,4.0,45.0,46.0,607.0,Romney +1,-1.0,2012-08-09 +313,Rasmussen Reports,CO,4.5,47.0,47.0,500.0,Tie,0.0,2012-08-06 +314,CBS/NYT/Quinnipiac,CO,3.0,45.0,50.0,1463.0,Romney +5,-5.0,2012-08-03 +315,PPP (D),CO,3.5,49.0,43.0,779.0,Obama +6,6.0,2012-08-04 +316,Purple Strategies,CO,4.0,45.0,44.0,600.0,Obama +1,1.0,2012-07-11 +317,WeAskAmerica,CO,3.0,47.0,43.0,1083.0,Obama +4,4.0,2012-06-25 +318,PPP (D),CO,3.5,49.0,42.0,799.0,Obama +7,7.0,2012-06-16 +319,Rasmussen Reports,CO,4.5,45.0,45.0,500.0,Tie,0.0,2012-06-06 +320,Purple Strategies,CO,4.0,48.0,46.0,600.0,Obama +2,2.0,2012-06-03 +321,NBC News/Marist,CO,3.0,46.0,45.0,1030.0,Obama +1,1.0,2012-05-23 +322,Project New America/Keating (D),CO,4.0,48.0,44.0,601.0,Obama +4,4.0,2012-05-23 +323,Purple Strategies,CO,4.1,47.0,47.0,600.0,Tie,0.0,2012-04-21 +324,PPP (D),CO,4.2,53.0,40.0,542.0,Obama +13,13.0,2012-04-06 +325,PPP (D),CO,3.5,47.0,45.0,793.0,Obama +2,2.0,2011-12-03 +326,PPP (D),CO,4.3,48.0,41.0,510.0,Obama +7,7.0,2011-08-06 +327,PPP (D),CO,4.3,47.0,41.0,517.0,Obama +6,6.0,2011-02-05 +328,PPIC,CA,4.4,53.0,39.0,995.0,Obama +14,14.0,2012-09-13 +329,Field,CA,3.4,58.0,34.0,891.0,Obama +24,24.0,2012-09-12 +330,SurveyUSA,CA,4.3,57.0,35.0,524.0,Obama +22,22.0,2012-09-10 +331,Field,CA,3.4,55.0,37.0,848.0,Obama +18,18.0,2012-06-27 +332,SurveyUSA,CA,2.5,57.0,36.0,1575.0,Obama +21,21.0,2012-05-28 +333,Field,CA,3.8,48.0,32.0,710.0,Obama +16,16.0,2012-05-25 +334,LA Times/USC,CA,3.5,56.0,37.0,1002.0,Obama +19,19.0,2012-05-19 +335,PPIC,CA,4.2,50.0,39.0,894.0,Obama +11,11.0,2012-05-17 +336,SurveyUSA,CA,2.2,62.0,31.0,1995.0,Obama +31,31.0,2012-03-31 +337,LA Times/USC,CA,2.9,57.0,36.0,1500.0,Obama +21,21.0,2012-03-17 +338,Rasmussen Reports,CA,4.5,57.0,35.0,500.0,Obama +22,22.0,2012-02-12 +339,Field,CA,3.1,55.0,35.0,1003.0,Obama +20,20.0,2012-02-10 +340,SurveyUSA,CA,2.1,60.0,31.0,2088.0,Obama +29,29.0,2012-02-09 +341,Field,CA,3.1,50.0,40.0,1000.0,Obama +10,10.0,2011-11-21 +342,PPP (D),CA,4.4,57.0,36.0,500.0,Obama +21,21.0,2011-11-12 +343,SurveyUSA,CA,3.5,50.0,39.0,800.0,Obama +11,11.0,2011-11-10 +344,LA Times/USC,CA,2.5,52.0,35.0,1500.0,Obama +17,17.0,2011-11-04 +345,Field,CA,3.2,51.0,38.0,1001.0,Obama +13,13.0,2011-09-07 +346,LA Times/USC,CA,,54.0,35.0,1408.0,Obama +19,19.0,2011-08-23 +347,PPP (D),CA,3.3,56.0,36.0,892.0,Obama +20,20.0,2011-01-29 +348,InsiderAdvantage,GA,4.5,35.0,56.0,483.0,Romney +21,-21.0,2012-09-18 +349,SurveyUSA,GA,2.9,42.0,50.0,1169.0,Romney +8,-8.0,2012-07-29 +350,InsiderAdvantage,GA,4.0,41.0,50.0,591.0,Romney +9,-9.0,2012-07-24 +351,InsiderAdvantage,GA,5.0,40.0,52.0,438.0,Romney +12,-12.0,2012-05-22 +352,Landmark/Rosetta Stone,GA,4.0,40.0,51.0,600.0,Romney +11,-11.0,2012-05-10 +353,SurveyUSA,GA,2.9,42.0,49.0,1156.0,Romney +7,-7.0,2012-02-25 +354,SurveyUSA,GA,3.0,43.0,51.0,1144.0,Romney +8,-8.0,2012-02-02 +355,Mason-Dixon,GA,4.0,38.0,55.0,625.0,Romney +17,-17.0,2011-12-13 +356,SurveyUSA,GA,2.9,42.0,49.0,1176.0,Romney +7,-7.0,2011-12-07 +357,PPP (D),GA,3.5,43.0,46.0,790.0,Romney +3,-3.0,2012-04-02 +358,PPP (D),CT,3.5,54.0,41.0,801.0,Obama +13,13.0,2012-09-25 +359,Hartford Courant/UConn,CT,4.4,53.0,32.0,508.0,Obama +21,21.0,2012-09-14 +360,Quinnipiac,CT,2.6,52.0,45.0,1472.0,Obama +7,7.0,2012-08-24 +361,PPP (D),CT,3.3,53.0,40.0,881.0,Obama +13,13.0,2012-08-23 +362,Rasmussen Reports,CT,4.5,51.0,43.0,500.0,Obama +8,8.0,2012-08-21 +363,PPP (D),CT,3.5,51.0,43.0,771.0,Obama +8,8.0,2012-07-28 +364,Quinnipiac,CT,2.6,50.0,38.0,1408.0,Obama +12,12.0,2012-06-01 +365,Quinnipiac,CT,2.4,53.0,37.0,1622.0,Obama +16,16.0,2012-03-17 +366,PPP (D),CT,4.0,47.0,45.0,592.0,Obama +2,2.0,2011-09-24 +367,Quinnipiac,CT,2.8,49.0,36.0,1230.0,Obama +13,13.0,2011-09-11 +368,Sooner Poll,OK,4.4,29.0,58.0,495.0,Romney +29,-29.0,2012-08-05 +369,Sooner Poll,OK,4.4,27.0,62.0,504.0,Romney +35,-35.0,2012-05-09 +370,PPP (D),OH,3.3,49.0,45.0,897.0,Obama +4,4.0,2012-09-29 +371,Columbus Dispatch*,OH,2.2,51.0,42.0,1662.0,Obama +9,9.0,2012-09-24 +372,Gravis Marketing,OH,4.3,45.0,44.0,594.0,Obama +1,1.0,2012-09-22 +373,Washington Post,OH,4.5,52.0,44.0,759.0,Obama +8,8.0,2012-09-21 +374,CBS/NYT/Quinnipiac,OH,3.0,53.0,43.0,1162.0,Obama +10,10.0,2012-09-21 +375,Purple Strategies,OH,4.0,48.0,44.0,600.0,Obama +4,4.0,2012-09-17 +376,FOX News,OH,3.0,49.0,42.0,1009.0,Obama +7,7.0,2012-09-17 +377,Ohio Newspapers/Univ of Cin.,OH,3.3,51.0,46.0,861.0,Obama +5,5.0,2012-09-16 +378,Caddell/McLaughlin/SAN (R),OH,4.0,47.0,44.0,600.0,Obama +3,3.0,2012-09-14 +379,Rasmussen Reports,OH,4.5,47.0,46.0,500.0,Obama +1,1.0,2012-09-12 +380,ARG,OH,4.0,48.0,47.0,600.0,Obama +1,1.0,2012-09-11 +381,NBC/WSJ/Marist,OH,3.1,50.0,43.0,979.0,Obama +7,7.0,2012-09-10 +382,PPP (D),OH,3.0,50.0,45.0,1072.0,Obama +5,5.0,2012-09-08 +383,Gravis Marketing,OH,2.7,47.0,43.0,1548.0,Obama +4,4.0,2012-09-08 +384,Gravis Marketing,OH,2.9,44.0,47.0,1381.0,Romney +3,-3.0,2012-09-02 +385,Gravis Marketing,OH,3.0,45.0,44.0,1397.0,Obama +1,1.0,2012-08-27 +386,Columbus Dispatch*,OH,2.1,45.0,45.0,1758.0,Tie,0.0,2012-08-20 +387,Ohio Poll/Univ of Cin.,OH,3.4,49.0,46.0,847.0,Obama +3,3.0,2012-08-19 +388,CBS/NYT/Quinnipiac,OH,3.0,50.0,44.0,1253.0,Obama +6,6.0,2012-08-18 +389,Purple Strategies,OH,4.0,44.0,46.0,600.0,Romney +2,-2.0,2012-08-14 +390,Rasmussen Reports,OH,4.5,45.0,45.0,500.0,Tie,0.0,2012-08-13 +391,PPP (D),OH,3.2,48.0,45.0,961.0,Obama +3,3.0,2012-08-11 +392,CBS/NYT/Quinnipiac,OH,3.0,50.0,44.0,1193.0,Obama +6,6.0,2012-07-27 +393,WeAskAmerica*,OH,3.0,48.0,40.0,1115.0,Obama +8,8.0,2012-07-24 +394,Rasmussen Reports,OH,4.5,47.0,45.0,500.0,Obama +2,2.0,2012-07-18 +395,Purple Strategies,OH,4.0,48.0,45.0,600.0,Obama +3,3.0,2012-07-11 +396,Quinnipiac,OH,2.8,47.0,38.0,1237.0,Obama +9,9.0,2012-06-22 +397,PPP (D),OH,3.8,47.0,44.0,673.0,Obama +3,3.0,2012-06-23 +398,Purple Strategies,OH,4.0,45.0,48.0,600.0,Romney +3,-3.0,2012-06-03 +399,Rasmussen Reports,OH,4.5,44.0,46.0,500.0,Romney +2,-2.0,2012-05-29 +400,NBC News/Marist,OH,3.0,48.0,42.0,1103.0,Obama +6,6.0,2012-05-19 +401,Quinnipiac,OH,3.0,45.0,44.0,1069.0,Obama +1,1.0,2012-05-05 +402,PPP (D),OH,3.3,50.0,43.0,875.0,Obama +7,7.0,2012-05-05 +403,Quinnipiac,OH,2.9,44.0,42.0,1130.0,Obama +2,2.0,2012-04-28 +404,Purple Strategies,OH,4.1,49.0,44.0,600.0,Obama +5,5.0,2012-04-21 +405,Rasmussen Reports,OH,4.5,46.0,42.0,500.0,Obama +4,4.0,2012-04-18 +406,FOX News,OH,4.0,45.0,39.0,606.0,Obama +6,6.0,2012-04-16 +407,Rasmussen Reports,OH,4.5,48.0,40.0,500.0,Obama +8,8.0,2012-03-26 +408,Quinnipiac,OH,2.8,47.0,41.0,1246.0,Obama +6,6.0,2012-03-23 +409,NBC News/Marist,OH,2.5,50.0,38.0,1573.0,Obama +12,12.0,2012-03-01 +410,FOX News,OH,4.5,38.0,44.0,505.0,Romney +6,-6.0,2012-02-12 +411,Quinnipiac,OH,2.6,46.0,44.0,1421.0,Obama +2,2.0,2012-02-10 +412,Rasmussen Reports,OH,4.5,45.0,41.0,500.0,Obama +4,4.0,2012-02-08 +413,PPP (D),OH,3.4,49.0,42.0,820.0,Obama +7,7.0,2012-01-29 +414,Quinnipiac,OH,2.4,44.0,42.0,1610.0,Obama +2,2.0,2012-01-13 +415,Quinnipiac,OH,2.6,42.0,43.0,1437.0,Romney +1,-1.0,2011-12-02 +416,PPP (D),OH,3.1,50.0,41.0,1022.0,Obama +9,9.0,2011-11-05 +417,Quinnipiac,OH,2.7,45.0,42.0,1312.0,Obama +3,3.0,2011-11-04 +418,Quinnipiac,OH,2.4,45.0,41.0,1668.0,Obama +4,4.0,2011-10-20 +419,PPP (D),OH,4.1,46.0,46.0,581.0,Tie,0.0,2011-10-15 +420,Quinnipiac,OH,2.7,44.0,42.0,1301.0,Obama +2,2.0,2011-09-23 +421,PPP (D),OH,3.5,45.0,43.0,792.0,Obama +2,2.0,2011-08-13 +422,Quinnipiac,OH,2.4,45.0,41.0,1659.0,Obama +4,4.0,2011-07-15 +423,PPP (D),OH,4.1,46.0,42.0,565.0,Obama +4,4.0,2011-05-21 +424,PPP (D),OH,4.1,46.0,40.0,559.0,Obama +6,6.0,2011-03-12 +425,PPP (D),OH,4.3,44.0,42.0,510.0,Obama +2,2.0,2010-12-11 +426,Ohio Poll/Univ of Cin.,OH,3.3,51.0,46.0,861.0,Obama +5,5.0,2011-09-16 +427,SurveyUSA,KS,4.4,39.0,48.0,510.0,Romney +9,-9.0,2011-11-20 +428,SurveyUSA,KS,3.5,31.0,56.0,800.0,Romney +25,-25.0,2011-11-10 +429,NBC News/Marist,SC,2.1,45.0,42.0,2107.0,Obama +3,3.0,2011-12-05 +430,NBC News/Marist,SC,2.1,40.0,46.0,2131.0,Romney +6,-6.0,2011-10-12 +431,PPP (D),SC,4.0,38.0,53.0,587.0,Romney +15,-15.0,2012-08-27 +432,PPP (D),SC,3.6,41.0,50.0,741.0,Romney +9,-9.0,2012-06-04 +433,PPP (D),SC,2.9,42.0,49.0,1167.0,Romney +7,-7.0,2012-01-29 +434,Courier-Journal/SurveyUSA,KY,4.1,39.0,53.0,606.0,Romney +14,-14.0,2012-09-12 +435,SurveyUSA,OR,4.3,50.0,41.0,552.0,Obama +9,9.0,2012-09-12 +436,PPP (D),OR,3.7,50.0,42.0,686.0,Obama +8,8.0,2012-06-23 +437,SurveyUSA,OR,2.6,47.0,43.0,1468.0,Obama +4,4.0,2012-05-09 +438,SurveyUSA,OR,2.5,50.0,39.0,1615.0,Obama +11,11.0,2012-03-17 +439,SurveyUSA,OR,4.4,48.0,40.0,528.0,Obama +8,8.0,2011-11-20 +440,PPP (D),OR,3.7,50.0,38.0,701.0,Obama +12,12.0,2012-06-20 +441,PPP (D),SD,3.0,40.0,46.0,1045.0,Romney +6,-6.0,2012-01-29 +442,PPP (D),HI,4.1,59.0,32.0,568.0,Obama +27,27.0,2012-10-15 +443,WPA,TX,3.1,40.0,55.0,1000.0,Romney +15,-15.0,2012-09-10 +444,PPP (D),TX,4.0,43.0,50.0,591.0,Romney +7,-7.0,2012-04-21 +445,PPP (D),TX,3.7,42.0,49.0,700.0,Romney +7,-7.0,2012-01-14 +446,PPP (D),TX,4.1,41.0,47.0,569.0,Romney +6,-6.0,2011-09-17 +447,PPP (D),TX,3.5,42.0,50.0,795.0,Romney +8,-8.0,2011-06-26 +448,PPP (D),TX,3.3,42.0,49.0,892.0,Romney +7,-7.0,2011-01-15 +449,Clarus Research,LA,4.0,37.0,53.0,602.0,Romney +16,-16.0,2012-10-06 +450,Tennessean/Vanderbilt,TN,,40.0,47.0,,Romney +7,-7.0,2012-05-06 +451,Middle Tn. State U.,TN,5.0,41.0,47.0,416.0,Romney +6,-6.0,2012-02-19 +452,Tennessean/Vanderbilt,TN,3.0,39.0,42.0,1508.0,Romney +3,-3.0,2012-02-19 +453,PPP (D),TN,4.4,41.0,48.0,500.0,Romney +7,-7.0,2012-02-11 +454,Morning Call,PA,5.0,49.0,42.0,427.0,Obama +7,7.0,2012-09-24 +455,CBS/NYT/Quinnipiac,PA,3.0,54.0,42.0,1162.0,Obama +12,12.0,2012-09-21 +456,Franklin & Marshall,PA,4.9,52.0,43.0,392.0,Obama +9,9.0,2012-09-21 +457,Tribune-Review/Susquehanna,PA,3.5,47.0,45.0,800.0,Obama +2,2.0,2012-09-19 +458,Rasmussen Reports,PA,4.5,51.0,39.0,500.0,Obama +12,12.0,2012-09-19 +459,WeAskAmerica,PA,2.9,48.0,42.0,1214.0,Obama +6,6.0,2012-09-18 +460,Mercyhurst University,PA,4.3,48.0,40.0,522.0,Obama +8,8.0,2012-09-16 +461,Morning Call,PA,4.0,50.0,41.0,640.0,Obama +9,9.0,2012-09-13 +462,Philadelphia Inquirer,PA,4.0,50.0,39.0,600.0,Obama +11,11.0,2012-09-11 +463,Philadelphia Inquirer,PA,4.0,51.0,42.0,601.0,Obama +9,9.0,2012-08-22 +464,Morning Call,PA,5.0,49.0,40.0,422.0,Obama +9,9.0,2012-08-21 +465,Franklin & Marshall,PA,3.8,47.0,42.0,681.0,Obama +5,5.0,2012-08-10 +466,CBS/NYT/Quinnipiac,PA,3.0,53.0,42.0,1168.0,Obama +11,11.0,2012-07-27 +467,PPP (D),PA,3.6,49.0,43.0,758.0,Obama +6,6.0,2012-07-22 +468,Rasmussen Reports,PA,4.5,48.0,44.0,500.0,Obama +4,4.0,2012-07-18 +469,WeAskAmerica,PA,2.8,47.0,40.0,1227.0,Obama +7,7.0,2012-07-10 +470,Quinnipiac,PA,2.8,45.0,39.0,1252.0,Obama +6,6.0,2012-06-22 +471,Quinnipiac,PA,3.1,46.0,40.0,997.0,Obama +6,6.0,2012-06-08 +472,Franklin & Marshall,PA,4.8,48.0,36.0,412.0,Obama +12,12.0,2012-06-01 +473,Rasmussen Reports,PA,4.5,47.0,41.0,500.0,Obama +6,6.0,2012-05-21 +474,PPP (D),PA,3.8,50.0,42.0,671.0,Obama +8,8.0,2012-05-19 +475,Quinnipiac,PA,2.9,47.0,39.0,1168.0,Obama +8,8.0,2012-04-28 +476,Morning Call,PA,5.0,45.0,40.0,492.0,Obama +5,5.0,2012-03-28 +477,Quinnipiac,PA,2.8,45.0,42.0,1232.0,Obama +3,3.0,2012-03-23 +478,Quinnipiac,PA,2.8,46.0,40.0,1256.0,Obama +6,6.0,2012-03-10 +479,PPP (D),PA,3.7,49.0,42.0,689.0,Obama +7,7.0,2012-03-10 +480,Morning Call,PA,4.0,48.0,37.0,625.0,Obama +11,11.0,2012-02-18 +481,Franklin & Marshall,PA,4.0,41.0,33.0,592.0,Obama +8,8.0,2012-02-17 +482,Rasmussen Reports,PA,4.5,45.0,44.0,438.0,Obama +1,1.0,2012-02-16 +483,Tribune-Review/Susquehanna,PA,3.5,43.0,45.0,800.0,Romney +2,-2.0,2012-02-04 +484,Morning Call,PA,5.0,45.0,41.0,422.0,Obama +4,4.0,2011-12-03 +485,Quinnipiac,PA,2.6,46.0,43.0,1453.0,Obama +3,3.0,2011-12-02 +486,PPP (D),PA,4.4,45.0,45.0,500.0,Tie,0.0,2011-11-19 +487,SurveyUSA,PA,3.5,44.0,44.0,800.0,Tie,0.0,2011-11-10 +488,Quinnipiac,PA,2.6,44.0,43.0,1436.0,Obama +1,1.0,2011-11-04 +489,Franklin & Marshall,PA,4.8,35.0,26.0,419.0,Obama +9,9.0,2011-10-27 +490,Quinnipiac,PA,2.7,45.0,43.0,1370.0,Obama +2,2.0,2011-09-24 +491,Magellan Strategies (R),PA,3.7,50.0,40.0,702.0,Obama +10,10.0,2012-09-13 +492,Franklin & Marshall,PA,4.9,36.0,30.0,407.0,Obama +6,6.0,2011-08-26 +493,Quinnipiac,PA,2.7,42.0,44.0,1358.0,Romney +2,-2.0,2011-07-28 +494,PPP (D),PA,4.2,44.0,44.0,545.0,Tie,0.0,2011-07-03 +495,Quinnipiac,PA,2.7,47.0,40.0,1277.0,Obama +7,7.0,2011-06-10 +496,PPP (D),PA,4.0,42.0,43.0,593.0,Romney +1,-1.0,2011-04-09 +497,Morning Call,PA,5.5,43.0,36.0,395.0,Obama +7,7.0,2011-02-19 +498,PPP (D),PA,4.2,46.0,42.0,547.0,Obama +4,4.0,2011-01-04 +499,ARG,VA,4.0,49.0,47.0,600.0,Obama +2,2.0,2012-09-26 +500,Suffolk/WWBT,VA,4.0,46.0,44.0,600.0,Obama +2,2.0,2012-09-25 +501,Roanoke College,VA,4.0,48.0,40.0,589.0,Obama +8,8.0,2012-09-24 +502,WeAskAmerica,VA,2.8,49.0,46.0,1238.0,Obama +3,3.0,2012-09-17 +503,Purple Strategies,VA,4.0,46.0,43.0,600.0,Obama +3,3.0,2012-09-17 +504,FOX News,VA,3.0,50.0,43.0,1006.0,Obama +7,7.0,2012-09-17 +505,PPP (D),VA,3.1,51.0,46.0,1021.0,Obama +5,5.0,2012-09-15 +506,CBS/NYT/Quinnipiac,VA,3.0,50.0,46.0,1474.0,Obama +4,4.0,2012-09-14 +507,Rasmussen Reports,VA,4.5,49.0,48.0,500.0,Obama +1,1.0,2012-09-13 +508,Washington Post,VA,4.0,52.0,44.0,847.0,Obama +8,8.0,2012-09-14 +509,NBC/WSJ/Marist,VA,3.1,49.0,44.0,996.0,Obama +5,5.0,2012-09-10 +510,Gravis Marketing,VA,2.2,44.0,49.0,2238.0,Romney +5,-5.0,2012-09-09 +511,Rasmussen Reports,VA,4.5,47.0,47.0,500.0,Tie,0.0,2012-08-23 +512,PPP (D),VA,3.4,50.0,45.0,855.0,Obama +5,5.0,2012-08-18 +513,Purple Strategies,VA,4.0,45.0,48.0,600.0,Romney +3,-3.0,2012-08-14 +514,Rasmussen Reports,VA,4.5,48.0,46.0,500.0,Obama +2,2.0,2012-08-07 +515,CBS/NYT/Quinnipiac,VA,3.0,49.0,45.0,1412.0,Obama +4,4.0,2012-08-03 +516,Rasmussen Reports,VA,4.5,47.0,46.0,500.0,Obama +1,1.0,2012-07-17 +517,Quinnipiac,VA,2.4,44.0,44.0,1673.0,Tie,0.0,2012-07-13 +518,Purple Strategies,VA,4.0,46.0,44.0,600.0,Obama +2,2.0,2012-07-11 +519,PPP (D),VA,3.9,50.0,42.0,647.0,Obama +8,8.0,2012-07-07 +520,WeAskAmerica,VA,3.0,43.0,48.0,1106.0,Romney +5,-5.0,2012-06-25 +521,Rasmussen Reports,VA,4.5,47.0,47.0,500.0,Tie,0.0,2012-06-03 +522,Purple Strategies,VA,4.0,49.0,46.0,600.0,Obama +3,3.0,2012-06-03 +523,Quinnipiac,VA,2.7,47.0,42.0,1282.0,Obama +5,5.0,2012-06-02 +524,Virginian-Pilot/ODU,VA,3.5,49.0,42.0,776.0,Obama +7,7.0,2012-05-31 +525,NBC News/Marist,VA,3.0,48.0,44.0,1076.0,Obama +4,4.0,2012-05-19 +526,Washington Post,VA,4.0,51.0,44.0,964.0,Obama +7,7.0,2012-04-30 +527,PPP (D),VA,3.8,51.0,43.0,680.0,Obama +8,8.0,2012-04-28 +528,Rasmussen Reports,VA,4.5,44.0,45.0,500.0,Romney +1,-1.0,2012-04-23 +529,Purple Strategies,VA,4.1,48.0,46.0,600.0,Obama +2,2.0,2012-04-21 +530,Roanoke College,VA,4.2,41.0,46.0,537.0,Romney +5,-5.0,2012-03-31 +531,Rasmussen Reports,VA,4.5,51.0,42.0,500.0,Obama +9,9.0,2012-03-20 +532,Quinnipiac,VA,3.1,50.0,42.0,1034.0,Obama +8,8.0,2012-03-16 +533,NBC News/Marist,VA,2.8,52.0,35.0,1273.0,Obama +17,17.0,2012-03-01 +534,Roanoke College,VA,4.0,42.0,43.0,607.0,Romney +1,-1.0,2012-02-20 +535,Rasmussen Reports,VA,4.5,49.0,43.0,500.0,Obama +6,6.0,2012-02-21 +536,CNU/Times-Dispatch,VA,3.1,43.0,46.0,1018.0,Romney +3,-3.0,2012-02-09 +537,Quinnipiac,VA,2.5,47.0,43.0,1544.0,Obama +4,4.0,2012-02-04 +538,Mason-Dixon,VA,3.9,45.0,44.0,625.0,Obama +1,1.0,2012-01-17 +539,Quinnipiac,VA,2.9,42.0,44.0,1135.0,Romney +2,-2.0,2011-12-16 +540,PPP (D),VA,4.0,48.0,42.0,600.0,Obama +6,6.0,2011-12-12 +541,Quinnipiac,VA,2.6,44.0,45.0,1459.0,Romney +1,-1.0,2011-10-06 +542,CNU/Times-Dispatch,VA,3.1,42.0,46.0,1027.0,Romney +4,-4.0,2011-10-06 +543,Rasmussen Reports,VA,4.5,45.0,46.0,500.0,Romney +1,-1.0,2011-09-28 +544,Roanoke College,VA,4.0,37.0,45.0,601.0,Romney +8,-8.0,2011-09-12 +545,Quinnipiac,VA,2.7,42.0,44.0,1368.0,Romney +2,-2.0,2011-09-10 +546,PPP (D),VA,4.4,47.0,43.0,500.0,Obama +4,4.0,2011-07-23 +547,PPP (D),VA,4.2,51.0,40.0,547.0,Obama +11,11.0,2011-05-07 +548,Washington Post,VA,3.5,50.0,44.0,1040.0,Obama +6,6.0,2012-05-01 +549,PPP (D),VA,3.5,48.0,42.0,524.0,Obama +6,6.0,2011-02-26 +550,PPP (D),VA,4.2,48.0,43.0,551.0,Obama +5,5.0,2010-11-12 +551,Talk Business Poll,AR,2.0,35.0,56.0,2228.0,Romney +21,-21.0,2012-09-17 +552,Talk Business Poll,AR,3.6,33.0,57.0,759.0,Romney +24,-24.0,2012-03-26 +553,Talk Business Poll,AR,2.1,34.0,50.0,2101.0,Romney +16,-16.0,2011-09-15 +554,Castleton State College,VT,4.5,62.0,25.0,477.0,Obama +37,37.0,2012-08-16 +555,Castleton State College,VT,4.0,59.0,28.0,607.0,Obama +31,31.0,2012-05-12 +556,Castleton State College,VT,3.5,58.0,33.0,800.0,Obama +25,25.0,2012-02-17 +557,PPP (D),VT,2.8,54.0,34.0,1233.0,Obama +20,20.0,2012-07-30 +558,The Simon Poll/SIU,IL,2.8,47.0,34.0,1261.0,Obama +13,13.0,2012-09-07 +559,WeAskAmerica,IL,2.8,54.0,37.0,1382.0,Obama +17,17.0,2012-09-05 +560,Chicago Tribune,IL,4.0,56.0,35.0,600.0,Obama +21,21.0,2012-02-04 +561,The Simon Poll/SIU,IL,3.0,46.0,39.0,1000.0,Obama +7,7.0,2011-10-14 +562,FOX Chicago/WAA,IL,2.3,50.0,35.0,1815.0,Obama +15,15.0,2012-09-28 +563,Howey/DePauw,IN,3.5,40.0,52.0,800.0,Romney +12,-12.0,2012-09-21 +564,Rasmussen Reports,IN,5.0,35.0,51.0,400.0,Romney +16,-16.0,2012-08-01 +565,Howey/DePauw,IN,4.5,40.0,49.0,503.0,Romney +9,-9.0,2012-03-27 +566,WeAskAmerica,IA,2.8,48.0,44.0,1273.0,Obama +4,4.0,2012-09-26 +567,Des Moines Register,IA,3.8,49.0,45.0,650.0,Obama +4,4.0,2012-09-25 +568,PPP (D),IA,3.6,51.0,44.0,754.0,Obama +7,7.0,2012-09-25 +569,Voter/Consumer Res/TIR (R),IA,4.4,46.0,47.0,500.0,Romney +1,-1.0,2012-09-24 +570,ARG,IA,4.0,51.0,44.0,600.0,Obama +7,7.0,2012-09-22 +571,Rasmussen Reports,IA,4.5,44.0,47.0,500.0,Romney +3,-3.0,2012-09-19 +572,NBC/WSJ/Marist,IA,3.3,50.0,42.0,898.0,Obama +8,8.0,2012-09-17 +573,PPP (D),IA,2.8,47.0,45.0,1244.0,Obama +2,2.0,2012-08-25 +574,Rasmussen Reports,IA,4.5,44.0,46.0,500.0,Romney +2,-2.0,2012-08-08 +575,PPP (D),IA,2.9,48.0,43.0,1131.0,Obama +5,5.0,2012-07-14 +576,WeAskAmerica,IA,3.0,45.0,44.0,1086.0,Obama +1,1.0,2012-06-18 +577,Rasmussen Reports,IA,4.5,46.0,47.0,500.0,Romney +1,-1.0,2012-06-11 +578,NBC News/Marist,IA,3.0,44.0,44.0,1106.0,Tie,0.0,2012-05-23 +579,PPP (D),IA,2.9,51.0,41.0,1181.0,Obama +10,10.0,2012-05-05 +580,Des Moines Register,IA,4.0,44.0,46.0,611.0,Romney +2,-2.0,2012-02-14 +581,NBC News/Marist,IA,2.5,46.0,39.0,1503.0,Obama +7,7.0,2011-11-28 +582,PPP (D),IA,3.6,46.0,42.0,749.0,Obama +4,4.0,2011-10-09 +583,NBC News/Marist,IA,1.8,43.0,40.0,2836.0,Obama +3,3.0,2011-10-04 +584,PPP (D),IA,3.5,49.0,39.0,798.0,Obama +10,10.0,2011-08-20 +585,Mason-Dixon,IA,3.9,44.0,47.0,629.0,Romney +3,-3.0,2012-07-06 +586,PPP (D),IA,2.6,49.0,40.0,1387.0,Obama +9,9.0,2011-05-29 +587,PPP (D),IA,2.9,45.0,41.0,1109.0,Obama +4,4.0,2011-04-16 +588,PPP (D),IA,3.0,47.0,41.0,1077.0,Obama +6,6.0,2011-01-08 +589,HighGround/Moore (R)*,AZ,4.0,42.0,46.0,500.0,Romney +4,-4.0,2012-09-26 +590,Rasmussen Reports,AZ,4.5,42.0,52.0,500.0,Romney +10,-10.0,2012-09-25 +591,Purple Strategies,AZ,4.0,45.0,48.0,600.0,Romney +3,-3.0,2012-09-17 +592,PPP (D),AZ,3.1,44.0,53.0,993.0,Romney +9,-9.0,2012-09-08 +593,PPP (D),AZ,3.4,41.0,52.0,833.0,Romney +11,-11.0,2012-07-24 +594,Rasmussen Reports,AZ,4.5,41.0,54.0,500.0,Romney +13,-13.0,2012-06-26 +595,Project New America/PPP (D),AZ,3.5,46.0,49.0,791.0,Romney +3,-3.0,2012-06-05 +596,PPP (D),AZ,4.4,43.0,50.0,500.0,Romney +7,-7.0,2012-05-19 +597,Magellan (R),AZ,3.3,43.0,52.0,909.0,Romney +9,-9.0,2012-05-01 +598,Arizona State,AZ,4.4,40.0,42.0,488.0,Romney +2,-2.0,2012-04-15 +599,Behavior Research Center,AZ,4.4,42.0,40.0,511.0,Obama +2,2.0,2012-04-13 +600,Rasmussen Reports,AZ,4.5,40.0,51.0,500.0,Romney +11,-11.0,2012-03-13 +601,NBC News/Marist,AZ,2.8,40.0,45.0,1265.0,Romney +5,-5.0,2012-02-20 +602,PPP (D),AZ,3.6,47.0,47.0,743.0,Tie,0.0,2012-02-18 +603,Behavior Research Center,AZ,4.3,37.0,43.0,553.0,Romney +6,-6.0,2012-01-07 +604,PPP (D),AZ,4.4,42.0,49.0,500.0,Romney +7,-7.0,2011-11-19 +605,Behavior Research Center,AZ,4.1,45.0,40.0,581.0,Obama +5,5.0,2011-10-19 +606,PPP (D),AZ,3.9,44.0,48.0,623.0,Romney +4,-4.0,2011-04-30 +607,PPP (D),AZ,4.0,43.0,49.0,599.0,Romney +6,-6.0,2011-01-29 +608,PPP (D),AZ,3.9,43.0,50.0,617.0,Romney +7,-7.0,2010-09-20 +609,Rasmussen Reports,ME,4.5,52.0,40.0,500.0,Obama +12,12.0,2012-09-25 +610,PPP (D),ME,3.5,55.0,39.0,804.0,Obama +16,16.0,2012-09-18 +611,MPRC (D)*,ME,3.4,54.0,37.0,856.0,Obama +17,17.0,2012-09-16 +612,Critical Insights,ME,4.0,52.0,36.0,618.0,Obama +16,16.0,2012-09-14 +613,Critical Insights,ME,4.0,49.0,35.0,615.0,Obama +14,14.0,2012-06-23 +614,WBUR/MassINC,ME,4.4,48.0,34.0,506.0,Obama +14,14.0,2012-06-14 +615,Critical Insights,ME,4.0,50.0,42.0,600.0,Obama +8,8.0,2012-05-05 +616,MPRC (D),ME,3.1,55.0,37.0,993.0,Obama +18,18.0,2012-04-01 +617,PPP (D),ME,2.8,58.0,35.0,1256.0,Obama +23,23.0,2012-03-03 +618,PPP (D),ME,3.8,49.0,38.0,673.0,Obama +11,11.0,2011-10-30 +619,Critical Insights,ME,4.0,41.0,40.0,600.0,Obama +1,1.0,2011-10-21 +620,PPP (D),ME,2.8,49.0,41.0,1247.0,Obama +8,8.0,2011-03-05 +621,Baltimore Sun,MD,3.5,57.0,34.0,804.0,Obama +23,23.0,2012-09-26 +622,Gonzales Research,MD,3.5,55.0,36.0,813.0,Obama +19,19.0,2012-09-20 +623,PPP (D),MD,3.4,58.0,35.0,852.0,Obama +23,23.0,2012-05-18 +624,WBUR/MassINC,MA,4.4,60.0,32.0,504.0,Obama +28,28.0,2012-09-27 +625,Boston Globe,MA,4.4,57.0,30.0,502.0,Obama +27,27.0,2012-09-24 +626,Rasmussen Reports,MA,4.5,55.0,40.0,500.0,Obama +15,15.0,2012-09-24 +627,WBUR/MassINC,MA,4.4,59.0,31.0,507.0,Obama +28,28.0,2012-09-16 +628,UMass/Boston Herald,MA,5.5,59.0,36.0,497.0,Obama +23,23.0,2012-09-15 +629,Suffolk/7News,MA,4.0,64.0,31.0,600.0,Obama +33,33.0,2012-09-15 +630,PPP (D),MA,3.3,57.0,39.0,876.0,Obama +18,18.0,2012-09-15 +631,Western NE University,MA,4.6,60.0,38.0,444.0,Obama +22,22.0,2012-09-10 +632,PPP (D),MA,2.9,55.0,39.0,1115.0,Obama +16,16.0,2012-08-18 +633,PPP (D),MA,3.3,55.0,39.0,902.0,Obama +16,16.0,2012-06-23 +634,Western NE University,MA,4.4,56.0,34.0,504.0,Obama +22,22.0,2012-05-30 +635,Boston Globe,MA,3.8,46.0,34.0,651.0,Obama +12,12.0,2012-05-28 +636,Suffolk/7News,MA,4.0,59.0,34.0,600.0,Obama +25,25.0,2012-05-21 +637,Rasmussen Reports,MA,4.5,56.0,35.0,500.0,Obama +21,21.0,2012-05-07 +638,Rasmussen Reports,MA,4.5,51.0,40.0,500.0,Obama +11,11.0,2012-04-09 +639,Boston Globe,MA,4.2,49.0,33.0,544.0,Obama +16,16.0,2012-03-24 +640,PPP (D),MA,3.2,58.0,35.0,936.0,Obama +23,23.0,2012-03-17 +641,Western NE University,MA,4.3,60.0,36.0,527.0,Obama +24,24.0,2012-02-27 +642,Rasmussen Reports,MA,4.5,55.0,38.0,500.0,Obama +17,17.0,2012-02-29 +643,Suffolk/7News,MA,4.0,53.0,39.0,600.0,Obama +14,14.0,2012-02-13 +644,WBUR/MassINC,MA,4.4,55.0,34.0,503.0,Obama +21,21.0,2012-02-08 +645,Mass Insight/Opinion Dynamics,MA,4.4,53.0,35.0,456.0,Obama +18,18.0,2012-02-02 +646,UMass/Boston Herald,MA,3.8,57.0,33.0,1005.0,Obama +24,24.0,2012-09-25 +647,PPP (D),MA,3.5,53.0,40.0,791.0,Obama +13,13.0,2011-09-17 +648,PPP (D),MA,3.2,57.0,37.0,957.0,Obama +20,20.0,2011-06-04 +649,PPP (D),MA,4.4,52.0,43.0,500.0,Obama +9,9.0,2010-11-30 +650,Deseret News/KSL,UT,2.8,26.0,68.0,1222.0,Romney +42,-42.0,2012-06-18 +651,PPP (D),UT,3.6,31.0,63.0,732.0,Romney +32,-32.0,2012-07-09 +652,Mason-Dixon,UT,5.0,22.0,73.0,400.0,Romney +51,-51.0,2012-04-27 +653,Deseret News,UT,6.2,27.0,67.0,254.0,Romney +40,-40.0,2012-04-27 +654,WeAskAmerica,MO,2.9,45.0,48.0,1145.0,Romney +3,-3.0,2012-09-26 +655,Gravis Marketing*,MO,2.3,39.0,48.0,1959.0,Romney +9,-9.0,2012-09-17 +656,Rasmussen Reports,MO,4.5,45.0,48.0,500.0,Romney +3,-3.0,2012-09-11 +657,PPP (D),MO,3.9,41.0,53.0,621.0,Romney +12,-12.0,2012-08-29 +658,Post-Dispatch/Mason-Dixon,MO,4.0,43.0,50.0,625.0,Romney +7,-7.0,2012-08-23 +659,Rasmussen Reports,MO,4.5,47.0,46.0,500.0,Obama +1,1.0,2012-08-22 +660,PPP (D),MO,4.4,42.0,52.0,500.0,Romney +10,-10.0,2012-08-20 +661,SurveyUSA,MO,4.1,44.0,45.0,585.0,Romney +1,-1.0,2012-08-11 +662,Rasmussen Reports,MO,4.5,44.0,50.0,500.0,Romney +6,-6.0,2012-07-30 +663,Post-Dispatch/Mason-Dixon*,MO,4.0,42.0,51.0,625.0,Romney +9,-9.0,2012-07-24 +664,WeAskAmerica*,MO,3.0,40.0,49.0,1172.0,Romney +9,-9.0,2012-07-24 +665,Rasmussen Reports,MO,4.5,42.0,49.0,500.0,Romney +7,-7.0,2012-06-07 +666,PPP (D),MO,4.0,45.0,44.0,602.0,Obama +1,1.0,2012-05-26 +667,Rasmussen Reports,MO,4.5,45.0,48.0,500.0,Romney +3,-3.0,2012-04-17 +668,Rasmussen Reports,MO,4.5,41.0,50.0,500.0,Romney +9,-9.0,2012-03-15 +669,PPP (D),MO,4.1,45.0,45.0,582.0,Tie,0.0,2012-01-28 +670,Rasmussen Reports,MO,4.5,42.0,45.0,500.0,Romney +3,-3.0,2011-11-09 +671,PPP (D),MO,3.9,43.0,47.0,632.0,Romney +4,-4.0,2011-09-11 +672,PPP (D),MO,3.9,43.0,45.0,555.0,Romney +2,-2.0,2011-04-30 +673,PPP (D),MO,4.0,43.0,44.0,612.0,Romney +1,-1.0,2011-03-05 +674,PPP (D),MO,4.3,41.0,47.0,515.0,Romney +6,-6.0,2010-11-30 +675,Star Tribune/Mason-Dixon*,MN,3.5,48.0,40.0,800.0,Obama +8,8.0,2012-09-18 +676,PPP (D),MN,3.4,51.0,44.0,824.0,Obama +7,7.0,2012-09-11 +677,KSTP/SurveyUSA,MN,4.3,50.0,40.0,551.0,Obama +10,10.0,2012-09-08 +678,KSTP/SurveyUSA,MN,4.3,46.0,40.0,552.0,Obama +6,6.0,2012-07-18 +679,PPP (D),MN,3.1,54.0,39.0,973.0,Obama +15,15.0,2012-06-02 +680,KSTP/SurveyUSA,MN,4.4,52.0,38.0,516.0,Obama +14,14.0,2012-05-10 +681,KSTP/SurveyUSA,MN,4.3,49.0,36.0,542.0,Obama +13,13.0,2012-02-01 +682,PPP (D),MN,2.8,51.0,41.0,1236.0,Obama +10,10.0,2012-01-22 +683,KSTP/SurveyUSA,MN,4.3,45.0,39.0,543.0,Obama +6,6.0,2011-11-04 +684,St. Cloud State U.,MN,5.0,45.0,39.0,626.0,Obama +6,6.0,2012-10-22 +685,PPP (D),MN,2.9,51.0,36.0,1179.0,Obama +15,15.0,2011-05-29 +686,PPP (D),MN,3.2,47.0,42.0,949.0,Obama +5,5.0,2010-12-05 +687,WeAskAmerica,MI,3.1,52.0,40.0,1064.0,Obama +12,12.0,2012-09-26 +688,Gravis Marketing,MI,3.3,50.0,46.0,804.0,Obama +4,4.0,2012-09-22 +689,Rasmussen Reports,MI,4.5,54.0,42.0,500.0,Obama +12,12.0,2012-09-20 +690,Detroit News,MI,4.0,52.0,38.0,600.0,Obama +14,14.0,2012-09-16 +691,CNN/Opinion Research,MI,3.5,52.0,44.0,754.0,Obama +8,8.0,2012-09-16 +692,MRG,MI,4.0,48.0,42.0,600.0,Obama +6,6.0,2012-09-13 +693,Baydoun/Foster (D),MI,2.9,46.0,44.0,1156.0,Obama +2,2.0,2012-09-12 +694,EPIC-MRA,MI,4.5,47.0,37.0,600.0,Obama +10,10.0,2012-09-10 +695,PPP (D),MI,3.4,51.0,44.0,1001.0,Obama +7,7.0,2012-09-01 +696,EPIC-MRA,MI,2.6,49.0,46.0,1200.0,Obama +3,3.0,2012-08-28 +697,Mitchell Research,MI,2.7,47.0,47.0,1277.0,Tie,0.0,2012-08-23 +698,Detroit News,MI,4.0,48.0,42.0,600.0,Obama +6,6.0,2012-08-19 +699,Baydoun/Foster (D),MI,2.4,44.0,48.0,1733.0,Romney +4,-4.0,2012-08-16 +700,Mitchell Research,MI,3.0,49.0,44.0,1079.0,Obama +5,5.0,2012-08-13 +701,EPIC-MRA,MI,4.0,48.0,42.0,600.0,Obama +6,6.0,2012-07-28 +702,Rasmussen Reports,MI,4.5,48.0,42.0,500.0,Obama +6,6.0,2012-07-23 +703,Mitchell Research,MI,3.4,44.0,45.0,825.0,Romney +1,-1.0,2012-07-23 +704,PPP (D),MI,4.1,53.0,39.0,579.0,Obama +14,14.0,2012-07-22 +705,NBC News/Marist,MI,3.0,47.0,43.0,1078.0,Obama +4,4.0,2012-06-25 +706,Mitchell Research,MI,3.6,47.0,46.0,750.0,Obama +1,1.0,2012-06-18 +707,WeAskAmerica,MI,3.1,43.0,45.0,1010.0,Romney +2,-2.0,2012-06-18 +708,Rasmussen Reports,MI,4.5,50.0,42.0,500.0,Obama +8,8.0,2012-06-14 +709,Baydoun/Foster (D),MI,2.3,47.0,46.0,1783.0,Obama +1,1.0,2012-06-12 +710,EPIC-MRA,MI,4.0,45.0,46.0,600.0,Romney +1,-1.0,2012-06-04 +711,PPP (D),MI,4.4,53.0,39.0,500.0,Obama +14,14.0,2012-05-26 +712,Glengariff Group (R),MI,4.0,45.0,40.0,600.0,Obama +5,5.0,2012-05-11 +713,EPIC-MRA,MI,4.0,47.0,43.0,600.0,Obama +4,4.0,2012-04-02 +714,MRG,MI,4.0,49.0,42.0,600.0,Obama +7,7.0,2012-03-17 +715,NBC News/Marist,MI,2.5,51.0,33.0,1546.0,Obama +18,18.0,2012-02-20 +716,PPP (D),MI,4.1,54.0,38.0,560.0,Obama +16,16.0,2012-02-11 +717,EPIC-MRA,MI,4.0,48.0,40.0,600.0,Obama +8,8.0,2012-01-23 +718,EPIC-MRA,MI,4.0,41.0,46.0,600.0,Romney +5,-5.0,2011-11-15 +719,SurveyUSA,MI,4.5,50.0,39.0,500.0,Obama +11,11.0,2012-10-13 +720,Inside MI Politcs/MRG,MI,4.0,44.0,44.0,600.0,Tie,0.0,2012-09-17 +721,PPP (D),MI,4.0,47.0,42.0,593.0,Obama +5,5.0,2011-07-23 +722,EPIC-MRA,MI,4.0,42.0,46.0,600.0,Romney +4,-4.0,2011-07-10 +723,PPP (D),MI,4.4,48.0,41.0,502.0,Obama +7,7.0,2011-03-19 +724,EPIC-MRA,MI,4.0,41.0,46.0,600.0,Romney +5,-5.0,2011-02-15 +725,PPP (D),MI,2.8,47.0,43.0,1224.0,Obama +4,4.0,2010-12-05 +726,Mason-Dixon,MT,4.0,42.0,51.0,625.0,Romney +9,-9.0,2012-09-18 +727,PPP (D),MT,3.8,45.0,50.0,656.0,Romney +5,-5.0,2012-09-11 +728,Rasmussen Reports,MT,4.5,38.0,55.0,500.0,Romney +17,-17.0,2012-08-20 +729,Rasmussen Reports,MT,4.5,42.0,51.0,500.0,Romney +9,-9.0,2012-06-18 +730,Rasmussen Reports,MT,5.0,44.0,51.0,450.0,Romney +7,-7.0,2012-05-02 +731,PPP (D),MT,3.2,43.0,48.0,934.0,Romney +5,-5.0,2012-04-28 +732,Rasmussen Reports,MT,4.5,40.0,49.0,500.0,Romney +9,-9.0,2012-04-02 +733,Rasmussen Reports,MT,4.5,41.0,48.0,500.0,Romney +7,-7.0,2012-02-22 +734,PPP (D),MT,2.4,40.0,50.0,1625.0,Romney +10,-10.0,2011-11-29 +735,PPP (D),MT,3.4,41.0,49.0,819.0,Romney +8,-8.0,2011-06-18 +736,PPP (D),MT,2.9,39.0,50.0,1176.0,Romney +11,-11.0,2010-11-12 +737,PPP (D),MS,3.5,36.0,54.0,796.0,Romney +18,-18.0,2011-11-05 +738,PPP (D),MS,3.4,40.0,46.0,817.0,Romney +6,-6.0,2011-03-26 diff --git a/data_nuevo/2012_poll_data_states.pkl b/data_nuevo/2012_poll_data_states.pkl new file mode 100644 index 0000000..5e5cd95 Binary files /dev/null and b/data_nuevo/2012_poll_data_states.pkl differ diff --git a/data_nuevo/state_data_2004.pkl b/data_nuevo/state_data_2004.pkl new file mode 100644 index 0000000..6c096cd Binary files /dev/null and b/data_nuevo/state_data_2004.pkl differ diff --git a/data_nuevo/state_data_2008.pkl b/data_nuevo/state_data_2008.pkl new file mode 100644 index 0000000..3bb1b2e Binary files /dev/null and b/data_nuevo/state_data_2008.pkl differ diff --git a/data_nuevo/wsj_forecast.csv b/data_nuevo/wsj_forecast.csv new file mode 100644 index 0000000..3b80599 --- /dev/null +++ b/data_nuevo/wsj_forecast.csv @@ -0,0 +1,52 @@ +,Unnamed: 0,Forecaster,Institution,gdp_q3_2012,gdp_q4_2012 +0,0,Paul Ashworth,Capital Economics,2.0,1.5 +1,1,Nariman Behravesh,IHS Global Insight,1.5,1.6 +2,2,Richard Berner/ David Greenlaw *,Morgan Stanley,, +3,3,Ram Bhagavatula,Combinatorics Capital,2.0,4.0 +4,4,Beth Ann Bovino *,Standard and Poor's,, +5,5,Jay Brinkmann,Mortgage Bankers Association,1.8,1.9 +6,6,Michael Carey,Credit Agricole CIB,1.7,1.6 +7,7,Joseph Carson,AllianceBernstein,2.5,3.5 +8,8,Julia Coronado,BNP Paribas,1.4,1.6 +9,9,Mike Cosgrove,Econoclast,1.6,1.6 +10,10,Lou Crandall,Wrightson ICAP,1.8,1.8 +11,11,J. Dewey Daane,Vanderbilt University,1.5,1.5 +12,12,Douglas Duncan,Fannie Mae,1.8,1.7 +13,13,Robert Dye,Comerica Bank,2.5,2.2 +14,14,Maria Fiorini Ramirez/Joshua Shapiro,"MFR, Inc.",1.4,1.2 +15,15,Ethan Harris,Bank of America Securities- Merrill Lynch,1.3,1.0 +16,16,Maury Harris,UBS,1.5,1.8 +17,17,Jan Hatzius,"Goldman, Sachs & Co.",2.3,1.5 +18,18,Tracy Herrick,Avidbank,1.8,1.8 +19,19,Stuart Hoffman *,PNC Financial Services Group,, +20,20,Gene Huang,FedEx Corp.,1.9,1.7 +21,21,William B. Hummer,Wintrust Wealth Management,1.7,1.9 +22,22,Bruce Kasman,JP Morgan Chase & Co.,1.5,2.0 +23,23,Joseph LaVorgna,Deutsche Bank Securities Inc.,2.7,2.8 +24,24,Edward Leamer/David Shulman,UCLA Anderson Forecast,1.3,1.5 +25,25,Don Leavens/Tim Gill,NEMA Business Information Services,1.7,1.7 +26,26,John Lonski,Moody's Investors Service,1.5,1.3 +27,27,Dean Maki,Barclays Capital,2.0,2.5 +28,28,Aneta Markowska *,Societe Generale,, +29,29,Jim Meil/Arun Raha,Eaton Corp.,1.2,2.1 +30,30,Mark Nielson,MacroEcon Global Advisors,2.2,2.8 +31,31,Michael P. Niemira,International Council of Shopping Centers,2.3,2.2 +32,32,Jim O'Sullivan,High Frequency Economics,2.5,2.0 +33,33,Nicholas S. Perna,Perna Associates,2.2,1.5 +34,34,Dr. Joel Prakken/ Chris Varvares,Macroeconomic Advisers,1.5,1.4 +35,35,David Resler,Nomura Securities International,1.9,1.7 +36,36,John Ryding/Conrad DeQuadros,RDQ Economics,2.1,2.4 +37,37,John Silvia,Wells Fargo & Co.,1.6,1.7 +38,38,Allen Sinai,"Decision Economics, Inc.",2.1,2.7 +39,39,James F. Smith,Parsec Financial Management,3.8,4.8 +40,40,Sean M. Snaith,University of Central Florida,1.7,1.9 +41,41,Sung Won Sohn,California State University,1.8,1.7 +42,42,Neal Soss,CSFB,1.5,2.2 +43,43,Stephen Stanley,Pierpont Securities,1.0,2.1 +44,44,Susan M. Sterne,Economic Analysis Associates Inc.,2.2,1.9 +45,45,Diane Swonk,Mesirow Financial,1.3,1.5 +46,46,Carl Tannenbaum ,The Northern Trust,1.7,2.0 +47,47,Bart van Ark,The Conference Board,1.6,1.6 +48,48,Brian S. Wesbury/ Robert Stein,"First Trust Advisors, L.P.",2.5,3.0 +49,49,William T. Wilson,Skolkovo Institute for Emerging Market Studies,1.9,2.2 +50,50,Lawrence Yun,National Association of Realtors,1.7,2.1 diff --git a/pydata_env_export.env b/pydata_env_export.env new file mode 100644 index 0000000..8db0028 --- /dev/null +++ b/pydata_env_export.env @@ -0,0 +1,74 @@ +name: pydata +dependencies: +- appnope=0.1.0=py27_0 +- backports=1.0=py27_0 +- backports_abc=0.4=py27_0 +- configparser=3.5.0b2=py27_1 +- decorator=4.0.9=py27_0 +- entrypoints=0.2=py27_1 +- freetype=2.5.5=0 +- functools32=3.2.3.2=py27_0 +- get_terminal_size=1.0.0=py27_0 +- ipykernel=4.3.1=py27_0 +- ipython=4.2.0=py27_1 +- ipython_genutils=0.1.0=py27_0 +- ipywidgets=4.1.1=py27_0 +- jinja2=2.8=py27_0 +- jsonschema=2.5.1=py27_0 +- jupyter=1.0.0=py27_2 +- jupyter_client=4.2.2=py27_0 +- jupyter_console=4.1.1=py27_0 +- jupyter_core=4.1.0=py27_0 +- libpng=1.6.17=0 +- markupsafe=0.23=py27_0 +- matplotlib=1.4.3=np19py27_3 +- mistune=0.7.2=py27_1 +- mkl=11.3.3=0 +- nbconvert=4.2.0=py27_0 +- nbformat=4.0.1=py27_0 +- notebook=4.2.0=py27_0 +- numpy=1.11.0=py27_1 +- openssl=1.0.2h=0 +- pandas=0.16.2=np19py27_0 +- path.py=8.2.1=py27_0 +- patsy=0.4.1=py27_0 +- pexpect=4.0.1=py27_0 +- pickleshare=0.5=py27_0 +- pip=8.1.1=py27_1 +- ptyprocess=0.5=py27_0 +- pygments=2.1.3=py27_0 +- pyparsing=2.0.3=py27_0 +- pyqt=4.11.4=py27_1 +- python=2.7.11=0 +- python-dateutil=2.5.3=py27_0 +- python.app=1.2=py27_4 +- pytz=2016.4=py27_0 +- pyzmq=15.2.0=py27_0 +- qt=4.8.7=1 +- qtconsole=4.2.1=py27_0 +- readline=6.2=2 +- scikit-learn=0.17.1=np111py27_1 +- scipy=0.17.1=np111py27_0 +- setuptools=21.2.1=py27_0 +- simplegeneric=0.8.1=py27_0 +- singledispatch=3.4.0.3=py27_0 +- sip=4.16.9=py27_0 +- six=1.10.0=py27_0 +- sqlite=3.9.2=0 +- ssl_match_hostname=3.4.0.2=py27_1 +- statsmodels=0.6.1=np19py27_0 +- terminado=0.5=py27_1 +- tk=8.5.18=0 +- tornado=4.3=py27_0 +- traitlets=4.2.1=py27_0 +- wheel=0.29.0=py27_0 +- zlib=1.2.8=0 +- pip: + - backports-abc==0.4 + - backports.shutil-get-terminal-size==1.0.0 + - backports.ssl-match-hostname==3.4.0.2 + - ipython-genutils==0.1.0 + - jupyter-client==4.2.2 + - jupyter-console==4.1.1 + - jupyter-core==4.1.0 + diff --git a/silver_model.ipynb b/silver_model.ipynb index 83b922a..23ac87c 100644 --- a/silver_model.ipynb +++ b/silver_model.ipynb @@ -1,5885 +1,10754 @@ { - "metadata": { - "name": "silver_model" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "GitHub link for the talk. You can clone the data and play with it yourself. Please submit any improvements as pull requests\n", - "\n", - "[https://github.com/jseabold/538model](https://github.com/jseabold/538model)" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import datetime\n", - "\n", - "import numpy as np\n", - "import statsmodels.api as sm\n", - "import matplotlib.pyplot as plt\n", - "import pandas\n", - "from scipy import stats\n", - "np.set_printoptions(precision=4, suppress=True)\n", - "pandas.set_printoptions(notebook_repr_html=False,\n", - " precision=4,\n", - " max_columns=12, column_space=10,\n", - " max_colwidth=25)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "today = datetime.datetime(2012, 10, 2)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Outline" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "GitHub link for the talk. You can clone the data and play with it yourself. Please submit any improvements as pull requests\n", + "\n", + "[https://github.com/jseabold/538model](https://github.com/jseabold/538model)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import datetime\n", + "\n", + "import numpy as np\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "import pandas\n", + "from pandas import DataFrame, Series\n", + "from scipy import stats\n", + "np.set_printoptions(precision=4, suppress=True)\n", + "%matplotlib inline\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "today = datetime.datetime(2012, 10, 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Methodology was obtained from the old [538 Blog](http://www.fivethirtyeight.com/2008/03/frequently-asked-questions-last-revised.html) with updates at the [new site hosted by the New York Times](http://fivethirtyeight.blogs.nytimes.com/methodology/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Polling Average: Aggregate polling data, and weight it according to our reliability scores.\n", + "\n", + "2. Trend Adjustment: Adjust the polling data for current trends.\n", + "\n", + "3. Regression: Analyze demographic data in each state by means of regression analysis.\n", + "\n", + "4. Snapshot: Combine the polling data with the regression analysis to produce an electoral snapshot. This is our estimate of what would happen if the election were held today.\n", + "\n", + "5. Projection: Translate the snapshot into a projection of what will happen in November, by allocating out undecided voters and applying a discount to current polling leads based on historical trends.\n", + "\n", + "6. Simulation: Simulate our results 10,000 times based on the results of the projection to account for the uncertainty in our estimates. The end result is a robust probabilistic assessment of what will happen in each state as well as in the nation as a whole. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get the Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Consensus forecast of GDP growth over the next two economic quarters
(Median of WSJ's monthly forecasting panel)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The process for creating an economic index for the 538 model is described [here](http://fivethirtyeight.blogs.nytimes.com/2012/07/05/measuring-the-effect-of-the-economy-on-elections/#more-31732)." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "Obtained from WSJ.com on 10/2/12" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "Pandas methods are NaN aware, so we can just get the median." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "forecasts = pandas.read_csv(\"data_nuevo/wsj_forecast.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0Unnamed: 0.1ForecasterInstitutiongdp_q3_2012gdp_q4_2012
000Paul AshworthCapital Economics2.01.5
111Nariman BehraveshIHS Global Insight1.51.6
222Richard Berner/ David Greenlaw *Morgan StanleyNaNNaN
333Ram BhagavatulaCombinatorics Capital2.04.0
444Beth Ann Bovino *Standard and Poor'sNaNNaN
555Jay BrinkmannMortgage Bankers Association1.81.9
666Michael CareyCredit Agricole CIB1.71.6
777Joseph CarsonAllianceBernstein2.53.5
888Julia CoronadoBNP Paribas1.41.6
999Mike CosgroveEconoclast1.61.6
101010Lou CrandallWrightson ICAP1.81.8
111111J. Dewey DaaneVanderbilt University1.51.5
121212Douglas DuncanFannie Mae1.81.7
131313Robert DyeComerica Bank2.52.2
141414Maria Fiorini Ramirez/Joshua ShapiroMFR, Inc.1.41.2
151515Ethan HarrisBank of America Securities- Merrill Lynch1.31.0
161616Maury HarrisUBS1.51.8
171717Jan HatziusGoldman, Sachs & Co.2.31.5
181818Tracy HerrickAvidbank1.81.8
191919Stuart Hoffman *PNC Financial Services GroupNaNNaN
202020Gene HuangFedEx Corp.1.91.7
212121William B. HummerWintrust Wealth Management1.71.9
222222Bruce KasmanJP Morgan Chase & Co.1.52.0
232323Joseph LaVorgnaDeutsche Bank Securities Inc.2.72.8
242424Edward Leamer/David ShulmanUCLA Anderson Forecast1.31.5
252525Don Leavens/Tim GillNEMA Business Information Services1.71.7
262626John LonskiMoody's Investors Service1.51.3
272727Dean MakiBarclays Capital2.02.5
282828Aneta Markowska *Societe GeneraleNaNNaN
292929Jim Meil/Arun RahaEaton Corp.1.22.1
303030Mark NielsonMacroEcon Global Advisors2.22.8
313131Michael P. NiemiraInternational Council of Shopping Centers2.32.2
323232Jim O'SullivanHigh Frequency Economics2.52.0
333333Nicholas S. PernaPerna Associates2.21.5
343434Dr. Joel Prakken/ Chris VarvaresMacroeconomic Advisers1.51.4
353535David ReslerNomura Securities International1.91.7
363636John Ryding/Conrad DeQuadrosRDQ Economics2.12.4
373737John SilviaWells Fargo & Co.1.61.7
383838Allen SinaiDecision Economics, Inc.2.12.7
393939James F. SmithParsec Financial Management3.84.8
404040Sean M. SnaithUniversity of Central Florida1.71.9
414141Sung Won SohnCalifornia State University1.81.7
424242Neal SossCSFB1.52.2
434343Stephen StanleyPierpont Securities1.02.1
444444Susan M. SterneEconomic Analysis Associates Inc.2.21.9
454545Diane SwonkMesirow Financial1.31.5
464646Carl TannenbaumThe Northern Trust1.72.0
474747Bart van ArkThe Conference Board1.61.6
484848Brian S. Wesbury/ Robert SteinFirst Trust Advisors, L.P.2.53.0
494949William T. WilsonSkolkovo Institute for Emerging Market Studies1.92.2
505050Lawrence YunNational Association of Realtors1.72.1
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 Unnamed: 0.1 Forecaster \\\n", + "0 0 0 Paul Ashworth \n", + "1 1 1 Nariman Behravesh \n", + "2 2 2 Richard Berner/ David Greenlaw * \n", + "3 3 3 Ram Bhagavatula \n", + "4 4 4 Beth Ann Bovino * \n", + "5 5 5 Jay Brinkmann \n", + "6 6 6 Michael Carey \n", + "7 7 7 Joseph Carson \n", + "8 8 8 Julia Coronado \n", + "9 9 9 Mike Cosgrove \n", + "10 10 10 Lou Crandall \n", + "11 11 11 J. Dewey Daane \n", + "12 12 12 Douglas Duncan \n", + "13 13 13 Robert Dye \n", + "14 14 14 Maria Fiorini Ramirez/Joshua Shapiro \n", + "15 15 15 Ethan Harris \n", + "16 16 16 Maury Harris \n", + "17 17 17 Jan Hatzius \n", + "18 18 18 Tracy Herrick \n", + "19 19 19 Stuart Hoffman * \n", + "20 20 20 Gene Huang \n", + "21 21 21 William B. Hummer \n", + "22 22 22 Bruce Kasman \n", + "23 23 23 Joseph LaVorgna \n", + "24 24 24 Edward Leamer/David Shulman \n", + "25 25 25 Don Leavens/Tim Gill \n", + "26 26 26 John Lonski \n", + "27 27 27 Dean Maki \n", + "28 28 28 Aneta Markowska * \n", + "29 29 29 Jim Meil/Arun Raha \n", + "30 30 30 Mark Nielson \n", + "31 31 31 Michael P. Niemira \n", + "32 32 32 Jim O'Sullivan \n", + "33 33 33 Nicholas S. Perna \n", + "34 34 34 Dr. Joel Prakken/ Chris Varvares \n", + "35 35 35 David Resler \n", + "36 36 36 John Ryding/Conrad DeQuadros \n", + "37 37 37 John Silvia \n", + "38 38 38 Allen Sinai \n", + "39 39 39 James F. Smith \n", + "40 40 40 Sean M. Snaith \n", + "41 41 41 Sung Won Sohn \n", + "42 42 42 Neal Soss \n", + "43 43 43 Stephen Stanley \n", + "44 44 44 Susan M. Sterne \n", + "45 45 45 Diane Swonk \n", + "46 46 46 Carl Tannenbaum \n", + "47 47 47 Bart van Ark \n", + "48 48 48 Brian S. Wesbury/ Robert Stein \n", + "49 49 49 William T. Wilson \n", + "50 50 50 Lawrence Yun \n", + "\n", + " Institution gdp_q3_2012 gdp_q4_2012 \n", + "0 Capital Economics 2.0 1.5 \n", + "1 IHS Global Insight 1.5 1.6 \n", + "2 Morgan Stanley NaN NaN \n", + "3 Combinatorics Capital 2.0 4.0 \n", + "4 Standard and Poor's NaN NaN \n", + "5 Mortgage Bankers Association 1.8 1.9 \n", + "6 Credit Agricole CIB 1.7 1.6 \n", + "7 AllianceBernstein 2.5 3.5 \n", + "8 BNP Paribas 1.4 1.6 \n", + "9 Econoclast 1.6 1.6 \n", + "10 Wrightson ICAP 1.8 1.8 \n", + "11 Vanderbilt University 1.5 1.5 \n", + "12 Fannie Mae 1.8 1.7 \n", + "13 Comerica Bank 2.5 2.2 \n", + "14 MFR, Inc. 1.4 1.2 \n", + "15 Bank of America Securities- Merrill Lynch 1.3 1.0 \n", + "16 UBS 1.5 1.8 \n", + "17 Goldman, Sachs & Co. 2.3 1.5 \n", + "18 Avidbank 1.8 1.8 \n", + "19 PNC Financial Services Group NaN NaN \n", + "20 FedEx Corp. 1.9 1.7 \n", + "21 Wintrust Wealth Management 1.7 1.9 \n", + "22 JP Morgan Chase & Co. 1.5 2.0 \n", + "23 Deutsche Bank Securities Inc. 2.7 2.8 \n", + "24 UCLA Anderson Forecast 1.3 1.5 \n", + "25 NEMA Business Information Services 1.7 1.7 \n", + "26 Moody's Investors Service 1.5 1.3 \n", + "27 Barclays Capital 2.0 2.5 \n", + "28 Societe Generale NaN NaN \n", + "29 Eaton Corp. 1.2 2.1 \n", + "30 MacroEcon Global Advisors 2.2 2.8 \n", + "31 International Council of Shopping Centers 2.3 2.2 \n", + "32 High Frequency Economics 2.5 2.0 \n", + "33 Perna Associates 2.2 1.5 \n", + "34 Macroeconomic Advisers 1.5 1.4 \n", + "35 Nomura Securities International 1.9 1.7 \n", + "36 RDQ Economics 2.1 2.4 \n", + "37 Wells Fargo & Co. 1.6 1.7 \n", + "38 Decision Economics, Inc. 2.1 2.7 \n", + "39 Parsec Financial Management 3.8 4.8 \n", + "40 University of Central Florida 1.7 1.9 \n", + "41 California State University 1.8 1.7 \n", + "42 CSFB 1.5 2.2 \n", + "43 Pierpont Securities 1.0 2.1 \n", + "44 Economic Analysis Associates Inc. 2.2 1.9 \n", + "45 Mesirow Financial 1.3 1.5 \n", + "46 The Northern Trust 1.7 2.0 \n", + "47 The Conference Board 1.6 1.6 \n", + "48 First Trust Advisors, L.P. 2.5 3.0 \n", + "49 Skolkovo Institute for Emerging Market Studies 1.9 2.2 \n", + "50 National Association of Realtors 1.7 2.1 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "forecasts" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "median_forecast = forecasts[['gdp_q3_2012', 'gdp_q4_2012']].median()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "gdp_q3_2012 1.8\n", + "gdp_q4_2012 1.8\n", + "dtype: float64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "median_forecast" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Polling Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I used Python to scrape the [Real Clear Politics](realclearpolitics.com) website and download data for the 2004 and 2008 elections. The scraping scripts are available in the github repository for this talk. State by state historical data for the 2004 and 2008 Presidential elections was obtained from [electoral-vote.com](www.electorical-vote.com)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Polling Average" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Details can be found at the 538 blog [here](http://www.fivethirtyeight.com/2008/03/pollster-ratings-updated.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "tossup = [\"Colorado\", \"Florida\", \"Iowa\", \"New Hampshire\", \"Nevada\", \n", + " \"Ohio\", \"Virginia\", \"Wisconsin\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "national_data2012 = pandas.read_pickle(\"data_nuevo/2012_poll_data_national.pkl\")" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(290, 9)" + ] + }, + "execution_count": 208, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "national_data2012.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PollsterSampleMoEObama (D)Romney (R)Spreadobama_spreadStatepoll_date
0RCP AverageNaN--49.145.1Obama +4.04USA2012-09-28
1Rasmussen Tracking15003.048.047.0Obama +11USA2012-09-30
2CNN/Opinion Research7833.550.047.0Obama +33USA2012-09-29
3Gallup Tracking30502.050.044.0Obama +66USA2012-09-28
4Quinnipiac19122.249.045.0Obama +44USA2012-09-28
\n", + "
" + ], + "text/plain": [ + " Pollster Sample MoE Obama (D) Romney (R) Spread \\\n", + "0 RCP Average NaN -- 49.1 45.1 Obama +4.0 \n", + "1 Rasmussen Tracking 1500 3.0 48.0 47.0 Obama +1 \n", + "2 CNN/Opinion Research 783 3.5 50.0 47.0 Obama +3 \n", + "3 Gallup Tracking 3050 2.0 50.0 44.0 Obama +6 \n", + "4 Quinnipiac 1912 2.2 49.0 45.0 Obama +4 \n", + "\n", + " obama_spread State poll_date \n", + "0 4 USA 2012-09-28 \n", + "1 1 USA 2012-09-30 \n", + "2 3 USA 2012-09-29 \n", + "3 6 USA 2012-09-28 \n", + "4 4 USA 2012-09-28 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "national_data2012.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "state_data2012 = pandas.read_pickle(\"data_nuevo/2012_poll_data_states.pkl\")" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(357, 19)" + ] + }, + "execution_count": 209, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2012.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PollsterStateMoEObama (D)Romney (R)SampleSpreadobama_spreadpoll_date
0Rasmussen ReportsWA4.55241500Obama +11112012-09-26
1Gravis MarketingWA4.65639625Obama +17172012-09-22
2Elway PollWA5.05336405Obama +17172012-09-11
3SurveyUSAWA4.45438524Obama +16162012-09-08
4SurveyUSAWA4.45437524Obama +17172012-08-02
\n", + "
" + ], + "text/plain": [ + " Pollster State MoE Obama (D) Romney (R) Sample Spread \\\n", + "0 Rasmussen Reports WA 4.5 52 41 500 Obama +11 \n", + "1 Gravis Marketing WA 4.6 56 39 625 Obama +17 \n", + "2 Elway Poll WA 5.0 53 36 405 Obama +17 \n", + "3 SurveyUSA WA 4.4 54 38 524 Obama +16 \n", + "4 SurveyUSA WA 4.4 54 37 524 Obama +17 \n", + "\n", + " obama_spread poll_date \n", + "0 11 2012-09-26 \n", + "1 17 2012-09-22 \n", + "2 17 2012-09-11 \n", + "3 16 2012-09-08 \n", + "4 17 2012-08-02 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2012.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pollsters = state_data2012.Pollster.unique()\n", + "pollsters.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "120" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(pollsters)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 AFP/Magellan (R)\n", + "1 AIF/McLaughlin (R)\n", + "2 ARG\n", + "3 Albuquerque Journal*\n", + "4 Arizona State\n", + "5 Baltimore Sun\n", + "6 Baydoun/Foster (D)\n", + "7 Behavior Research Center\n", + "8 Bloomberg News\n", + "9 Boston Globe\n", + "10 CBS/NYT/Quinnipiac\n", + "11 CNN/Opinion Research\n", + "12 CNN/Time\n", + "13 CNU/Times-Dispatch\n", + "14 Caddell/McLaughlin/SAN (R)\n", + "15 Castleton State College\n", + "16 Chicago Tribune\n", + "17 Civitas (R)\n", + "18 Clarus Research\n", + "19 Columbus Dispatch*\n", + "20 Courier-Journal/SurveyUSA\n", + "21 Critical Insights\n", + "22 Daily Kos/PPP (D)\n", + "23 Dartmouth\n", + "24 Denver Post/SurveyUSA\n", + "25 Des Moines Register\n", + "26 Deseret News\n", + "27 Deseret News/KSL\n", + "28 Detroit News\n", + "29 EPIC-MRA\n", + " ... \n", + "90 Siena\n", + "91 Sooner Poll\n", + "92 St. Cloud State U.\n", + "93 Star Tribune/Mason-Dixon*\n", + "94 Strategies 360 (D)\n", + "95 Suffolk University\n", + "96 Suffolk/7News\n", + "97 Suffolk/WSVN\n", + "98 Suffolk/WWBT\n", + "99 Sunshine State News/VSS\n", + "100 SurveyUSA\n", + "101 SurveyUSA/Civitas (R)\n", + "102 Talk Business Poll\n", + "103 Tennessean/Vanderbilt\n", + "104 The Simon Poll/SIU\n", + "105 The Washington Poll\n", + "106 Tribune-Review/Susquehanna\n", + "107 UMass/Boston Herald\n", + "108 Virginian-Pilot/ODU\n", + "109 Voter/Consumer Res/TIR (R)\n", + "110 WBUR/MassINC\n", + "111 WMUR/UNH\n", + "112 WPA\n", + "113 WPR/St. Norbert\n", + "114 WPRI\n", + "115 WPRI/Fleming\n", + "116 Washington Post\n", + "117 WeAskAmerica\n", + "118 WeAskAmerica*\n", + "119 Western NE University\n", + "dtype: object\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Methodology was obtained from the old [538 Blog](http://www.fivethirtyeight.com/2008/03/frequently-asked-questions-last-revised.html) with updates at the [new site hosted by the New York Times](http://fivethirtyeight.blogs.nytimes.com/methodology/)" + } + ], + "source": [ + "print pandas.Series(pollsters)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 538 Pollster Ratings" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "weights = pandas.read_table(\"./data/pollster_weights.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PollsterWeightPIE
0ABC / Washington Post0.951.41
1American Research Group0.651.76
2CBS / New York Times0.661.84
3Chicago Trib. / MarketShares1.161.13
4CNN / Opinion Research0.771.59
5Columbus Dispatch (OH)0.506.76
6EPIC-MRA0.751.65
7Fairleigh-Dickinson (NJ)0.711.72
8Field Poll (CA)1.330.88
9Fox / Opinion Dynamics0.791.60
10Franklin Pierce (NH)0.741.60
11Insider Advantage0.951.29
12Keystone (PA)0.641.55
13LA Times / Bloomberg0.831.44
14Marist (NY)0.691.73
15Mason-Dixon1.101.15
16Mitchell0.961.43
17Ohio Poll1.241.05
18Public Opinion Strategies0.631.81
19Public Policy Polling (PPP)1.051.60
20Quinnipiac0.951.34
21Rasmussen1.300.88
22Research 20001.011.20
23Selzer1.470.92
24Star Tribune (MN)0.812.01
25Strategic Vision0.951.45
26Suffolk (NH/MA)0.771.37
27SurveyUSA1.910.72
28Univ. New Hampshire1.081.26
29USA Today / Gallup0.632.01
30Zogby0.641.72
31Zogby Interactive0.434.74
\n", + "
" + ], + "text/plain": [ + " Pollster Weight PIE\n", + "0 ABC / Washington Post 0.95 1.41\n", + "1 American Research Group 0.65 1.76\n", + "2 CBS / New York Times 0.66 1.84\n", + "3 Chicago Trib. / MarketShares 1.16 1.13\n", + "4 CNN / Opinion Research 0.77 1.59\n", + "5 Columbus Dispatch (OH) 0.50 6.76\n", + "6 EPIC-MRA 0.75 1.65\n", + "7 Fairleigh-Dickinson (NJ) 0.71 1.72\n", + "8 Field Poll (CA) 1.33 0.88\n", + "9 Fox / Opinion Dynamics 0.79 1.60\n", + "10 Franklin Pierce (NH) 0.74 1.60\n", + "11 Insider Advantage 0.95 1.29\n", + "12 Keystone (PA) 0.64 1.55\n", + "13 LA Times / Bloomberg 0.83 1.44\n", + "14 Marist (NY) 0.69 1.73\n", + "15 Mason-Dixon 1.10 1.15\n", + "16 Mitchell 0.96 1.43\n", + "17 Ohio Poll 1.24 1.05\n", + "18 Public Opinion Strategies 0.63 1.81\n", + "19 Public Policy Polling (PPP) 1.05 1.60\n", + "20 Quinnipiac 0.95 1.34\n", + "21 Rasmussen 1.30 0.88\n", + "22 Research 2000 1.01 1.20\n", + "23 Selzer 1.47 0.92\n", + "24 Star Tribune (MN) 0.81 2.01\n", + "25 Strategic Vision 0.95 1.45\n", + "26 Suffolk (NH/MA) 0.77 1.37\n", + "27 SurveyUSA 1.91 0.72\n", + "28 Univ. New Hampshire 1.08 1.26\n", + "29 USA Today / Gallup 0.63 2.01\n", + "30 Zogby 0.64 1.72\n", + "31 Zogby Interactive 0.43 4.74" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weights" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Weight 0.907813\n", + "PIE 1.706563\n", + "dtype: float64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weights.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import pickle\n", + "pollster_map = pickle.load(open(\"./data/pollster_map.pkl\", \"rb\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012.Pollster.replace(pollster_map, inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "national_data2012.Pollster.replace(pollster_map, inplace=True);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inner merge the data with the weights" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012 = state_data2012.merge(weights, how=\"inner\", on=\"Pollster\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PollsterStateMoEObama (D)Romney (R)SampleSpreadobama_spreadpoll_dateWeightPIE
0RasmussenWA4.55241500Obama +11112012-09-261.30.88
1RasmussenWI4.54946500Obama +332012-09-171.30.88
2RasmussenWI4.54748500Romney +1-12012-08-151.30.88
3RasmussenWI4.54946500Obama +332012-07-251.30.88
4RasmussenWI4.54447500Romney +3-32012-06-121.30.88
\n", + "
" + ], + "text/plain": [ + " Pollster State MoE Obama (D) Romney (R) Sample Spread \\\n", + "0 Rasmussen WA 4.5 52 41 500 Obama +11 \n", + "1 Rasmussen WI 4.5 49 46 500 Obama +3 \n", + "2 Rasmussen WI 4.5 47 48 500 Romney +1 \n", + "3 Rasmussen WI 4.5 49 46 500 Obama +3 \n", + "4 Rasmussen WI 4.5 44 47 500 Romney +3 \n", + "\n", + " obama_spread poll_date Weight PIE \n", + "0 11 2012-09-26 1.3 0.88 \n", + "1 3 2012-09-17 1.3 0.88 \n", + "2 -1 2012-08-15 1.3 0.88 \n", + "3 3 2012-07-25 1.3 0.88 \n", + "4 -3 2012-06-12 1.3 0.88 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2012.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Pollster object\n", + "State object\n", + "MoE float64\n", + "Obama (D) float64\n", + "Romney (R) float64\n", + "Sample float64\n", + "Spread object\n", + "obama_spread float64\n", + "poll_date datetime64[ns]\n", + "Weight float64\n", + "PIE float64\n", + "dtype: object" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2012.dtypes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### First, we average each pollster for each state." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first adjustment is an exponential decay for recency of the poll. Based on research in prior elections, a weight with a half-life of 30 days since the median date the poll has been in the field is assigned to each poll." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def exp_decay(x):\n", + " # defensive coding, accepts timedeltas\n", + " #days = getattr(days, \"days\", days)\n", + " days = x.astype('timedelta64[D]')/ np.timedelta64(1, 'D')\n", + " # print(\"days is\", type(days))\n", + " return .5 ** (days/30.)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 45)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "//anaconda/envs/pydata/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", + " if self._edgecolors == str('face'):\n" ] }, { - "cell_type": "markdown", + "data": { + "image/png": "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\nZbgAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, "metadata": {}, - "source": [ - "1. Polling Average: Aggregate polling data, and weight it according to our reliability scores.\n", - "\n", - "2. Trend Adjustment: Adjust the polling data for current trends.\n", + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(12,8), subplot_kw={\"xlabel\" : \"Days\",\n", + " \"ylabel\" : \"Weight\"})\n", + "days = np.arange(0, 45)\n", + "ax.plot(days, exp_decay(days));\n", + "ax.vlines(30, 0, .99, color='r', linewidth=4)\n", + "ax.set_ylim(0,1)\n", + "ax.set_xlim(0, 45)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second adjustment is for the sample size of the poll. Polls with a higher sample size receive a higher weight." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Binomial sampling error = +/- $50 * \\frac{1}{\\sqrt{nobs}}$ where the 50 depends on the underlying probability or population preferences, in this case assumed to be 50:50 (another way of calculating Margin of Error)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def average_error(nobs, p=50.):\n", + " return p*nobs**-.5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The thinking here is that having 5 polls of 1200 is a lot like having one poll of 6000. However, we downweight older polls by only including the marginal effective sample size. Where the effective sample size is the size of the methodologically perfect poll for which we would be indifferent between it and the one we have with our current total error. Total error is determined as $TE = \\text{Average Error} + \\text{Long Run Pollster Induced Error}$. See [here](http://www.fivethirtyeight.com/2008/04/pollster-ratings-v30.html) for the detailed calculations of Pollster Induced Error." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def effective_sample(total_error, p=50.):\n", + " return p**2 * (total_error**-2.)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_pollsters = state_data2012.groupby([\"State\", \"Pollster\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ppp_az = state_pollsters.get_group((\"AZ\", \"Public Policy Polling (PPP)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PollsterStateObama (D)Romney (R)Samplepoll_date
258Public Policy Polling (PPP)AZ44539932012-09-08
259Public Policy Polling (PPP)AZ41528332012-07-24
260Public Policy Polling (PPP)AZ43505002012-05-19
261Public Policy Polling (PPP)AZ47477432012-02-18
262Public Policy Polling (PPP)AZ42495002011-11-19
263Public Policy Polling (PPP)AZ44486232011-04-30
264Public Policy Polling (PPP)AZ43495992011-01-29
265Public Policy Polling (PPP)AZ43506172010-09-20
\n", + "
" + ], + "text/plain": [ + " Pollster State Obama (D) Romney (R) Sample \\\n", + "258 Public Policy Polling (PPP) AZ 44 53 993 \n", + "259 Public Policy Polling (PPP) AZ 41 52 833 \n", + "260 Public Policy Polling (PPP) AZ 43 50 500 \n", + "261 Public Policy Polling (PPP) AZ 47 47 743 \n", + "262 Public Policy Polling (PPP) AZ 42 49 500 \n", + "263 Public Policy Polling (PPP) AZ 44 48 623 \n", + "264 Public Policy Polling (PPP) AZ 43 49 599 \n", + "265 Public Policy Polling (PPP) AZ 43 50 617 \n", + "\n", + " poll_date \n", + "258 2012-09-08 \n", + "259 2012-07-24 \n", + "260 2012-05-19 \n", + "261 2012-02-18 \n", + "262 2011-11-19 \n", + "263 2011-04-30 \n", + "264 2011-01-29 \n", + "265 2010-09-20 " + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_idx = [\"Pollster\", \"State\", \"Obama (D)\", \"Romney (R)\", \"Sample\", \"poll_date\"]\n", + "ppp_az[var_idx]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "//anaconda/envs/pydata/lib/python2.7/site-packages/pandas/core/frame.py:2915: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", - "3. Regression: Analyze demographic data in each state by means of regression analysis.\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " inplace=inplace, kind=kind, na_position=na_position)\n" + ] + } + ], + "source": [ + "ppp_az.sort(\"poll_date\", ascending=False, inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/anaconda/envs/pydata/lib/python2.7/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", - "4. Snapshot: Combine the polling data with the regression analysis to produce an electoral snapshot. This is our estimate of what would happen if the election were held today.\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " if __name__ == '__main__':\n", + "/anaconda/envs/pydata/lib/python2.7/site-packages/ipykernel/__main__.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", - "5. Projection: Translate the snapshot into a projection of what will happen in November, by allocating out undecided voters and applying a discount to current polling leads based on historical trends.\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " from ipykernel import kernelapp as app\n", + "/anaconda/envs/pydata/lib/python2.7/site-packages/ipykernel/__main__.py:3: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", - "6. Simulation: Simulate our results 10,000 times based on the results of the projection to account for the uncertainty in our estimates. The end result is a robust probabilistic assessment of what will happen in each state as well as in the nation as a whole. " + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " app.launch_new_instance()\n" ] }, { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Get the Data" + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PollsterStateObama (D)Romney (R)Samplepoll_datecumulative
258Public Policy Polling (PPP)AZ44539932012-09-08993
259Public Policy Polling (PPP)AZ41528332012-07-241826
260Public Policy Polling (PPP)AZ43505002012-05-192326
261Public Policy Polling (PPP)AZ47477432012-02-183069
262Public Policy Polling (PPP)AZ42495002011-11-193569
263Public Policy Polling (PPP)AZ44486232011-04-304192
264Public Policy Polling (PPP)AZ43495992011-01-294791
265Public Policy Polling (PPP)AZ43506172010-09-205408
\n", + "
" + ], + "text/plain": [ + " Pollster State Obama (D) Romney (R) Sample \\\n", + "258 Public Policy Polling (PPP) AZ 44 53 993 \n", + "259 Public Policy Polling (PPP) AZ 41 52 833 \n", + "260 Public Policy Polling (PPP) AZ 43 50 500 \n", + "261 Public Policy Polling (PPP) AZ 47 47 743 \n", + "262 Public Policy Polling (PPP) AZ 42 49 500 \n", + "263 Public Policy Polling (PPP) AZ 44 48 623 \n", + "264 Public Policy Polling (PPP) AZ 43 49 599 \n", + "265 Public Policy Polling (PPP) AZ 43 50 617 \n", + "\n", + " poll_date cumulative \n", + "258 2012-09-08 993 \n", + "259 2012-07-24 1826 \n", + "260 2012-05-19 2326 \n", + "261 2012-02-18 3069 \n", + "262 2011-11-19 3569 \n", + "263 2011-04-30 4192 \n", + "264 2011-01-29 4791 \n", + "265 2010-09-20 5408 " + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ppp_az[\"cumulative\"] = ppp_az[\"Sample\"].cumsum()\n", + "ppp_az[\"average_error\"] = average_error(ppp_az[\"cumulative\"])\n", + "ppp_az[\"total_error\"] = ppp_az[\"PIE\"] + ppp_az[\"average_error\"]\n", + "ppp_az[var_idx + [\"cumulative\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/anaconda/envs/pydata/lib/python2.7/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " if __name__ == '__main__':\n", + "/anaconda/envs/pydata/lib/python2.7/site-packages/ipykernel/__main__.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " from ipykernel import kernelapp as app\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/pandas/core/generic.py:2602: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " self._update_inplace(new_data)\n" ] - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Consensus forecast of GDP growth over the next two economic quarters
(Median of WSJ's monthly forecasting panel)\n" + } + ], + "source": [ + "ppp_az[\"ESS\"] = effective_sample(ppp_az[\"total_error\"])\n", + "ppp_az[\"MESS\"] = ppp_az[\"ESS\"].diff()\n", + "# fill in first one\n", + "ppp_az[\"MESS\"].fillna(ppp_az[\"ESS\"].head(1).item(), inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
poll_dateSamplecumulativeESSMESS
2582012-09-08993993246.182451246.182451
2592012-07-248331826325.80065679.618204
2602012-05-195002326359.59123233.790577
2612012-02-187433069399.18505539.593822
2622011-11-195003569420.96761121.782557
2632011-04-306234192444.24050523.272893
2642011-01-295994791463.53113919.290634
2652010-09-206175408480.95502017.423881
\n", + "
" + ], + "text/plain": [ + " poll_date Sample cumulative ESS MESS\n", + "258 2012-09-08 993 993 246.182451 246.182451\n", + "259 2012-07-24 833 1826 325.800656 79.618204\n", + "260 2012-05-19 500 2326 359.591232 33.790577\n", + "261 2012-02-18 743 3069 399.185055 39.593822\n", + "262 2011-11-19 500 3569 420.967611 21.782557\n", + "263 2011-04-30 623 4192 444.240505 23.272893\n", + "264 2011-01-29 599 4791 463.531139 19.290634\n", + "265 2010-09-20 617 5408 480.955020 17.423881" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ppp_az[[\"poll_date\", \"Sample\", \"cumulative\", \"ESS\", \"MESS\"]]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's do it for every polling firm in every state." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def calculate_mess(group):\n", + " cumulative = group[\"Sample\"].cumsum()\n", + " ae = average_error(cumulative)\n", + " total_error = ae + group[\"PIE\"]\n", + " ess = effective_sample(total_error)\n", + " mess = ess.diff()\n", + " mess.fillna(ess.head(1).item(), inplace=True)\n", + " #from IPython.core.debugger import Pdb; Pdb().set_trace()\n", + " return pandas.concat((ess, mess), axis=1)\n", + "\n", + "#state_data2012[\"ESS\", \"MESS\"] \n", + "df = state_pollsters.apply(calculate_mess)\n", + "df.rename(columns={0 : \"ESS\", 1 : \"MESS\"}, inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012 = state_data2012.join(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Give them the time weight" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 2012-09-26\n", + "Name: poll_date, dtype: datetime64[ns]" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2012[\"poll_date\"].head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012[\"time_weight\"] = (today - state_data2012[\"poll_date\"]).apply(exp_decay)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0.870551\n", + "1 0.707107\n", + "2 0.329877\n", + "3 0.203063\n", + "4 0.075189\n", + "5 0.034276\n", + "6 0.012691\n", + "7 0.006494\n", + "8 0.000370\n", + "9 0.629961\n", + "10 0.329877\n", + "11 0.140308\n", + "12 0.024803\n", + "13 0.009184\n", + "14 0.004284\n", + "15 0.000615\n", + "16 0.723635\n", + "17 0.090454\n", + "18 0.050766\n", + "19 0.890899\n", + "20 0.378929\n", + "21 0.014919\n", + "22 0.004809\n", + "23 0.644685\n", + "24 0.238710\n", + "25 0.101532\n", + "26 0.038473\n", + "27 0.017538\n", + "28 0.146943\n", + "29 0.040293\n", + " ... \n", + "393 0.017948\n", + "394 0.002637\n", + "395 0.000370\n", + "396 0.629961\n", + "397 0.106333\n", + "398 0.049606\n", + "399 0.004385\n", + "400 0.000675\n", + "401 0.000119\n", + "402 0.723635\n", + "403 0.198425\n", + "404 0.046284\n", + "405 0.831238\n", + "406 0.370274\n", + "407 0.361817\n", + "408 0.000147\n", + "409 0.003817\n", + "410 0.601513\n", + "411 0.445449\n", + "412 0.217638\n", + "413 0.062500\n", + "414 0.014579\n", + "415 0.002893\n", + "416 0.000587\n", + "417 0.000031\n", + "418 0.000001\n", + "419 0.396850\n", + "420 0.314980\n", + "421 0.193893\n", + "422 0.086370\n", + "Name: time_weight, dtype: float64" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2012[\"time_weight\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now aggregate all of these. Weight them based on the sample size but also based on the time_weight." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def weighted_mean(group):\n", + " weights1 = group[\"time_weight\"]\n", + " weights2 = group[\"MESS\"]\n", + " return np.sum(weights1*weights2*group[\"obama_spread\"]/(weights1*weights2).sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_pollsters = state_data2012.groupby([\"State\", \"Pollster\"])\n", + "state_polls = state_pollsters.apply(weighted_mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "State Pollster \n", + "AZ Public Policy Polling (PPP) -9.168494\n", + " Rasmussen -10.209446\n", + "CA Field Poll (CA) 23.343924\n", + " Public Policy Polling (PPP) 20.999075\n", + " Rasmussen 22.000000\n", + " SurveyUSA 22.123414\n", + "CO American Research Group 2.000000\n", + " Public Policy Polling (PPP) 5.469907\n", + " Rasmussen -1.573788\n", + "CT Public Policy Polling (PPP) 12.757757\n", + " Quinnipiac 7.293983\n", + " Rasmussen 8.000000\n", + "FL American Research Group 5.000000\n", + " Mason-Dixon -3.543178\n", + " Public Policy Polling (PPP) 3.125154\n", + " Quinnipiac 3.075653\n", + " Rasmussen 0.882884\n", + " Suffolk (NH/MA) -0.003377\n", + " SurveyUSA 4.168952\n", + "GA Insider Advantage -19.174054\n", + " Mason-Dixon -17.000000\n", + " Public Policy Polling (PPP) -3.000000\n", + " SurveyUSA -7.983856\n", + "HI Public Policy Polling (PPP) 27.000000\n", + "IA American Research Group 7.000000\n", + " Mason-Dixon -3.000000\n", + " Public Policy Polling (PPP) 5.878693\n", + " Rasmussen -2.749416\n", + "IL Chicago Trib. / MarketShares 21.000000\n", + "IN Rasmussen -16.000000\n", + " ... \n", + "OH Ohio Poll 3.000406\n", + " Public Policy Polling (PPP) 4.141640\n", + " Quinnipiac 7.729397\n", + " Rasmussen 0.865613\n", + "OR Public Policy Polling (PPP) 9.130153\n", + " SurveyUSA 8.675504\n", + "PA Public Policy Polling (PPP) 6.160027\n", + " Quinnipiac 6.047221\n", + " Rasmussen 10.874768\n", + " SurveyUSA 0.000000\n", + "RI Public Policy Polling (PPP) 17.000000\n", + "SC Public Policy Polling (PPP) -14.558484\n", + "SD Public Policy Polling (PPP) -6.000000\n", + "TN Public Policy Polling (PPP) -7.000000\n", + "TX Public Policy Polling (PPP) -6.998595\n", + "UT Mason-Dixon -51.000000\n", + " Public Policy Polling (PPP) -32.000000\n", + "VA American Research Group 2.000000\n", + " Mason-Dixon 1.000000\n", + " Public Policy Polling (PPP) 5.095802\n", + " Quinnipiac 0.578138\n", + " Rasmussen 0.891780\n", + "VT Public Policy Polling (PPP) 20.000000\n", + "WA Public Policy Polling (PPP) 13.050886\n", + " Rasmussen 11.000000\n", + " SurveyUSA 15.310208\n", + "WI CNN / Opinion Research 4.000000\n", + " Public Policy Polling (PPP) 5.392554\n", + " Rasmussen 2.116005\n", + "WV Public Policy Polling (PPP) -19.756631\n", + "dtype: float64" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_polls" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2004 and 2008 Polls" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "state_data2008= pandas.read_pickle(\"data_nuevo/state_data_2008.pkl\"); state_data2004 = pandas.read_pickle(\"data_nuevo/state_data_2004.pkl\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StateKerryBushPollsterpoll_date
0AL3957SurveyUSA2004-10-25
1AL3256Capital Survey2004-10-12
2AL3462SurveyUSA2004-10-01
3AL4054ARG2004-09-14
4AL4253Rasmussen2004-09-06
\n", + "
" + ], + "text/plain": [ + " State Kerry Bush Pollster poll_date\n", + "0 AL 39 57 SurveyUSA 2004-10-25\n", + "1 AL 32 56 Capital Survey 2004-10-12\n", + "2 AL 34 62 SurveyUSA 2004-10-01\n", + "3 AL 40 54 ARG 2004-09-14\n", + "4 AL 42 53 Rasmussen 2004-09-06" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2004.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StateObamaMcCainPollsterpoll_date
0AL3661SurveyUSA2008-10-28
1AL3454Capital Survey2008-10-16
2AL3562SurveyUSA2008-10-09
3AL3555Capital Survey2008-10-07
4AL3960Rasmussen2008-09-22
\n", + "
" + ], + "text/plain": [ + " State Obama McCain Pollster poll_date\n", + "0 AL 36 61 SurveyUSA 2008-10-28\n", + "1 AL 34 54 Capital Survey 2008-10-16\n", + "2 AL 35 62 SurveyUSA 2008-10-09\n", + "3 AL 35 55 Capital Survey 2008-10-07\n", + "4 AL 39 60 Rasmussen 2008-09-22" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2008.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_groups = state_data2008.groupby(\"State\")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
McCainObama
State
AK52.00000039.428571
AL56.82608734.347826
AR51.00000037.250000
AZ49.33333339.190476
CA37.63333353.266667
CO44.46666748.288889
CT36.92307752.692308
DC13.00000082.000000
DE38.62500055.500000
FL46.39393946.121212
GA51.34615443.153846
HI30.00000064.000000
IA41.40740750.037037
ID60.00000030.500000
IL36.90000055.600000
IN47.50000044.961538
KS53.56250037.750000
KY54.84210537.526316
LA52.16666739.083333
MA38.80000052.200000
MD38.66666753.833333
ME38.18750050.562500
MI42.05263247.368421
MN41.73913050.260870
MO47.42857145.571429
MS51.20000040.500000
MT48.21428643.857143
NC47.52272746.090909
ND45.57142942.714286
NE51.71428637.142857
NH42.75675748.918919
NJ39.76666749.766667
NM43.59259348.740741
NV44.84375046.937500
NY36.86486552.432432
OH44.97468446.658228
OK61.70000032.000000
OR40.85185250.333333
PA42.08000048.893333
RI32.00000053.000000
SC53.30000041.000000
SD50.37500039.875000
TN54.36363636.363636
TX50.20000040.400000
UT58.60000030.000000
VA45.81666747.933333
VT34.75000059.750000
WA40.42424251.515152
WI41.92105349.684211
WV48.69230842.538462
WY59.33333332.666667
\n", + "
" + ], + "text/plain": [ + " McCain Obama\n", + "State \n", + "AK 52.000000 39.428571\n", + "AL 56.826087 34.347826\n", + "AR 51.000000 37.250000\n", + "AZ 49.333333 39.190476\n", + "CA 37.633333 53.266667\n", + "CO 44.466667 48.288889\n", + "CT 36.923077 52.692308\n", + "DC 13.000000 82.000000\n", + "DE 38.625000 55.500000\n", + "FL 46.393939 46.121212\n", + "GA 51.346154 43.153846\n", + "HI 30.000000 64.000000\n", + "IA 41.407407 50.037037\n", + "ID 60.000000 30.500000\n", + "IL 36.900000 55.600000\n", + "IN 47.500000 44.961538\n", + "KS 53.562500 37.750000\n", + "KY 54.842105 37.526316\n", + "LA 52.166667 39.083333\n", + "MA 38.800000 52.200000\n", + "MD 38.666667 53.833333\n", + "ME 38.187500 50.562500\n", + "MI 42.052632 47.368421\n", + "MN 41.739130 50.260870\n", + "MO 47.428571 45.571429\n", + "MS 51.200000 40.500000\n", + "MT 48.214286 43.857143\n", + "NC 47.522727 46.090909\n", + "ND 45.571429 42.714286\n", + "NE 51.714286 37.142857\n", + "NH 42.756757 48.918919\n", + "NJ 39.766667 49.766667\n", + "NM 43.592593 48.740741\n", + "NV 44.843750 46.937500\n", + "NY 36.864865 52.432432\n", + "OH 44.974684 46.658228\n", + "OK 61.700000 32.000000\n", + "OR 40.851852 50.333333\n", + "PA 42.080000 48.893333\n", + "RI 32.000000 53.000000\n", + "SC 53.300000 41.000000\n", + "SD 50.375000 39.875000\n", + "TN 54.363636 36.363636\n", + "TX 50.200000 40.400000\n", + "UT 58.600000 30.000000\n", + "VA 45.816667 47.933333\n", + "VT 34.750000 59.750000\n", + "WA 40.424242 51.515152\n", + "WI 41.921053 49.684211\n", + "WV 48.692308 42.538462\n", + "WY 59.333333 32.666667" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_groups.aggregate(dict(Obama=np.mean, McCain=np.mean))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Means for the entire country (without weighting by population)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "McCain 45.337861\n", + "Obama 46.082498\n", + "dtype: float64" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_groups.aggregate(dict(Obama=np.mean, McCain=np.mean)).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ARG': 'American Research Group',\n", + " 'American Res.Group': 'American Research Group',\n", + " 'American Research': 'American Research Group',\n", + " 'Bloomberg News': 'LA Times / Bloomberg',\n", + " 'CNN/Opinion Research': 'CNN / Opinion Research',\n", + " 'Chicago Tribune': 'Chicago Trib. / MarketShares',\n", + " 'Columbus Dispatch': 'Columbus Dispatch (OH)',\n", + " 'Columbus Dispatch*': 'Columbus Dispatch (OH)',\n", + " 'EPIC/MRA': 'EPIC-MRA',\n", + " 'Fairleigh Dickinson': 'Fairleigh-Dickinson (NJ)',\n", + " 'Fairleigh Dickinson U.': 'Fairleigh-Dickinson (NJ)',\n", + " 'Fairleigh Dickinson Univ.': 'Fairleigh-Dickinson (NJ)',\n", + " 'Fairleigh-Dickinson Univ.': 'Fairleigh-Dickinson (NJ)',\n", + " 'Field': 'Field Poll (CA)',\n", + " 'Field Poll': 'Field Poll (CA)',\n", + " 'Fox/Opinion Dyn.': 'Fox / Opinion Dynamics',\n", + " 'Franklin Pierce Coll.': 'Franklin Pierce (NH)',\n", + " 'Gallup': 'USA Today / Gallup',\n", + " 'Inside Advantage': 'Insider Advantage',\n", + " 'InsiderAdvantage': 'Insider Advantage',\n", + " 'Keystone Poll': 'Keystone (PA)',\n", + " 'LA Times': 'LA Times / Bloomberg',\n", + " 'Los Angeles Times': 'LA Times / Bloomberg',\n", + " 'Marist': 'Marist (NY)',\n", + " 'Marist Coll.': 'Marist (NY)',\n", + " 'Marist College': 'Marist (NY)',\n", + " 'Market Shares': 'Chicago Trib. / MarketShares',\n", + " 'Mason-Dixon*': 'Mason-Dixon',\n", + " 'Mitchell Research': 'Mitchell',\n", + " 'NY Times': 'CBS / New York Times',\n", + " 'Ohio Poll/Univ of Cin.': 'Ohio Poll',\n", + " 'Ohio U.': 'Ohio Poll',\n", + " 'Ohio Univ.': 'Ohio Poll',\n", + " 'Opinion Dynamics': 'Fox / Opinion Dynamics',\n", + " 'Opinion Res.': 'CNN / Opinion Research',\n", + " 'Opinion Research': 'CNN / Opinion Research',\n", + " 'PPP (D)': 'Public Policy Polling (PPP)',\n", + " 'Pub. Opin. Strat.': 'Public Opinion Strategies',\n", + " 'Pub. Opinion Strat.': 'Public Opinion Strategies',\n", + " 'Quinnipiac U.': 'Quinnipiac',\n", + " 'Quinnipiac Univ': 'Quinnipiac',\n", + " 'Quinnipiac Univ.': 'Quinnipiac',\n", + " 'Rasmussen Reports': 'Rasmussen',\n", + " 'Selzer & Co.': 'Selzer',\n", + " 'Star Tribune': 'Star Tribune (MN)',\n", + " 'Star-Tribune': 'Star Tribune (MN)',\n", + " 'Suffolk U.': 'Suffolk (NH/MA)',\n", + " 'Suffolk Univ.': 'Suffolk (NH/MA)',\n", + " 'Suffolk University': 'Suffolk (NH/MA)',\n", + " 'Survey USA': 'SurveyUSA',\n", + " 'U. of New Hampshire': 'Univ. New Hampshire',\n", + " 'Univ. of New Hampsh.': 'Univ. New Hampshire',\n", + " 'Univ. of New Hampshire': 'Univ. New Hampshire',\n", + " 'Zogby': 'Zogby'}" + ] + }, + "execution_count": 197, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pollster_map" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2004.Pollster.replace(pollster_map, inplace=True)\n", + "state_data2008.Pollster.replace(pollster_map, inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2004 = state_data2004.merge(weights, how=\"inner\", on=\"Pollster\")\n", + "state_data2008 = state_data2008.merge(weights, how=\"inner\", on=\"Pollster\")" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StateKerryBushPollsterpoll_dateWeightPIEtime_weightnewest_poll
0AL3957SurveyUSA2004-10-251.910.720.8312381970-01-01 00:00:00.000000001
1AZ4156SurveyUSA2004-10-281.910.720.8908991970-01-01 00:00:00.000000001
2AZ4354SurveyUSA2004-10-171.910.720.6909561970-01-01 00:00:00.000000000
3AR4651SurveyUSA2004-11-011.910.720.9771601970-01-01 00:00:00.000000001
4AR4551SurveyUSA2004-10-231.910.720.7937011970-01-01 00:00:00.000000000
\n", + "
" + ], + "text/plain": [ + " State Kerry Bush Pollster poll_date Weight PIE time_weight \\\n", + "0 AL 39 57 SurveyUSA 2004-10-25 1.91 0.72 0.831238 \n", + "1 AZ 41 56 SurveyUSA 2004-10-28 1.91 0.72 0.890899 \n", + "2 AZ 43 54 SurveyUSA 2004-10-17 1.91 0.72 0.690956 \n", + "3 AR 46 51 SurveyUSA 2004-11-01 1.91 0.72 0.977160 \n", + "4 AR 45 51 SurveyUSA 2004-10-23 1.91 0.72 0.793701 \n", + "\n", + " newest_poll \n", + "0 1970-01-01 00:00:00.000000001 \n", + "1 1970-01-01 00:00:00.000000001 \n", + "2 1970-01-01 00:00:00.000000000 \n", + "3 1970-01-01 00:00:00.000000001 \n", + "4 1970-01-01 00:00:00.000000000 " + ] + }, + "execution_count": 198, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2004.head() ## Weight and PIE added in by previous step" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "26" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(state_data2004.Pollster.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "21" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(state_data2008.Pollster.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime(2004, 11, 2, 0, 0)" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "date2004 = datetime.datetime(2004, 11, 2)\n", + "date2004" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 True\n", + "1 False\n", + "2 False\n", + "3 True\n", + "4 True\n", + "5 False\n", + "6 False\n", + "7 False\n", + "8 True\n", + "9 True\n", + "10 True\n", + "11 False\n", + "12 False\n", + "13 False\n", + "14 True\n", + "15 True\n", + "16 False\n", + "17 False\n", + "18 False\n", + "19 False\n", + "20 True\n", + "21 True\n", + "22 True\n", + "23 False\n", + "24 False\n", + "25 False\n", + "26 True\n", + "27 True\n", + "28 True\n", + "29 False\n", + " ... \n", + "704 True\n", + "705 True\n", + "706 True\n", + "707 True\n", + "708 True\n", + "709 True\n", + "710 False\n", + "711 False\n", + "712 False\n", + "713 True\n", + "714 False\n", + "715 True\n", + "716 True\n", + "717 False\n", + "718 True\n", + "719 True\n", + "720 False\n", + "721 True\n", + "722 True\n", + "723 False\n", + "724 False\n", + "725 False\n", + "726 False\n", + "727 False\n", + "728 True\n", + "729 False\n", + "730 True\n", + "731 False\n", + "732 True\n", + "733 True\n", + "Name: poll_date, dtype: bool" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(date2004 - state_data2004.poll_date) < datetime.timedelta(21) ## Restrict to 3 weeks before the election" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Restrict the samples to the 3 weeks leading up to the election" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2004 = state_data2004.ix[(date2004 - state_data2004.poll_date) <= datetime.timedelta(21)]\n", + "state_data2004.reset_index(drop=True, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "date2008 = datetime.datetime(2008, 11, 4)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2008 = state_data2008.ix[(date2008 - state_data2008.poll_date) <= datetime.timedelta(21)]\n", + "state_data2008.reset_index(drop=True, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "State object\n", + "Obama int64\n", + "McCain int64\n", + "Pollster object\n", + "poll_date datetime64[ns]\n", + "Weight float64\n", + "PIE float64\n", + "dtype: object" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2008.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "## Add time weight to each poll that we have in the filtered 3 week set using the exp_decay function defined earlier" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2004[\"time_weight\"] =(date2004 - state_data2004.poll_date).apply(exp_decay)\n", + "state_data2008[\"time_weight\"] =(date2008 - state_data2008.poll_date).apply(exp_decay)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time_weightpoll_date
00.8312382004-10-25
10.8908992004-10-28
20.6909562004-10-17
30.9771602004-11-01
40.7937012004-10-23
\n", + "
" + ], + "text/plain": [ + " time_weight poll_date\n", + "0 0.831238 2004-10-25\n", + "1 0.890899 2004-10-28\n", + "2 0.690956 2004-10-17\n", + "3 0.977160 2004-11-01\n", + "4 0.793701 2004-10-23" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2004[[\"time_weight\", \"poll_date\"]].head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def max_date(x):\n", + " return x == x.max()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "## Assign the latest poll date to all polls for each (state,pollster) group. Why?" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2004[\"newest_poll\"] = state_data2004.groupby((\"State\", \"Pollster\")).poll_date.transform(max_date)\n", + "state_data2008[\"newest_poll\"] = state_data2008.groupby((\"State\", \"Pollster\")).poll_date.transform(max_date)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Clustering States by Demographics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are notes on trend line adjustment, [here](http://www.fivethirtyeight.com/2008/06/we-know-more-than-we-think-big-change-2.html), [here](http://www.fivethirtyeight.com/2008/06/refinement-to-adjustment-part-i.html), [here](http://www.fivethirtyeight.com/2008/06/refinement-to-adjustment-part-ii.html), [here](http://www.fivethirtyeight.com/2008/06/trendline-now-calculated-from-daily.html), and [here](http://www.fivethirtyeight.com/2008/06/construction-season-over-technical.html). However, to the best of my knowledge, the similar state \"nearest neighbor\" clustering remains a black box." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Partican Voting Index data obtained from [Wikipedia](http://en.wikipedia.org/wiki/Cook_Partisan_Voting_Index)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pvi = pandas.read_csv(\"./data/partisan_voting.csv\") \n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PVI
State
AlabamaR+13
AlaskaR+13
ArizonaR+6
ArkansasR+9
CaliforniaD+7
ColoradoEVEN
ConnecticutD+7
DelawareD+7
District of ColumbiaD+39
FloridaR+2
GeorgiaR+7
HawaiiD+12
IdahoR+17
IllinoisD+8
IndianaR+6
IowaD+1
KansasR+12
KentuckyR+10
LouisianaR+10
MaineD+5
MarylandD+9
MassachusettsD+12
MichiganD+4
MinnesotaD+2
MississippiR+10
MissouriR+3
MontanaR+7
NebraskaR+13
NevadaD+1
New HampshireD+2
New JerseyD+4
New MexicoD+2
New YorkD+10
North CarolinaR+4
North DakotaR+10
OhioR+1
OklahomaR+17
OregonD+4
PennsylvaniaD+2
Rhode IslandD+11
South CarolinaR+8
South DakotaR+9
TennesseeR+9
TexasR+10
UtahR+20
VermontD+13
VirginiaR+2
WashingtonD+5
West VirginiaR+8
WisconsinD+2
WyomingR+20
\n", + "
" + ], + "text/plain": [ + " PVI\n", + "State \n", + "Alabama R+13\n", + "Alaska R+13\n", + "Arizona R+6 \n", + "Arkansas R+9 \n", + "California D+7 \n", + "Colorado EVEN\n", + "Connecticut D+7 \n", + "Delaware D+7 \n", + "District of Columbia D+39\n", + "Florida R+2 \n", + "Georgia R+7 \n", + "Hawaii D+12\n", + "Idaho R+17\n", + "Illinois D+8 \n", + "Indiana R+6 \n", + "Iowa D+1 \n", + "Kansas R+12\n", + "Kentucky R+10\n", + "Louisiana R+10\n", + "Maine D+5 \n", + "Maryland D+9 \n", + "Massachusetts D+12\n", + "Michigan D+4 \n", + "Minnesota D+2 \n", + "Mississippi R+10\n", + "Missouri R+3 \n", + "Montana R+7 \n", + "Nebraska R+13\n", + "Nevada D+1 \n", + "New Hampshire D+2 \n", + "New Jersey D+4 \n", + "New Mexico D+2 \n", + "New York D+10\n", + "North Carolina R+4 \n", + "North Dakota R+10\n", + "Ohio R+1 \n", + "Oklahoma R+17\n", + "Oregon D+4 \n", + "Pennsylvania D+2 \n", + "Rhode Island D+11\n", + "South Carolina R+8 \n", + "South Dakota R+9 \n", + "Tennessee R+9 \n", + "Texas R+10\n", + "Utah R+20\n", + "Vermont D+13\n", + "Virginia R+2 \n", + "Washington D+5 \n", + "West Virginia R+8 \n", + "Wisconsin D+2 \n", + "Wyoming R+20" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pvi.set_index(\"State\", inplace=True);\n", + "pvi" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "State\n", + "Alabama -13\n", + "Alaska -13\n", + "Arizona -6\n", + "Arkansas -9\n", + "California 7\n", + "Colorado 0\n", + "Connecticut 7\n", + "Delaware 7\n", + "District of Columbia 39\n", + "Florida -2\n", + "Georgia -7\n", + "Hawaii 12\n", + "Idaho -17\n", + "Illinois 8\n", + "Indiana -6\n", + "Iowa 1\n", + "Kansas -12\n", + "Kentucky -10\n", + "Louisiana -10\n", + "Maine 5\n", + "Maryland 9\n", + "Massachusetts 12\n", + "Michigan 4\n", + "Minnesota 2\n", + "Mississippi -10\n", + "Missouri -3\n", + "Montana -7\n", + "Nebraska -13\n", + "Nevada 1\n", + "New Hampshire 2\n", + "New Jersey 4\n", + "New Mexico 2\n", + "New York 10\n", + "North Carolina -4\n", + "North Dakota -10\n", + "Ohio -1\n", + "Oklahoma -17\n", + "Oregon 4\n", + "Pennsylvania 2\n", + "Rhode Island 11\n", + "South Carolina -8\n", + "South Dakota -9\n", + "Tennessee -9\n", + "Texas -10\n", + "Utah -20\n", + "Vermont 13\n", + "Virginia -2\n", + "Washington 5\n", + "West Virginia -8\n", + "Wisconsin 2\n", + "Wyoming -20\n", + "Name: PVI, dtype: float64" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pvi.PVI = pvi.PVI.replace({\"EVEN\" : \"0\"})\n", + "pvi.PVI = pvi.PVI.str.replace(\"R\\+\", \"-\")\n", + "pvi.PVI = pvi.PVI.str.replace(\"D\\+\", \"\")\n", + "pvi.PVI = pvi.PVI.astype(float)\n", + "pvi.PVI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Party affliation of electorate obtained from [Gallup](http://www.gallup.com/poll/156437/Heavily-Democratic-States-Concentrated-East.aspx#2)." + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "party_affil = pandas.read_csv(\"./data/gallup_electorate.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "party_affil.Democrat = party_affil.Democrat.str.replace(\"%\", \"\").astype(float)\n", + "party_affil.Republican = party_affil.Republican.str.replace(\"%\", \"\").astype(float)\n", + "party_affil.set_index(\"State\", inplace=True);\n", + "party_affil.rename(columns={\"Democrat Advantage\" : \"dem_adv\"}, inplace=True);\n", + "party_affil[\"no_party\"] = 100 - party_affil.Democrat - party_affil.Republican" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DemocratRepublicandem_advNno_party
State
District of Columbia79.012.766.30004168.3
Rhode Island52.526.526.000062321.0
Hawaii54.328.725.600046617.0
New York52.030.821.2000867417.2
Maryland54.033.820.2000357112.2
Massachusetts52.533.419.1000358314.1
Delaware50.533.117.400054016.4
Connecticut49.834.415.4000202015.8
Vermont48.834.913.900055016.3
California48.334.613.70001619717.1
Illinois48.435.812.6000588815.8
New Jersey47.435.911.5000423916.7
Michigan47.736.611.1000505615.7
Minnesota48.438.210.2000387313.4
Washington47.537.79.8000533314.8
Oregon47.239.18.1000300213.7
Pennsylvania46.441.25.2000844312.4
Maine43.839.44.4000104016.8
New Mexico44.741.13.6000155514.2
Ohio44.140.53.6000642615.4
West Virginia45.341.93.4000120212.8
Wisconsin45.042.22.8000414012.8
Iowa43.241.41.8000233715.4
Florida43.042.30.7000996514.7
Arkansas41.540.80.7000207117.7
Kentucky43.543.10.4000289813.4
North Carolina43.443.20.2000621313.4
New Hampshire42.343.8-1.500087313.9
Virginia41.244.2-3.0000531314.6
Missouri40.144.0-3.9000372715.9
Georgia40.344.3-4.0000511015.4
Nevada39.243.4-4.2000134817.4
Louisiana40.345.1-4.8000265514.6
Colorado39.945.1-5.2000367115.0
Texas38.344.1-5.80001132517.6
South Dakota41.547.5-6.000060711.0
Indiana39.045.7-6.7000419715.3
Mississippi40.147.1-7.0000176312.8
Arizona39.847.3-7.5000432512.9
Tennessee38.146.5-8.4000423115.4
Alaska35.944.3-8.4402NaN19.8
Oklahoma38.648.0-9.4000258313.4
South Carolina36.948.8-11.9000285814.3
North Dakota35.849.0-13.200054715.2
Alabama36.049.6-13.6000319714.4
Montana35.949.6-13.7000113714.5
Kansas34.451.3-16.9000193714.3
Nebraska33.152.1-19.0000135114.8
Wyoming26.756.6-29.900060016.7
Idaho27.557.8-30.3000133614.7
Utah24.563.8-39.3000225611.7
\n", + "
" + ], + "text/plain": [ + " Democrat Republican dem_adv N no_party\n", + "State \n", + "District of Columbia 79.0 12.7 66.3000 416 8.3\n", + "Rhode Island 52.5 26.5 26.0000 623 21.0\n", + "Hawaii 54.3 28.7 25.6000 466 17.0\n", + "New York 52.0 30.8 21.2000 8674 17.2\n", + "Maryland 54.0 33.8 20.2000 3571 12.2\n", + "Massachusetts 52.5 33.4 19.1000 3583 14.1\n", + "Delaware 50.5 33.1 17.4000 540 16.4\n", + "Connecticut 49.8 34.4 15.4000 2020 15.8\n", + "Vermont 48.8 34.9 13.9000 550 16.3\n", + "California 48.3 34.6 13.7000 16197 17.1\n", + "Illinois 48.4 35.8 12.6000 5888 15.8\n", + "New Jersey 47.4 35.9 11.5000 4239 16.7\n", + "Michigan 47.7 36.6 11.1000 5056 15.7\n", + "Minnesota 48.4 38.2 10.2000 3873 13.4\n", + "Washington 47.5 37.7 9.8000 5333 14.8\n", + "Oregon 47.2 39.1 8.1000 3002 13.7\n", + "Pennsylvania 46.4 41.2 5.2000 8443 12.4\n", + "Maine 43.8 39.4 4.4000 1040 16.8\n", + "New Mexico 44.7 41.1 3.6000 1555 14.2\n", + "Ohio 44.1 40.5 3.6000 6426 15.4\n", + "West Virginia 45.3 41.9 3.4000 1202 12.8\n", + "Wisconsin 45.0 42.2 2.8000 4140 12.8\n", + "Iowa 43.2 41.4 1.8000 2337 15.4\n", + "Florida 43.0 42.3 0.7000 9965 14.7\n", + "Arkansas 41.5 40.8 0.7000 2071 17.7\n", + "Kentucky 43.5 43.1 0.4000 2898 13.4\n", + "North Carolina 43.4 43.2 0.2000 6213 13.4\n", + "New Hampshire 42.3 43.8 -1.5000 873 13.9\n", + "Virginia 41.2 44.2 -3.0000 5313 14.6\n", + "Missouri 40.1 44.0 -3.9000 3727 15.9\n", + "Georgia 40.3 44.3 -4.0000 5110 15.4\n", + "Nevada 39.2 43.4 -4.2000 1348 17.4\n", + "Louisiana 40.3 45.1 -4.8000 2655 14.6\n", + "Colorado 39.9 45.1 -5.2000 3671 15.0\n", + "Texas 38.3 44.1 -5.8000 11325 17.6\n", + "South Dakota 41.5 47.5 -6.0000 607 11.0\n", + "Indiana 39.0 45.7 -6.7000 4197 15.3\n", + "Mississippi 40.1 47.1 -7.0000 1763 12.8\n", + "Arizona 39.8 47.3 -7.5000 4325 12.9\n", + "Tennessee 38.1 46.5 -8.4000 4231 15.4\n", + "Alaska 35.9 44.3 -8.4402 NaN 19.8\n", + "Oklahoma 38.6 48.0 -9.4000 2583 13.4\n", + "South Carolina 36.9 48.8 -11.9000 2858 14.3\n", + "North Dakota 35.8 49.0 -13.2000 547 15.2\n", + "Alabama 36.0 49.6 -13.6000 3197 14.4\n", + "Montana 35.9 49.6 -13.7000 1137 14.5\n", + "Kansas 34.4 51.3 -16.9000 1937 14.3\n", + "Nebraska 33.1 52.1 -19.0000 1351 14.8\n", + "Wyoming 26.7 56.6 -29.9000 600 16.7\n", + "Idaho 27.5 57.8 -30.3000 1336 14.7\n", + "Utah 24.5 63.8 -39.3000 2256 11.7" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "party_affil" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "census_data = pandas.read_csv(\"./data/census_demographics.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def capitalize(s):\n", + " s = s.title()\n", + " s = s.replace(\"Of\", \"of\")\n", + " return s" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "census_data[\"State\"] = census_data.state.map(capitalize)\n", + "del census_data[\"state\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
per_blackper_hispper_whiteeduc_hseduc_collaverage_incomemedian_incomepop_densityvote_popolder_popper_olderper_vote
State
Alabama26.54.066.881.421.7229844208194.43001712.500672383.6000.1400.625
Alaska3.65.863.790.727.030726665211.2475548.44458540.1580.0810.658
Arizona4.530.157.485.026.3256805044856.33934880.535920515.7100.1420.607
Arkansas15.66.674.281.919.1212743926756.01798043.148428944.9340.1460.612
California6.638.139.780.730.12918860883239.124009747.9444409953.7040.1170.637
\n", + "
" + ], + "text/plain": [ + " per_black per_hisp per_white educ_hs educ_coll \\\n", + "State \n", + "Alabama 26.5 4.0 66.8 81.4 21.7 \n", + "Alaska 3.6 5.8 63.7 90.7 27.0 \n", + "Arizona 4.5 30.1 57.4 85.0 26.3 \n", + "Arkansas 15.6 6.6 74.2 81.9 19.1 \n", + "California 6.6 38.1 39.7 80.7 30.1 \n", + "\n", + " average_income median_income pop_density vote_pop \\\n", + "State \n", + "Alabama 22984 42081 94.4 3001712.500 \n", + "Alaska 30726 66521 1.2 475548.444 \n", + "Arizona 25680 50448 56.3 3934880.535 \n", + "Arkansas 21274 39267 56.0 1798043.148 \n", + "California 29188 60883 239.1 24009747.944 \n", + "\n", + " older_pop per_older per_vote \n", + "State \n", + "Alabama 672383.600 0.140 0.625 \n", + "Alaska 58540.158 0.081 0.658 \n", + "Arizona 920515.710 0.142 0.607 \n", + "Arkansas 428944.934 0.146 0.612 \n", + "California 4409953.704 0.117 0.637 " + ] + }, + "execution_count": 199, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census_data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "census_data.set_index(\"State\", inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "states_abbrev_dict = {\n", + " 'AK': 'Alaska',\n", + " 'AL': 'Alabama',\n", + " 'AR': 'Arkansas',\n", + " 'AS': 'American Samoa',\n", + " 'AZ': 'Arizona',\n", + " 'CA': 'California',\n", + " 'CO': 'Colorado',\n", + " 'CT': 'Connecticut',\n", + " 'DC': 'District of Columbia',\n", + " 'DE': 'Delaware',\n", + " 'FL': 'Florida',\n", + " 'GA': 'Georgia',\n", + " 'GU': 'Guam',\n", + " 'HI': 'Hawaii',\n", + " 'IA': 'Iowa',\n", + " 'ID': 'Idaho',\n", + " 'IL': 'Illinois',\n", + " 'IN': 'Indiana',\n", + " 'KS': 'Kansas',\n", + " 'KY': 'Kentucky',\n", + " 'LA': 'Louisiana',\n", + " 'MA': 'Massachusetts',\n", + " 'MD': 'Maryland',\n", + " 'ME': 'Maine',\n", + " 'MI': 'Michigan',\n", + " 'MN': 'Minnesota',\n", + " 'MO': 'Missouri',\n", + " 'MP': 'Northern Mariana Islands',\n", + " 'MS': 'Mississippi',\n", + " 'MT': 'Montana',\n", + " 'NA': 'National',\n", + " 'NC': 'North Carolina',\n", + " 'ND': 'North Dakota',\n", + " 'NE': 'Nebraska',\n", + " 'NH': 'New Hampshire',\n", + " 'NJ': 'New Jersey',\n", + " 'NM': 'New Mexico',\n", + " 'NV': 'Nevada',\n", + " 'NY': 'New York',\n", + " 'OH': 'Ohio',\n", + " 'OK': 'Oklahoma',\n", + " 'OR': 'Oregon',\n", + " 'PA': 'Pennsylvania',\n", + " 'PR': 'Puerto Rico',\n", + " 'RI': 'Rhode Island',\n", + " 'SC': 'South Carolina',\n", + " 'SD': 'South Dakota',\n", + " 'TN': 'Tennessee',\n", + " 'TX': 'Texas',\n", + " 'UT': 'Utah',\n", + " 'VA': 'Virginia',\n", + " 'VI': 'Virgin Islands',\n", + " 'VT': 'Vermont',\n", + " 'WA': 'Washington',\n", + " 'WI': 'Wisconsin',\n", + " 'WV': 'West Virginia',\n", + " 'WY': 'Wyoming'\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Campaign Contributions from FEC." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "obama_give = pandas.read_csv(\"./data/obama_indiv_state.csv\", \n", + " header=None, names=[\"State\", \"obama_give\"])\n", + "romney_give = pandas.read_csv(\"./data/romney_indiv_state.csv\",\n", + " header=None, names=[\"State\", \"romney_give\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "obama_give.State.replace(states_abbrev_dict, inplace=True);\n", + "romney_give.State.replace(states_abbrev_dict, inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "obama_give.set_index(\"State\", inplace=True)\n", + "romney_give.set_index(\"State\", inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "demo_data = census_data.join(party_affil[[\"dem_adv\", \"no_party\"]]).join(pvi)" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "demo_data = demo_data.join(obama_give).join(romney_give)" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
obama_giveromney_give
06.658811e-089.952707e-08
12.081808e-069.336994e-07
21.171138e-071.385368e-07
31.108137e-079.728485e-08
43.969586e-082.173072e-08
\n", + "
" + ], + "text/plain": [ + " obama_give romney_give\n", + "0 6.658811e-08 9.952707e-08\n", + "1 2.081808e-06 9.336994e-07\n", + "2 1.171138e-07 1.385368e-07\n", + "3 1.108137e-07 9.728485e-08\n", + "4 3.969586e-08 2.173072e-08" + ] + }, + "execution_count": 203, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "giving = demo_data[[\"obama_give\", \"romney_give\"]].div(demo_data[[\"vote_pop\", \"older_pop\"]].sum(1), axis=0)\n", + "giving.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "demo_data[[\"obama_give\", \"romney_give\"]] = giving" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from scipy import cluster as sp_cluster\n", + "from sklearn import cluster, neighbors" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "clean_data = sp_cluster.vq.whiten(demo_data.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", + " 1., 1., 1., 1.])" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clean_data.var(axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n" ] }, { - "cell_type": "markdown", + "data": { + "text/plain": [ + "(array([[ 0. , 0.895 , 1.4131, 1.4377, 2.0061, 2.1917, 2.3806]]),\n", + " array([[ 0, 40, 18, 42, 24, 33, 17]]))" + ] + }, + "execution_count": 86, "metadata": {}, - "source": [ - "The process for creating an economic index for the 538 model is described [here](http://fivethirtyeight.blogs.nytimes.com/2012/07/05/measuring-the-effect-of-the-economy-on-elections/#more-31732)." + "output_type": "execute_result" + } + ], + "source": [ + "KNN = neighbors.NearestNeighbors(n_neighbors=7)\n", + "KNN.fit(clean_data)\n", + "KNN.kneighbors(clean_data[0], return_distance=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('Alabama',\n", + " Index([[u'Alabama', u'South Carolina', u'Louisiana', u'Tennessee', u'Mississippi', u'North Carolina', u'Kentucky']], dtype='object', name=u'State'))" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idx = _[1]\n", + "demo_data.index[0], demo_data.index[idx]" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n", + "//anaconda/envs/pydata/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", + " DeprecationWarning)\n" ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "Obtained from WSJ.com on 10/2/12" + } + ], + "source": [ + "nearest_neighbor = {}\n", + "for i, state in enumerate(demo_data.index):\n", + " neighborhood = KNN.kneighbors(clean_data[i], return_distance=True)\n", + " nearest_neighbor.update({state : (demo_data.index[neighborhood[1]],\n", + " neighborhood[0])})" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Alabama': (Index([[u'Alabama', u'South Carolina', u'Louisiana', u'Tennessee', u'Mississippi', u'North Carolina', u'Kentucky']], dtype='object', name=u'State'),\n", + " array([[ 0. , 0.895 , 1.4131, 1.4377, 2.0061, 2.1917, 2.3806]])),\n", + " 'Alaska': (Index([[u'Alaska', u'Colorado', u'Wyoming', u'Washington', u'Virginia', u'Nevada', u'New Hampshire']], dtype='object', name=u'State'),\n", + " array([[ 0. , 4.3342, 4.5308, 4.7701, 4.9261, 4.9871, 5.2991]])),\n", + " 'Arizona': (Index([[u'Arizona', u'Oklahoma', u'New Mexico', u'Kansas', u'Nevada', u'North Carolina', u'Oregon']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.9343, 2.9355, 3.1193, 3.1995, 3.3985, 3.4008]])),\n", + " 'Arkansas': (Index([[u'Arkansas', u'Tennessee', u'Alabama', u'Missouri', u'Indiana', u'Kentucky', u'South Carolina']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.2112, 2.4606, 2.612 , 2.6739, 2.7217, 2.7387]])),\n", + " 'California': (Index([[u'California', u'Texas', u'New York', u'Illinois', u'Florida', u'New Jersey', u'Georgia']], dtype='object', name=u'State'),\n", + " array([[ 0. , 4.0483, 4.6365, 5.9325, 6.0743, 6.8872, 7.3305]])),\n", + " 'Colorado': (Index([[u'Colorado', u'Washington', u'Virginia', u'Minnesota', u'Illinois', u'New Hampshire', u'Oregon']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.0688, 2.5587, 3.0797, 3.091 , 3.203 , 3.2526]])),\n", + " 'Connecticut': (Index([[u'Connecticut', u'Massachusetts', u'New Jersey', u'Virginia', u'New Hampshire', u'Washington', u'Maryland']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.0824, 2.5353, 3.2202, 3.5911, 3.6411, 3.7422]])),\n", + " 'Delaware': (Index([[u'Delaware', u'Michigan', u'Washington', u'Oregon', u'Missouri', u'Illinois', u'Rhode Island']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.8113, 2.9256, 2.926 , 3.0637, 3.0731, 3.1641]])),\n", + " 'District of Columbia': (Index([[u'District of Columbia', u'Maryland', u'Massachusetts', u'Connecticut', u'Virginia', u'New Jersey', u'New York']], dtype='object', name=u'State'),\n", + " array([[ 0. , 13.03 , 13.3261, 13.6773, 14.119 , 14.1531,\n", + " 14.5409]])),\n", + " 'Florida': (Index([[u'Florida', u'Pennsylvania', u'New York', u'Ohio', u'Arizona', u'Michigan', u'Illinois']], dtype='object', name=u'State'),\n", + " array([[ 0. , 3.6013, 4.1043, 4.154 , 4.3315, 4.3721, 4.3781]])),\n", + " 'Georgia': (Index([[u'Georgia', u'North Carolina', u'Louisiana', u'South Carolina', u'Tennessee', u'Alabama', u'Illinois']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.0943, 2.2277, 2.5821, 2.8322, 2.972 , 3.1716]])),\n", + " 'Hawaii': (Index([[u'Hawaii', u'Delaware', u'New Jersey', u'Washington', u'Illinois', u'Nevada', u'Rhode Island']], dtype='object', name=u'State'),\n", + " array([[ 0. , 3.5958, 4.0706, 4.0882, 4.4516, 4.5466, 4.6198]])),\n", + " 'Idaho': (Index([[u'Idaho', u'Nebraska', u'Kansas', u'Oklahoma', u'Wyoming', u'Montana', u'South Dakota']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.1515, 2.2253, 2.3819, 2.8463, 2.9776, 3.0037]])),\n", + " 'Illinois': (Index([[u'Illinois', u'Washington', u'New York', u'Michigan', u'Virginia', u'New Jersey', u'North Carolina']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.1981, 2.2448, 2.4582, 2.5843, 2.7518, 2.9154]])),\n", + " 'Indiana': (Index([[u'Indiana', u'Missouri', u'Tennessee', u'Ohio', u'Michigan', u'Iowa', u'Wisconsin']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.092 , 1.6695, 1.7382, 2.0651, 2.1233, 2.1329]])),\n", + " 'Iowa': (Index([[u'Iowa', u'Maine', u'Wisconsin', u'Missouri', u'Montana', u'Oregon', u'North Dakota']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.8098, 1.8516, 1.8777, 1.9101, 1.9952, 2.0246]])),\n", + " 'Kansas': (Index([[u'Kansas', u'Nebraska', u'North Dakota', u'Montana', u'Indiana', u'Idaho', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 0.6986, 2.0249, 2.0884, 2.2029, 2.2253, 2.3144]])),\n", + " 'Kentucky': (Index([[u'Kentucky', u'Tennessee', u'West Virginia', u'Indiana', u'Alabama', u'Oklahoma', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.7644, 2.0265, 2.2391, 2.3806, 2.4241, 2.5181]])),\n", + " 'Louisiana': (Index([[u'Louisiana', u'Alabama', u'South Carolina', u'Mississippi', u'Tennessee', u'Georgia', u'North Carolina']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.4131, 1.5056, 1.7716, 2.043 , 2.2277, 2.2626]])),\n", + " 'Maine': (Index([[u'Maine', u'Iowa', u'Vermont', u'North Dakota', u'Montana', u'Oregon', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.8098, 2.1204, 2.3112, 2.3425, 2.5626, 2.6826]])),\n", + " 'Maryland': (Index([[u'Maryland', u'Virginia', u'New Jersey', u'Massachusetts', u'Connecticut', u'Washington', u'Illinois']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.9214, 3.1488, 3.1622, 3.7422, 3.7991, 3.878 ]])),\n", + " 'Massachusetts': (Index([[u'Massachusetts', u'Connecticut', u'New Jersey', u'Washington', u'Virginia', u'New Hampshire', u'Maryland']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.0824, 2.7455, 2.7496, 2.8705, 2.8822, 3.1622]])),\n", + " 'Michigan': (Index([[u'Michigan', u'Ohio', u'Missouri', u'Indiana', u'Wisconsin', u'Pennsylvania', u'Oregon']], dtype='object', name=u'State'),\n", + " array([[ 0. , 0.9378, 1.5973, 2.0651, 2.1259, 2.1318, 2.2958]])),\n", + " 'Minnesota': (Index([[u'Minnesota', u'Washington', u'Wisconsin', u'Oregon', u'New Hampshire', u'Iowa', u'Vermont']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.5917, 1.6802, 1.9837, 2.267 , 2.697 , 2.8457]])),\n", + " 'Mississippi': (Index([[u'Mississippi', u'Louisiana', u'Alabama', u'South Carolina', u'Tennessee', u'North Carolina', u'Kentucky']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.7716, 2.0061, 2.3089, 3.1488, 3.2514, 3.4804]])),\n", + " 'Missouri': (Index([[u'Missouri', u'Indiana', u'Ohio', u'Michigan', u'Tennessee', u'Iowa', u'Wisconsin']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.092 , 1.4165, 1.5973, 1.617 , 1.8777, 2.1894]])),\n", + " 'Montana': (Index([[u'Montana', u'North Dakota', u'Nebraska', u'Iowa', u'Kansas', u'South Dakota', u'Maine']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.261 , 1.818 , 1.9101, 2.0884, 2.1583, 2.3425]])),\n", + " 'Nebraska': (Index([[u'Nebraska', u'Kansas', u'North Dakota', u'Montana', u'Idaho', u'Iowa', u'Indiana']], dtype='object', name=u'State'),\n", + " array([[ 0. , 0.6986, 1.7342, 1.818 , 2.1515, 2.2173, 2.2261]])),\n", + " 'Nevada': (Index([[u'Nevada', u'Arizona', u'Illinois', u'Delaware', u'Indiana', u'New Mexico', u'Washington']], dtype='object', name=u'State'),\n", + " array([[ 0. , 3.1995, 3.3382, 3.493 , 3.5531, 3.6011, 3.6074]])),\n", + " 'New Hampshire': (Index([[u'New Hampshire', u'Minnesota', u'Washington', u'Vermont', u'Massachusetts', u'Oregon', u'Wisconsin']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.267 , 2.5447, 2.7523, 2.8822, 3.0272, 3.0489]])),\n", + " 'New Jersey': (Index([[u'New Jersey', u'Connecticut', u'Virginia', u'Massachusetts', u'Illinois', u'Washington', u'Maryland']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.5353, 2.6702, 2.7455, 2.7518, 3.0557, 3.1488]])),\n", + " 'New Mexico': (Index([[u'New Mexico', u'Arizona', u'Nevada', u'Oklahoma', u'Oregon', u'North Carolina', u'Illinois']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.9355, 3.6011, 4.8648, 4.8963, 4.9717, 5.1184]])),\n", + " 'New York': (Index([[u'New York', u'Illinois', u'New Jersey', u'Virginia', u'Michigan', u'Washington', u'Florida']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.2448, 3.4305, 3.7701, 3.9345, 4.0056, 4.1043]])),\n", + " 'North Carolina': (Index([[u'North Carolina', u'South Carolina', u'Tennessee', u'Georgia', u'Alabama', u'Louisiana', u'Indiana']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.7201, 1.8596, 2.0943, 2.1917, 2.2626, 2.2931]])),\n", + " 'North Dakota': (Index([[u'North Dakota', u'Montana', u'Nebraska', u'Iowa', u'Kansas', u'Missouri', u'Indiana']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.261 , 1.7342, 2.0246, 2.0249, 2.2294, 2.3029]])),\n", + " 'Ohio': (Index([[u'Ohio', u'Michigan', u'Missouri', u'Indiana', u'Pennsylvania', u'Wisconsin', u'North Carolina']], dtype='object', name=u'State'),\n", + " array([[ 0. , 0.9378, 1.4165, 1.7382, 1.8819, 2.192 , 2.3251]])),\n", + " 'Oklahoma': (Index([[u'Oklahoma', u'Tennessee', u'Indiana', u'Kansas', u'Idaho', u'Kentucky', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.1644, 2.2664, 2.3192, 2.3819, 2.4241, 2.4273]])),\n", + " 'Oregon': (Index([[u'Oregon', u'Wisconsin', u'Washington', u'Minnesota', u'Iowa', u'Michigan', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.297 , 1.9679, 1.9837, 1.9952, 2.2958, 2.3314]])),\n", + " 'Pennsylvania': (Index([[u'Pennsylvania', u'Ohio', u'Michigan', u'Wisconsin', u'Oregon', u'North Carolina', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.8819, 2.1318, 2.2291, 2.6733, 2.731 , 2.7411]])),\n", + " 'Rhode Island': (Index([[u'Rhode Island', u'Delaware', u'Vermont', u'Maine', u'Washington', u'Illinois', u'Nevada']], dtype='object', name=u'State'),\n", + " array([[ 0. , 3.1641, 3.6876, 3.9865, 4.0764, 4.1222, 4.1348]])),\n", + " 'South Carolina': (Index([[u'South Carolina', u'Alabama', u'Louisiana', u'Tennessee', u'North Carolina', u'Mississippi', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 0.895 , 1.5056, 1.5187, 1.7201, 2.3089, 2.3979]])),\n", + " 'South Dakota': (Index([[u'South Dakota', u'Montana', u'Nebraska', u'Kansas', u'Wisconsin', u'Iowa', u'Oklahoma']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.1583, 2.3366, 2.3479, 2.4675, 2.5475, 2.5613]])),\n", + " 'Tennessee': (Index([[u'Tennessee', u'Alabama', u'South Carolina', u'Missouri', u'Indiana', u'Kentucky', u'North Carolina']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.4377, 1.5187, 1.617 , 1.6695, 1.7644, 1.8596]])),\n", + " 'Texas': (Index([[u'Texas', u'California', u'New York', u'Illinois', u'Georgia', u'Nevada', u'Arizona']], dtype='object', name=u'State'),\n", + " array([[ 0. , 4.0483, 4.7608, 4.8448, 4.8556, 5.077 , 5.2005]])),\n", + " 'Utah': (Index([[u'Utah', u'Idaho', u'Wyoming', u'Kansas', u'Oklahoma', u'Nebraska', u'South Dakota']], dtype='object', name=u'State'),\n", + " array([[ 0. , 4.4224, 5.167 , 5.5232, 5.6994, 5.7875, 6.0012]])),\n", + " 'Vermont': (Index([[u'Vermont', u'Maine', u'Oregon', u'New Hampshire', u'Minnesota', u'Washington', u'Iowa']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.1204, 2.6838, 2.7523, 2.8457, 3.0245, 3.0897]])),\n", + " 'Virginia': (Index([[u'Virginia', u'Colorado', u'Washington', u'Illinois', u'New Jersey', u'Massachusetts', u'Maryland']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.5587, 2.5714, 2.5843, 2.6702, 2.8705, 2.9214]])),\n", + " 'Washington': (Index([[u'Washington', u'Minnesota', u'Oregon', u'Colorado', u'Illinois', u'Wisconsin', u'New Hampshire']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.5917, 1.9679, 2.0688, 2.1981, 2.2739, 2.5447]])),\n", + " 'West Virginia': (Index([[u'West Virginia', u'Kentucky', u'Tennessee', u'Arkansas', u'Oklahoma', u'Missouri', u'Indiana']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.0265, 3.1467, 3.2553, 3.3697, 3.3775, 3.3816]])),\n", + " 'Wisconsin': (Index([[u'Wisconsin', u'Oregon', u'Minnesota', u'Iowa', u'Michigan', u'Indiana', u'Missouri']], dtype='object', name=u'State'),\n", + " array([[ 0. , 1.297 , 1.6802, 1.8516, 2.1259, 2.1329, 2.1894]])),\n", + " 'Wyoming': (Index([[u'Wyoming', u'Nebraska', u'Idaho', u'North Dakota', u'Kansas', u'Montana', u'Indiana']], dtype='object', name=u'State'),\n", + " array([[ 0. , 2.772 , 2.8463, 2.8491, 2.9062, 3.3221, 3.7427]]))}" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nearest_neighbor" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "k_means = cluster.KMeans(n_clusters=5, n_init=50)\n", + "k_means.fit(clean_data)\n", + "values = k_means.cluster_centers_.squeeze()\n", + "labels = k_means.labels_" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "clusters = sp_cluster.vq.kmeans(clean_data, 5)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def choose_group(data, clusters):\n", + " \"\"\"\n", + " Return the index of the cluster to which the rows in data\n", + " are \"closest\" (in the sense of the L2-norm)\n", + " \"\"\"\n", + " data = data[:,None] # add an axis for broadcasting\n", + " distances = data - clusters\n", + " groups = []\n", + " for row in distances:\n", + " dists = map(np.linalg.norm, row)\n", + " groups.append(np.argmin(dists))\n", + " return groups" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "groups = choose_group(clean_data, clusters)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 4, 1, 0, 1, 2, 2, 2, 3, 1, 0, 2, 4, 2, 0, 4, 4, 0, 0, 4, 2, 2, 0,\n", + " 4, 0, 0, 4, 4, 1, 4, 2, 1, 2, 0, 4, 0, 0, 4, 0, 2, 0, 4, 0, 1, 4, 4,\n", + " 2, 2, 0, 4, 4])" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array(groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or use a one-liner" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "groups = [np.argmin(map(np.linalg.norm, (clean_data[:,None] - clusters)[i])) for i in range(51)]" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "demo_data[\"kmeans_group\"] = groups\n", + "demo_data[\"kmeans_labels\"] = labels" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Alabama' 'Arkansas' 'Georgia' 'Indiana' 'Kentucky' 'Louisiana' 'Michigan'\n", + " 'Mississippi' 'Missouri' 'North Carolina' 'Ohio' 'Oklahoma' 'Pennsylvania'\n", + " 'South Carolina' 'Tennessee' 'West Virginia']\n", + "['Arizona' 'California' 'Florida' 'Nevada' 'New Mexico' 'Texas']\n", + "['Colorado' 'Connecticut' 'Delaware' 'Hawaii' 'Illinois' 'Maryland'\n", + " 'Massachusetts' 'New Jersey' 'New York' 'Rhode Island' 'Virginia'\n", + " 'Washington']\n", + "['District of Columbia']\n", + "['Alaska' 'Idaho' 'Iowa' 'Kansas' 'Maine' 'Minnesota' 'Montana' 'Nebraska'\n", + " 'New Hampshire' 'North Dakota' 'Oregon' 'South Dakota' 'Utah' 'Vermont'\n", + " 'Wisconsin' 'Wyoming']\n" ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "forecasts = pandas.read_table(\"/home/skipper/school/seaboldgit/\"\n", - " \"talks/pydata/data/wsj_forecast.csv\", skiprows=2)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 5 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "forecasts" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 6, - "text": [ - " Forecaster Institution Q3 2012 Q4 2012\n", - "0 Paul Ashworth Capital Economics 2.0 1.5\n", - "1 Nariman Behravesh IHS Global Insight 1.5 1.6\n", - "2 Richard Berner/ David... Morgan Stanley NaN NaN\n", - "3 Ram Bhagavatula Combinatorics Capital 2.0 4.0\n", - "4 Beth Ann Bovino * Standard and Poor's NaN NaN\n", - "5 Jay Brinkmann Mortgage Bankers Asso... 1.8 1.9\n", - "6 Michael Carey Credit Agricole CIB 1.7 1.6\n", - "7 Joseph Carson AllianceBernstein 2.5 3.5\n", - "8 Julia Coronado BNP Paribas 1.4 1.6\n", - "9 Mike Cosgrove Econoclast 1.6 1.6\n", - "10 Lou Crandall Wrightson ICAP 1.8 1.8\n", - "11 J. Dewey Daane Vanderbilt University 1.5 1.5\n", - "12 Douglas Duncan Fannie Mae 1.8 1.7\n", - "13 Robert Dye Comerica Bank 2.5 2.2\n", - "14 Maria Fiorini Ramirez... MFR, Inc. 1.4 1.2\n", - "15 Ethan Harris Bank of America Secur... 1.3 1.0\n", - "16 Maury Harris UBS 1.5 1.8\n", - "17 Jan Hatzius Goldman, Sachs & Co. 2.3 1.5\n", - "18 Tracy Herrick Avidbank 1.8 1.8\n", - "19 Stuart Hoffman * PNC Financial Service... NaN NaN\n", - "20 Gene Huang FedEx Corp. 1.9 1.7\n", - "21 William B. Hummer Wintrust Wealth Manag... 1.7 1.9\n", - "22 Bruce Kasman JP Morgan Chase & Co. 1.5 2.0\n", - "23 Joseph LaVorgna Deutsche Bank Securit... 2.7 2.8\n", - "24 Edward Leamer/David S... UCLA Anderson Forecast 1.3 1.5\n", - "25 Don Leavens/Tim Gill NEMA Business Informa... 1.7 1.7\n", - "26 John Lonski Moody's Investors Ser... 1.5 1.3\n", - "27 Dean Maki Barclays Capital 2.0 2.5\n", - "28 Aneta Markowska * Societe Generale NaN NaN\n", - "29 Jim Meil/Arun Raha Eaton Corp. 1.2 2.1\n", - "30 Mark Nielson MacroEcon Global Advi... 2.2 2.8\n", - "31 Michael P. Niemira International Council... 2.3 2.2\n", - "32 Jim O'Sullivan High Frequency Economics 2.5 2.0\n", - "33 Nicholas S. Perna Perna Associates 2.2 1.5\n", - "34 Dr. Joel Prakken/ Chr... Macroeconomic Advisers 1.5 1.4\n", - "35 David Resler Nomura Securities Int... 1.9 1.7\n", - "36 John Ryding/Conrad De... RDQ Economics 2.1 2.4\n", - "37 John Silvia Wells Fargo & Co. 1.6 1.7\n", - "38 Allen Sinai Decision Economics, Inc. 2.1 2.7\n", - "39 James F. Smith Parsec Financial Mana... 3.8 4.8\n", - "40 Sean M. Snaith University of Central... 1.7 1.9\n", - "41 Sung Won Sohn California State Univ... 1.8 1.7\n", - "42 Neal Soss CSFB 1.5 2.2\n", - "43 Stephen Stanley Pierpont Securities 1.0 2.1\n", - "44 Susan M. Sterne Economic Analysis Ass... 2.2 1.9\n", - "45 Diane Swonk Mesirow Financial 1.3 1.5\n", - "46 Carl Tannenbaum The Northern Trust 1.7 2.0\n", - "47 Bart van Ark The Conference Board 1.6 1.6\n", - "48 Brian S. Wesbury/ Rob... First Trust Advisors,... 2.5 3.0\n", - "49 William T. Wilson Skolkovo Institute fo... 1.9 2.2\n", - "50 Lawrence Yun National Association ... 1.7 2.1" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "code", - "collapsed": true, - "input": [ - "forecasts.rename(columns={\"Q3 2012\" : \"gdp_q3_2012\", \n", - " \"Q4 2012\" : \"gdp_q4_2012\"}, inplace=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 7, - "text": [ - " Forecaster Institution gdp_q3_2012 gdp_q4_2012\n", - "0 Paul Ashworth Capital Economics 2.0 1.5\n", - "1 Nariman Behravesh IHS Global Insight 1.5 1.6\n", - "2 Richard Berner/ David... Morgan Stanley NaN NaN\n", - "3 Ram Bhagavatula Combinatorics Capital 2.0 4.0\n", - "4 Beth Ann Bovino * Standard and Poor's NaN NaN\n", - "5 Jay Brinkmann Mortgage Bankers Asso... 1.8 1.9\n", - "6 Michael Carey Credit Agricole CIB 1.7 1.6\n", - "7 Joseph Carson AllianceBernstein 2.5 3.5\n", - "8 Julia Coronado BNP Paribas 1.4 1.6\n", - "9 Mike Cosgrove Econoclast 1.6 1.6\n", - "10 Lou Crandall Wrightson ICAP 1.8 1.8\n", - "11 J. Dewey Daane Vanderbilt University 1.5 1.5\n", - "12 Douglas Duncan Fannie Mae 1.8 1.7\n", - "13 Robert Dye Comerica Bank 2.5 2.2\n", - "14 Maria Fiorini Ramirez... MFR, Inc. 1.4 1.2\n", - "15 Ethan Harris Bank of America Secur... 1.3 1.0\n", - "16 Maury Harris UBS 1.5 1.8\n", - "17 Jan Hatzius Goldman, Sachs & Co. 2.3 1.5\n", - "18 Tracy Herrick Avidbank 1.8 1.8\n", - "19 Stuart Hoffman * PNC Financial Service... NaN NaN\n", - "20 Gene Huang FedEx Corp. 1.9 1.7\n", - "21 William B. Hummer Wintrust Wealth Manag... 1.7 1.9\n", - "22 Bruce Kasman JP Morgan Chase & Co. 1.5 2.0\n", - "23 Joseph LaVorgna Deutsche Bank Securit... 2.7 2.8\n", - "24 Edward Leamer/David S... UCLA Anderson Forecast 1.3 1.5\n", - "25 Don Leavens/Tim Gill NEMA Business Informa... 1.7 1.7\n", - "26 John Lonski Moody's Investors Ser... 1.5 1.3\n", - "27 Dean Maki Barclays Capital 2.0 2.5\n", - "28 Aneta Markowska * Societe Generale NaN NaN\n", - "29 Jim Meil/Arun Raha Eaton Corp. 1.2 2.1\n", - "30 Mark Nielson MacroEcon Global Advi... 2.2 2.8\n", - "31 Michael P. Niemira International Council... 2.3 2.2\n", - "32 Jim O'Sullivan High Frequency Economics 2.5 2.0\n", - "33 Nicholas S. Perna Perna Associates 2.2 1.5\n", - "34 Dr. Joel Prakken/ Chr... Macroeconomic Advisers 1.5 1.4\n", - "35 David Resler Nomura Securities Int... 1.9 1.7\n", - "36 John Ryding/Conrad De... RDQ Economics 2.1 2.4\n", - "37 John Silvia Wells Fargo & Co. 1.6 1.7\n", - "38 Allen Sinai Decision Economics, Inc. 2.1 2.7\n", - "39 James F. Smith Parsec Financial Mana... 3.8 4.8\n", - "40 Sean M. Snaith University of Central... 1.7 1.9\n", - "41 Sung Won Sohn California State Univ... 1.8 1.7\n", - "42 Neal Soss CSFB 1.5 2.2\n", - "43 Stephen Stanley Pierpont Securities 1.0 2.1\n", - "44 Susan M. Sterne Economic Analysis Ass... 2.2 1.9\n", - "45 Diane Swonk Mesirow Financial 1.3 1.5\n", - "46 Carl Tannenbaum The Northern Trust 1.7 2.0\n", - "47 Bart van Ark The Conference Board 1.6 1.6\n", - "48 Brian S. Wesbury/ Rob... First Trust Advisors,... 2.5 3.0\n", - "49 William T. Wilson Skolkovo Institute fo... 1.9 2.2\n", - "50 Lawrence Yun National Association ... 1.7 2.1" - ] - } - ], - "prompt_number": 7 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "forecasts" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 8, - "text": [ - " Forecaster Institution gdp_q3_2012 gdp_q4_2012\n", - "0 Paul Ashworth Capital Economics 2.0 1.5\n", - "1 Nariman Behravesh IHS Global Insight 1.5 1.6\n", - "2 Richard Berner/ David... Morgan Stanley NaN NaN\n", - "3 Ram Bhagavatula Combinatorics Capital 2.0 4.0\n", - "4 Beth Ann Bovino * Standard and Poor's NaN NaN\n", - "5 Jay Brinkmann Mortgage Bankers Asso... 1.8 1.9\n", - "6 Michael Carey Credit Agricole CIB 1.7 1.6\n", - "7 Joseph Carson AllianceBernstein 2.5 3.5\n", - "8 Julia Coronado BNP Paribas 1.4 1.6\n", - "9 Mike Cosgrove Econoclast 1.6 1.6\n", - "10 Lou Crandall Wrightson ICAP 1.8 1.8\n", - "11 J. Dewey Daane Vanderbilt University 1.5 1.5\n", - "12 Douglas Duncan Fannie Mae 1.8 1.7\n", - "13 Robert Dye Comerica Bank 2.5 2.2\n", - "14 Maria Fiorini Ramirez... MFR, Inc. 1.4 1.2\n", - "15 Ethan Harris Bank of America Secur... 1.3 1.0\n", - "16 Maury Harris UBS 1.5 1.8\n", - "17 Jan Hatzius Goldman, Sachs & Co. 2.3 1.5\n", - "18 Tracy Herrick Avidbank 1.8 1.8\n", - "19 Stuart Hoffman * PNC Financial Service... NaN NaN\n", - "20 Gene Huang FedEx Corp. 1.9 1.7\n", - "21 William B. Hummer Wintrust Wealth Manag... 1.7 1.9\n", - "22 Bruce Kasman JP Morgan Chase & Co. 1.5 2.0\n", - "23 Joseph LaVorgna Deutsche Bank Securit... 2.7 2.8\n", - "24 Edward Leamer/David S... UCLA Anderson Forecast 1.3 1.5\n", - "25 Don Leavens/Tim Gill NEMA Business Informa... 1.7 1.7\n", - "26 John Lonski Moody's Investors Ser... 1.5 1.3\n", - "27 Dean Maki Barclays Capital 2.0 2.5\n", - "28 Aneta Markowska * Societe Generale NaN NaN\n", - "29 Jim Meil/Arun Raha Eaton Corp. 1.2 2.1\n", - "30 Mark Nielson MacroEcon Global Advi... 2.2 2.8\n", - "31 Michael P. Niemira International Council... 2.3 2.2\n", - "32 Jim O'Sullivan High Frequency Economics 2.5 2.0\n", - "33 Nicholas S. Perna Perna Associates 2.2 1.5\n", - "34 Dr. Joel Prakken/ Chr... Macroeconomic Advisers 1.5 1.4\n", - "35 David Resler Nomura Securities Int... 1.9 1.7\n", - "36 John Ryding/Conrad De... RDQ Economics 2.1 2.4\n", - "37 John Silvia Wells Fargo & Co. 1.6 1.7\n", - "38 Allen Sinai Decision Economics, Inc. 2.1 2.7\n", - "39 James F. Smith Parsec Financial Mana... 3.8 4.8\n", - "40 Sean M. Snaith University of Central... 1.7 1.9\n", - "41 Sung Won Sohn California State Univ... 1.8 1.7\n", - "42 Neal Soss CSFB 1.5 2.2\n", - "43 Stephen Stanley Pierpont Securities 1.0 2.1\n", - "44 Susan M. Sterne Economic Analysis Ass... 2.2 1.9\n", - "45 Diane Swonk Mesirow Financial 1.3 1.5\n", - "46 Carl Tannenbaum The Northern Trust 1.7 2.0\n", - "47 Bart van Ark The Conference Board 1.6 1.6\n", - "48 Brian S. Wesbury/ Rob... First Trust Advisors,... 2.5 3.0\n", - "49 William T. Wilson Skolkovo Institute fo... 1.9 2.2\n", - "50 Lawrence Yun National Association ... 1.7 2.1" - ] - } - ], - "prompt_number": 8 - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "Pandas methods are NaN aware, so we can just get the median." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "median_forecast = forecasts[['gdp_q3_2012', 'gdp_q4_2012']].median()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 9 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "median_forecast" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 10, - "text": [ - "gdp_q3_2012 1.8\n", - "gdp_q4_2012 1.8" - ] - } - ], - "prompt_number": 10 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Economics State Variables from FRED" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Job Growth (Nonfarm-payrolls) **PAYEMS**
\n", - "Personal Income **PI**
\n", - "Industrial production **INDPRO**
\n", - "Consumption **PCEC96**
\n", - "Inflation **CPIAUCSL**
" - ] - }, - { - "cell_type": "code", - "collapsed": true, - "input": [ - "from pandas.io.data import DataReader" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 11 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "series = dict(jobs = \"PAYEMS\",\n", - " income = \"PI\",\n", - " prod = \"INDPRO\",\n", - " cons = \"PCEC96\",\n", - " prices = \"CPIAUCSL\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 12 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#indicators = []\n", - "#for variable in series:\n", - "# data = DataReader(series[variable], \"fred\", start=\"2010-1-1\")\n", - "# # renaming not necessary in master\n", - "# data.rename(columns={\"VALUE\" : variable}, inplace=True)\n", - "# indicators.append(data)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 13 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#indicators = pandas.concat(indicators, axis=1)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 14 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#indicators" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 15 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Polling Data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "I used Python to scrape the [Real Clear Politics](realclearpolitics.com) website and download data for the 2004 and 2008 elections. The scraping scripts are available in the github repository for this talk. State by state historical data for the 2004 and 2008 Presidential elections was obtained from [electoral-vote.com](www.electorical-vote.com)." - ] - }, - { - "cell_type": "heading", - "level": 2, - "metadata": {}, - "source": [ - "Polling Average" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Details can be found at the 538 blog [here](http://www.fivethirtyeight.com/2008/03/pollster-ratings-updated.html)." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "tossup = [\"Colorado\", \"Florida\", \"Iowa\", \"New Hampshire\", \"Nevada\", \n", - " \"Ohio\", \"Virginia\", \"Wisconsin\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 16 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "national_data2012 = pandas.read_table(\"/home/skipper/school/seaboldgit/talks/pydata/\"\n", - " \"data/2012_poll_data.csv\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 17 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "national_data2012" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 18, - "text": [ - "\n", - "Int64Index: 290 entries, 0 to 289\n", - "Data columns:\n", - "Poll 290 non-null values\n", - "Date 290 non-null values\n", - "Sample 290 non-null values\n", - "MoE 290 non-null values\n", - "Obama (D) 290 non-null values\n", - "Romney (R) 290 non-null values\n", - "Spread 290 non-null values\n", - "dtypes: float64(2), object(5)" - ] - } - ], - "prompt_number": 18 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "national_data2012.rename(columns={\"Poll\" : \"Pollster\"}, inplace=True)\n", - "national_data2012[\"obama_spread\"] = national_data2012[\"Obama (D)\"] - national_data2012[\"Romney (R)\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 19 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "national_data2012[\"State\"] = \"USA\"" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 20 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012 = pandas.read_table(\"/home/skipper/school/seaboldgit/talks/pydata/data/2012_poll_data_states.csv\")\n", - "state_data2012" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 21, - "text": [ - "\n", - "Int64Index: 767 entries, 0 to 766\n", - "Data columns:\n", - "Date 767 non-null values\n", - "MoE 767 non-null values\n", - "Obama (D) 767 non-null values\n", - "Poll 767 non-null values\n", - "Romney (R) 767 non-null values\n", - "Sample 767 non-null values\n", - "Spread 767 non-null values\n", - "State 767 non-null values\n", - "dtypes: float64(2), object(6)" - ] - } - ], - "prompt_number": 21 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012[\"obama_spread\"] = state_data2012[\"Obama (D)\"] - state_data2012[\"Romney (R)\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 22 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.rename(columns=dict(Poll=\"Pollster\"), inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 23 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.MoE" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 24, - "text": [ - "0 --\n", - "1 4.5\n", - "2 4.6\n", - "3 5.0\n", - "4 4.4\n", - "5 4.4\n", - "6 4.0\n", - "7 3.0\n", - "8 5.0\n", - "9 4.4\n", - "10 4.2\n", - "11 2.8\n", - "12 4.2\n", - "13 5.0\n", - "14 4.3\n", - "...\n", - "752 2.8\n", - "753 --\n", - "754 4.0\n", - "755 3.8\n", - "756 4.5\n", - "757 4.5\n", - "758 5.0\n", - "759 3.2\n", - "760 4.5\n", - "761 4.5\n", - "762 2.4\n", - "763 3.4\n", - "764 2.9\n", - "765 3.5\n", - "766 3.4\n", - "Name: MoE, Length: 767" - ] - } - ], - "prompt_number": 24 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.MoE = state_data2012.MoE.replace(\"--\", \"nan\").astype(float)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 25 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 26, - "text": [ - "\n", - "Int64Index: 767 entries, 0 to 766\n", - "Data columns:\n", - "Date 767 non-null values\n", - "MoE 736 non-null values\n", - "Obama (D) 767 non-null values\n", - "Pollster 767 non-null values\n", - "Romney (R) 767 non-null values\n", - "Sample 767 non-null values\n", - "Spread 767 non-null values\n", - "State 767 non-null values\n", - "obama_spread 767 non-null values\n", - "dtypes: float64(4), object(5)" - ] - } - ], - "prompt_number": 26 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012 = state_data2012.set_index([\"Pollster\", \"State\", \"Date\"]).drop(\"RCP Average\", level=0).reset_index()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 27 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.head(5)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 28, - "text": [ - " Pollster State Date MoE Obama (D) Romney (R) Sample Spread obama_spread\n", - "0 Rasmussen Reports WA 9/26 - 9/26 4.5 52 41 500 LV Obama +11 11\n", - "1 Gravis Marketing WA 9/21 - 9/22 4.6 56 39 625 LV Obama +17 17\n", - "2 Elway Poll WA 9/9 - 9/12 5.0 53 36 405 RV Obama +17 17\n", - "3 SurveyUSA WA 9/7 - 9/9 4.4 54 38 524 LV Obama +16 16\n", - "4 SurveyUSA WA 8/1 - 8/2 4.4 54 37 524 LV Obama +17 17" - ] - } - ], - "prompt_number": 28 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Clean up the sample numbers to make it a number." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.Sample" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 29, - "text": [ - "0 500 LV\n", - "1 625 LV\n", - "2 405 RV\n", - "3 524 LV\n", - "4 524 LV\n", - "5 630 RV\n", - "6 1073 RV\n", - "7 408 RV\n", - "8 500 LV\n", - "9 557 RV\n", - "10 1264 RV\n", - "11 572 RV\n", - "12 405 RV\n", - "13 549 LV\n", - "14 469 RV\n", - "...\n", - "724 600 LV\n", - "725 1224 RV\n", - "726 625 LV\n", - "727 656 LV\n", - "728 500 LV\n", - "729 500 LV\n", - "730 450 LV\n", - "731 934 RV\n", - "732 500 LV\n", - "733 500 LV\n", - "734 1625 RV\n", - "735 819 RV\n", - "736 1176 RV\n", - "737 796 LV\n", - "738 817 RV\n", - "Name: Sample, Length: 739" - ] - } - ], - "prompt_number": 29 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.Sample = state_data2012.Sample.str.replace(\"\\s*([L|R]V)|A\", \"\") # 20 RV\n", - "state_data2012.Sample = state_data2012.Sample.str.replace(\"\\s*--\", \"nan\") # --\n", - "state_data2012.Sample = state_data2012.Sample.str.replace(\"^$\", \"nan\")\n", - "\n", - "national_data2012.Sample = national_data2012.Sample.str.replace(\"\\s*([L|R]V)|A\", \"\") # 20 RV\n", - "national_data2012.Sample = national_data2012.Sample.str.replace(\"\\s*--\", \"nan\") # --\n", - "national_data2012.Sample = national_data2012.Sample.str.replace(\"^$\", \"nan\")\n" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 30 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.Sample.astype(float)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 31, - "text": [ - "0 500\n", - "1 625\n", - "2 405\n", - "3 524\n", - "4 524\n", - "5 630\n", - "6 1073\n", - "7 408\n", - "8 500\n", - "9 557\n", - "10 1264\n", - "11 572\n", - "12 405\n", - "13 549\n", - "14 469\n", - "...\n", - "724 600\n", - "725 1224\n", - "726 625\n", - "727 656\n", - "728 500\n", - "729 500\n", - "730 450\n", - "731 934\n", - "732 500\n", - "733 500\n", - "734 1625\n", - "735 819\n", - "736 1176\n", - "737 796\n", - "738 817\n", - "Name: Sample, Length: 739" - ] - } - ], - "prompt_number": 31 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.Sample = state_data2012.Sample.astype(float)\n", - "national_data2012.Sample = national_data2012.Sample.astype(float)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 32 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The 2012 data is currently in order of time by state but doesn't have any years." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#dates2012.get_group((\"OH\", \"NBC News/Marist\"))" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 33 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012[\"start_date\"] = \"\"\n", - "state_data2012[\"end_date\"] = \"\"\n", - "dates2012 = state_data2012.groupby([\"State\", \"Pollster\"])[\"Date\"]\n", - "for _, date in dates2012:\n", - " year = 2012\n", - " # checked by hand, none straddle years\n", - " changes = np.r_[False, np.diff(map(int, [i[0].split('/')[0] for \n", - " i in date.str.split(' - ')])) > 0]\n", - " for j, (idx, dt) in enumerate(date.iteritems()):\n", - " dt1, dt2 = dt.split(\" - \")\n", - " year -= changes[j]\n", - " # check for ones that haven't polled in a year - soft check\n", - " # could be wrong for some...\n", - " if year == 2012 and (int(dt1.split(\"/\")[0]) > today.month and \n", - " int(dt1.split(\"/\")[1]) > today.day):\n", - " year -= 1\n", - " dt1 += \"/\" + str(year)\n", - " dt2 += \"/\" + str(year)\n", - " state_data2012.set_value(idx, \"start_date\", dt1)\n", - " state_data2012.set_value(idx, \"end_date\", dt2)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 34 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "national_data2012[\"start_date\"] = \"\"\n", - "national_data2012[\"end_date\"] = \"\"\n", - "dates2012 = national_data2012.groupby([\"Pollster\"])[\"Date\"]\n", - "for _, date in dates2012:\n", - " year = 2012\n", - " # checked by hand, none straddle years\n", - " changes = np.r_[False, np.diff(map(int, [i[0].split('/')[0] for \n", - " i in date.str.split(' - ')])) > 0]\n", - " for j, (idx, dt) in enumerate(date.iteritems()):\n", - " dt1, dt2 = dt.split(\" - \")\n", - " year -= changes[j]\n", - " dt1 += \"/\" + str(year)\n", - " dt2 += \"/\" + str(year)\n", - " national_data2012.set_value(idx, \"start_date\", dt1)\n", - " national_data2012.set_value(idx, \"end_date\", dt2)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 35 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.head(10)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 36, - "text": [ - " Pollster State Date MoE Obama (D) Romney (R) Sample Spread obama_spread start_date end_date\n", - "0 Rasmussen Reports WA 9/26 - 9/26 4.5 52 41 500 Obama +11 11 9/26/2012 9/26/2012\n", - "1 Gravis Marketing WA 9/21 - 9/22 4.6 56 39 625 Obama +17 17 9/21/2012 9/22/2012\n", - "2 Elway Poll WA 9/9 - 9/12 5.0 53 36 405 Obama +17 17 9/9/2012 9/12/2012\n", - "3 SurveyUSA WA 9/7 - 9/9 4.4 54 38 524 Obama +16 16 9/7/2012 9/9/2012\n", - "4 SurveyUSA WA 8/1 - 8/2 4.4 54 37 524 Obama +17 17 8/1/2012 8/2/2012\n", - "5 SurveyUSA WA 7/16 - 7/18 4.0 46 37 630 Obama +9 9 7/16/2012 7/18/2012\n", - "6 PPP (D) WA 6/14 - 6/17 3.0 54 41 1073 Obama +13 13 6/14/2012 6/17/2012\n", - "7 Elway Poll WA 6/13 - 6/16 5.0 49 41 408 Obama +8 8 6/13/2012 6/16/2012\n", - "8 Strategies 360 (D) WA 5/22 - 5/24 4.4 51 40 500 Obama +11 11 5/22/2012 5/24/2012\n", - "9 SurveyUSA WA 5/8 - 5/9 4.2 50 36 557 Obama +14 14 5/8/2012 5/9/2012" - ] - } - ], - "prompt_number": 36 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.start_date = state_data2012.start_date.apply(pandas.datetools.parse)\n", - "state_data2012.end_date = state_data2012.end_date.apply(pandas.datetools.parse)\n", - "\n", - "national_data2012.start_date = national_data2012.start_date.apply(pandas.datetools.parse)\n", - "national_data2012.end_date = national_data2012.end_date.apply(pandas.datetools.parse)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 37 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def median_date(row):\n", - " dates = pandas.date_range(row[\"start_date\"], row[\"end_date\"])\n", - " median_idx = int(np.median(range(len(dates)))+.5)\n", - " return dates[median_idx]\n", - " \n", - "state_data2012[\"poll_date\"] = [median_date(row) for i, row in state_data2012.iterrows()]\n", - "del state_data2012[\"Date\"]\n", - "del state_data2012[\"start_date\"]\n", - "del state_data2012[\"end_date\"]\n", - "\n", - "national_data2012[\"poll_date\"] = [median_date(row) for i, row in national_data2012.iterrows()]\n", - "del national_data2012[\"Date\"]\n", - "del national_data2012[\"start_date\"]\n", - "del national_data2012[\"end_date\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 38 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.head(5)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 39, - "text": [ - " Pollster State MoE Obama (D) Romney (R) Sample Spread obama_spread poll_date\n", - "0 Rasmussen Reports WA 4.5 52 41 500 Obama +11 11 2012-09-26 00:00:00\n", - "1 Gravis Marketing WA 4.6 56 39 625 Obama +17 17 2012-09-22 00:00:00\n", - "2 Elway Poll WA 5.0 53 36 405 Obama +17 17 2012-09-11 00:00:00\n", - "3 SurveyUSA WA 4.4 54 38 524 Obama +16 16 2012-09-08 00:00:00\n", - "4 SurveyUSA WA 4.4 54 37 524 Obama +17 17 2012-08-02 00:00:00" - ] - } - ], - "prompt_number": 39 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "pollsters = state_data2012.Pollster.unique()\n", - "pollsters.sort()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 40 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "len(pollsters)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 41, - "text": [ - "120" - ] - } - ], - "prompt_number": 41 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "print pandas.Series(pollsters)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "0 AFP/Magellan (R)\n", - "1 AIF/McLaughlin (R)\n", - "2 ARG\n", - "3 Albuquerque Journal*\n", - "4 Arizona State\n", - "5 Baltimore Sun\n", - "6 Baydoun/Foster (D)\n", - "7 Behavior Research Center\n", - "8 Bloomberg News\n", - "9 Boston Globe\n", - "10 CBS/NYT/Quinnipiac\n", - "11 CNN/Opinion Research\n", - "12 CNN/Time\n", - "13 CNU/Times-Dispatch\n", - "14 Caddell/McLaughlin/SA...\n", - "15 Castleton State College\n", - "16 Chicago Tribune\n", - "17 Civitas (R)\n", - "18 Clarus Research\n", - "19 Columbus Dispatch*\n", - "20 Courier-Journal/Surve...\n", - "21 Critical Insights\n", - "22 Daily Kos/PPP (D)\n", - "23 Dartmouth\n", - "24 Denver Post/SurveyUSA\n", - "25 Des Moines Register\n", - "26 Deseret News\n", - "27 Deseret News/KSL\n", - "28 Detroit News\n", - "29 EPIC-MRA\n", - "30 Elon Univ./Charlotte ...\n", - "31 Elway Poll\n", - "32 FOX Chicago/WAA\n", - "33 FOX News\n", - "34 Fairleigh Dickinson\n", - "35 Field\n", - "36 Florida Times-Union/I...\n", - "37 Franklin & Marshall\n", - "38 Glengariff Group (R)\n", - "39 Gonzales Research\n", - "40 Gravis Marketing\n", - "41 Gravis Marketing*\n", - "42 Hartford Courant/UConn\n", - "43 High Point\n", - "44 High Point/SurveyUSA\n", - "45 HighGround/Moore (R)*\n", - "46 Howey/DePauw\n", - "47 Inside MI Politcs/MRG\n", - "48 InsiderAdvantage\n", - "49 KSTP/SurveyUSA\n", - "50 Keating (D)\n", - "51 LA Times/USC\n", - "52 LVRJ/SurveyUSA\n", - "53 Landmark/Rosetta Stone\n", - "54 Las Vegas Review-Journal\n", - "55 MPRC (D)\n", - "56 MPRC (D)*\n", - "57 MRG\n", - "58 Magellan (R)\n", - "59 Magellan Strategies (R)\n", - "60 Marist\n", - "61 Marquette University\n", - "62 Mason-Dixon\n", - "63 Mason-Dixon*\n", - "64 Mass Insight/Opinion ...\n", - "65 Mercyhurst University\n", - "66 Miami Herald/Mason-Dixon\n", - "67 Middle Tn. State U.\n", - "68 Mitchell Research\n", - "69 Monmouth University\n", - "70 Morning Call\n", - "71 NBC News/Marist\n", - "72 NBC/WSJ/Marist\n", - "73 Ohio Newspapers/Univ ...\n", - "74 Ohio Poll/Univ of Cin.\n", - "75 Omaha World-Herald\n", - "76 PPIC\n", - "77 PPP (D)\n", - "78 Philadelphia Inquirer\n", - "79 Post-Dispatch/Mason-D...\n", - "80 Post-Dispatch/Mason-D...\n", - "81 Project New America/K...\n", - "82 Project New America/M...\n", - "83 Project New America/P...\n", - "84 Purple Strategies\n", - "85 Quinnipiac\n", - "86 Rasmussen Reports\n", - "87 Retail Assoc. of Neva...\n", - "88 Roanoke College\n", - "89 Rutgers-Eagleton\n", - "90 Siena\n", - "91 Sooner Poll\n", - "92 St. Cloud State U.\n", - "93 Star Tribune/Mason-Di...\n", - "94 Strategies 360 (D)\n", - "95 Suffolk University\n", - "96 Suffolk/7News\n", - "97 Suffolk/WSVN\n", - "98 Suffolk/WWBT\n", - "99 Sunshine State News/VSS\n", - "100 SurveyUSA\n", - "101 SurveyUSA/Civitas (R)\n", - "102 Talk Business Poll\n", - "103 Tennessean/Vanderbilt\n", - "104 The Simon Poll/SIU\n", - "105 The Washington Poll\n", - "106 Tribune-Review/Susque...\n", - "107 UMass/Boston Herald\n", - "108 Virginian-Pilot/ODU\n", - "109 Voter/Consumer Res/TI...\n", - "110 WBUR/MassINC\n", - "111 WMUR/UNH\n", - "112 WPA\n", - "113 WPR/St. Norbert\n", - "114 WPRI\n", - "115 WPRI/Fleming\n", - "116 Washington Post\n", - "117 WeAskAmerica\n", - "118 WeAskAmerica*\n", - "119 Western NE University\n", - "Length: 120\n" - ] - } - ], - "prompt_number": 42 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "538 Pollster Ratings" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "weights = pandas.read_table(\"/home/skipper/school/seaboldgit/talks/pydata/data/pollster_weights.csv\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 43 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "weights" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 44, - "text": [ - " Pollster Weight PIE\n", - "0 ABC / Washington Post 0.95 1.41\n", - "1 American Research Group 0.65 1.76\n", - "2 CBS / New York Times 0.66 1.84\n", - "3 Chicago Trib. / Marke... 1.16 1.13\n", - "4 CNN / Opinion Research 0.77 1.59\n", - "5 Columbus Dispatch (OH) 0.50 6.76\n", - "6 EPIC-MRA 0.75 1.65\n", - "7 Fairleigh-Dickinson (NJ) 0.71 1.72\n", - "8 Field Poll (CA) 1.33 0.88\n", - "9 Fox / Opinion Dynamics 0.79 1.60\n", - "10 Franklin Pierce (NH) 0.74 1.60\n", - "11 Insider Advantage 0.95 1.29\n", - "12 Keystone (PA) 0.64 1.55\n", - "13 LA Times / Bloomberg 0.83 1.44\n", - "14 Marist (NY) 0.69 1.73\n", - "15 Mason-Dixon 1.10 1.15\n", - "16 Mitchell 0.96 1.43\n", - "17 Ohio Poll 1.24 1.05\n", - "18 Public Opinion Strate... 0.63 1.81\n", - "19 Public Policy Polling... 1.05 1.60\n", - "20 Quinnipiac 0.95 1.34\n", - "21 Rasmussen 1.30 0.88\n", - "22 Research 2000 1.01 1.20\n", - "23 Selzer 1.47 0.92\n", - "24 Star Tribune (MN) 0.81 2.01\n", - "25 Strategic Vision 0.95 1.45\n", - "26 Suffolk (NH/MA) 0.77 1.37\n", - "27 SurveyUSA 1.91 0.72\n", - "28 Univ. New Hampshire 1.08 1.26\n", - "29 USA Today / Gallup 0.63 2.01\n", - "30 Zogby 0.64 1.72\n", - "31 Zogby Interactive 0.43 4.74" - ] - } - ], - "prompt_number": 44 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "weights.mean()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 45, - "text": [ - "Weight 0.908\n", - "PIE 1.707" - ] - } - ], - "prompt_number": 45 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Clean up the pollster names a bit so we can merge with the weights." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import pickle\n", - "pollster_map = pickle.load(open(\"/home/skipper/school/seaboldgit/talks/pydata/data/pollster_map.pkl\", \"rb\"))" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 46 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.Pollster.replace(pollster_map, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 47 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "national_data2012.Pollster.replace(pollster_map, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 48 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Inner merge the data with the weights" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012 = state_data2012.merge(weights, how=\"inner\", on=\"Pollster\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 49 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.head(5)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 50, - "text": [ - " Pollster State MoE Obama (D) Romney (R) Sample Spread obama_spread poll_date Weight PIE\n", - "0 American Research Group FL 4.0 50 45 600 Obama +5 5 2012-09-21 00:00:00 0.65 1.76\n", - "1 American Research Group NH 4.0 50 45 600 Obama +5 5 2012-09-26 00:00:00 0.65 1.76\n", - "2 American Research Group NH 4.5 48 47 463 Obama +1 1 2012-09-16 00:00:00 0.65 1.76\n", - "3 American Research Group NH 4.2 49 46 417 Obama +3 3 2012-06-23 00:00:00 0.65 1.76\n", - "4 American Research Group NH 4.2 48 41 557 Obama +7 7 2012-03-17 00:00:00 0.65 1.76" - ] - } - ], - "prompt_number": 50 - }, - { - "cell_type": "heading", - "level": 4, - "metadata": {}, - "source": [ - "First, we average each pollster for each state." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The first adjustment is an exponential decay for recency of the poll. Based on research in prior elections, a weight with a half-life of 30 days since the median date the poll has been in the field is assigned to each poll." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def exp_decay(days):\n", - " # defensive coding, accepts timedeltas\n", - " days = getattr(days, \"days\", days)\n", - " return .5 ** (days/30.)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 51 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "fig, ax = plt.subplots(figsize=(12,8), subplot_kw={\"xlabel\" : \"Days\",\n", - " \"ylabel\" : \"Weight\"})\n", - "days = np.arange(0, 45)\n", - "ax.plot(days, exp_decay(days));\n", - "ax.vlines(30, 0, .99, color='r', linewidth=4)\n", - "ax.set_ylim(0,1)\n", - "ax.set_xlim(0, 45);" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "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\nAAAAIAH+A7iJhoHYvnKbAAAAAElFTkSuQmCC\n" - } - ], - "prompt_number": 52 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The second adjustment is for the sample size of the poll. Polls with a higher sample size receive a higher weight." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Binomial sampling error = +/- $50 * \\frac{1}{\\sqrt{nobs}}$ where the 50 depends on the underlying probability or population preferences, in this case assumed to be 50:50 (another way of calculating Margin of Error)" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def average_error(nobs, p=50.):\n", - " return p*nobs**-.5" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 53 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The thinking here is that having 5 polls of 1200 is a lot like having one poll of 6000. However, we downweight older polls by only including the marginal effective sample size. Where the effective sample size is the size of the methodologically perfect poll for which we would be indifferent between it and the one we have with our current total error. Total error is determined as $TE = \\text{Average Error} + \\text{Long Run Pollster Induced Error}$. See [here](http://www.fivethirtyeight.com/2008/04/pollster-ratings-v30.html) for the detailed calculations of Pollster Induced Error." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def effective_sample(total_error, p=50.):\n", - " return p**2 * (total_error**-2.)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 54 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_pollsters = state_data2012.groupby([\"State\", \"Pollster\"])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 55 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ppp_az = state_pollsters.get_group((\"AZ\", \"Public Policy Polling (PPP)\"))" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 56 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "var_idx = [\"Pollster\", \"State\", \"Obama (D)\", \"Romney (R)\", \"Sample\", \"poll_date\"]\n", - "ppp_az[var_idx]" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 57, - "text": [ - " Pollster State Obama (D) Romney (R) Sample poll_date\n", - "198 Public Policy Polling... AZ 44 53 993 2012-09-08 00:00:00\n", - "199 Public Policy Polling... AZ 41 52 833 2012-07-24 00:00:00\n", - "200 Public Policy Polling... AZ 43 50 500 2012-05-19 00:00:00\n", - "201 Public Policy Polling... AZ 47 47 743 2012-02-18 00:00:00\n", - "202 Public Policy Polling... AZ 42 49 500 2011-11-19 00:00:00\n", - "203 Public Policy Polling... AZ 44 48 623 2011-04-30 00:00:00\n", - "204 Public Policy Polling... AZ 43 49 599 2011-01-29 00:00:00\n", - "205 Public Policy Polling... AZ 43 50 617 2010-09-20 00:00:00" - ] - } - ], - "prompt_number": 57 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ppp_az.sort(\"poll_date\", ascending=False, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 58 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ppp_az[\"cumulative\"] = ppp_az[\"Sample\"].cumsum()\n", - "ppp_az[\"average_error\"] = average_error(ppp_az[\"cumulative\"])\n", - "ppp_az[\"total_error\"] = ppp_az[\"PIE\"] + ppp_az[\"average_error\"]\n", - "ppp_az[var_idx + [\"cumulative\"]]" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 59, - "text": [ - " Pollster State Obama (D) Romney (R) Sample poll_date cumulative\n", - "198 Public Policy Polling... AZ 44 53 993 2012-09-08 00:00:00 993\n", - "199 Public Policy Polling... AZ 41 52 833 2012-07-24 00:00:00 1826\n", - "200 Public Policy Polling... AZ 43 50 500 2012-05-19 00:00:00 2326\n", - "201 Public Policy Polling... AZ 47 47 743 2012-02-18 00:00:00 3069\n", - "202 Public Policy Polling... AZ 42 49 500 2011-11-19 00:00:00 3569\n", - "203 Public Policy Polling... AZ 44 48 623 2011-04-30 00:00:00 4192\n", - "204 Public Policy Polling... AZ 43 49 599 2011-01-29 00:00:00 4791\n", - "205 Public Policy Polling... AZ 43 50 617 2010-09-20 00:00:00 5408" - ] - } - ], - "prompt_number": 59 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ppp_az[\"ESS\"] = effective_sample(ppp_az[\"total_error\"])\n", - "ppp_az[\"MESS\"] = ppp_az[\"ESS\"].diff()\n", - "# fill in first one\n", - "ppp_az[\"MESS\"].fillna(ppp_az[\"ESS\"].head(1).item(), inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 60 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ppp_az[[\"poll_date\", \"Sample\", \"cumulative\", \"ESS\", \"MESS\"]]" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 61, - "text": [ - " poll_date Sample cumulative ESS MESS\n", - "198 2012-09-08 00:00:00 993 993 246.182 246.182\n", - "199 2012-07-24 00:00:00 833 1826 325.801 79.618\n", - "200 2012-05-19 00:00:00 500 2326 359.591 33.791\n", - "201 2012-02-18 00:00:00 743 3069 399.185 39.594\n", - "202 2011-11-19 00:00:00 500 3569 420.968 21.783\n", - "203 2011-04-30 00:00:00 623 4192 444.241 23.273\n", - "204 2011-01-29 00:00:00 599 4791 463.531 19.291\n", - "205 2010-09-20 00:00:00 617 5408 480.955 17.424" - ] - } - ], - "prompt_number": 61 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's do it for every polling firm in every state." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def calculate_mess(group):\n", - " cumulative = group[\"Sample\"].cumsum()\n", - " ae = average_error(cumulative)\n", - " total_error = ae + group[\"PIE\"]\n", - " ess = effective_sample(total_error)\n", - " mess = ess.diff()\n", - " mess.fillna(ess.head(1).item(), inplace=True)\n", - " #from IPython.core.debugger import Pdb; Pdb().set_trace()\n", - " return pandas.concat((ess, mess), axis=1)\n", - "\n", - "#state_data2012[\"ESS\", \"MESS\"] \n", - "df = state_pollsters.apply(calculate_mess)\n", - "df.rename(columns={0 : \"ESS\", 1 : \"MESS\"}, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 62 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012 = state_data2012.join(df)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 63 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Give them the time weight" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "td = today - state_data2012[\"poll_date\"].head(1).item()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 64 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012[\"poll_date\"].head(1).item()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 65, - "text": [ - "" - ] - } - ], - "prompt_number": 65 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "td" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 66, - "text": [ - "datetime.timedelta(11)" - ] - } - ], - "prompt_number": 66 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012[\"time_weight\"] = (today - state_data2012[\"poll_date\"]).apply(exp_decay)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 67 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now aggregate all of these. Weight them based on the sample size but also based on the time_weight." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def weighted_mean(group):\n", - " weights1 = group[\"time_weight\"]\n", - " weights2 = group[\"MESS\"]\n", - " return np.sum(weights1*weights2*group[\"obama_spread\"]/(weights1*weights2).sum())" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 68 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_pollsters = state_data2012.groupby([\"State\", \"Pollster\"])\n", - "state_polls = state_pollsters.apply(weighted_mean)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 69 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_polls" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 70, - "text": [ - "State Pollster \n", - "AZ Public Policy Polling (PPP) -9.168\n", - " Rasmussen -10.209\n", - "CA Field Poll (CA) 23.344\n", - " Public Policy Polling (PPP) 20.999\n", - " Rasmussen 22.000\n", - " SurveyUSA 22.123\n", - "CO American Research Group 2.000\n", - " Public Policy Polling (PPP) 5.470\n", - " Rasmussen -1.574\n", - "CT Public Policy Polling (PPP) 12.758\n", - " Quinnipiac 7.294\n", - " Rasmussen 8.000\n", - "FL American Research Group 5.000\n", - " Mason-Dixon -3.543\n", - " Public Policy Polling (PPP) 3.125\n", - " Quinnipiac 3.076\n", - " Rasmussen 0.883\n", - " Suffolk (NH/MA) -0.003\n", - " SurveyUSA 4.169\n", - "GA Insider Advantage -19.174\n", - " Mason-Dixon -17.000\n", - " Public Policy Polling (PPP) -3.000\n", - " SurveyUSA -7.984\n", - "HI Public Policy Polling (PPP) 27.000\n", - "IA American Research Group 7.000\n", - " Mason-Dixon -3.000\n", - " Public Policy Polling (PPP) 5.879\n", - " Rasmussen -2.749\n", - "IL Chicago Trib. / MarketShares 21.000\n", - "IN Rasmussen -16.000\n", - "KS SurveyUSA -15.875\n", - "MA Public Policy Polling (PPP) 17.580\n", - " Rasmussen 15.107\n", - "MD Public Policy Polling (PPP) 23.000\n", - "ME Public Policy Polling (PPP) 16.038\n", - " Rasmussen 12.000\n", - "MI CNN / Opinion Research 8.000\n", - " EPIC-MRA 7.430\n", - " Mitchell 0.897\n", - " Public Policy Polling (PPP) 7.694\n", - " Rasmussen 11.072\n", - " SurveyUSA 11.000\n", - "MN Public Policy Polling (PPP) 7.335\n", - "MO Public Policy Polling (PPP) -11.225\n", - " Rasmussen -2.486\n", - " SurveyUSA -1.000\n", - "MS Public Policy Polling (PPP) -17.973\n", - "MT Mason-Dixon -9.000\n", - " Public Policy Polling (PPP) -5.003\n", - " Rasmussen -15.641\n", - "NC American Research Group -4.000\n", - " Public Policy Polling (PPP) 0.261\n", - " Rasmussen -5.676\n", - " SurveyUSA 1.987\n", - "ND Mason-Dixon -13.000\n", - " Rasmussen -15.000\n", - "NE Public Policy Polling (PPP) -12.005\n", - " Rasmussen -14.308\n", - "NH American Research Group 4.150\n", - " LA Times / Bloomberg -10.000\n", - " Mason-Dixon -11.000\n", - " Public Policy Polling (PPP) 6.273\n", - " Rasmussen -2.439\n", - "NJ Fairleigh-Dickinson (NJ) 13.859\n", - " Public Policy Polling (PPP) 14.006\n", - " Quinnipiac 7.504\n", - " Rasmussen 6.000\n", - " SurveyUSA 14.000\n", - "NM Public Policy Polling (PPP) 10.621\n", - " Rasmussen 11.651\n", - "NV American Research Group 7.000\n", - " CNN / Opinion Research 3.000\n", - " Public Policy Polling (PPP) 7.345\n", - " Rasmussen 2.524\n", - "NY Marist (NY) 22.047\n", - " Quinnipiac 27.345\n", - " SurveyUSA 30.000\n", - "OH American Research Group 1.000\n", - " Columbus Dispatch (OH) 8.616\n", - " Ohio Poll 3.000\n", - " Public Policy Polling (PPP) 4.142\n", - " Quinnipiac 7.729\n", - " Rasmussen 0.866\n", - "OR Public Policy Polling (PPP) 9.130\n", - " SurveyUSA 8.676\n", - "PA Public Policy Polling (PPP) 6.160\n", - " Quinnipiac 6.047\n", - " Rasmussen 10.875\n", - " SurveyUSA 0.000\n", - "RI Public Policy Polling (PPP) 17.000\n", - "SC Public Policy Polling (PPP) -14.558\n", - "SD Public Policy Polling (PPP) -6.000\n", - "TN Public Policy Polling (PPP) -7.000\n", - "TX Public Policy Polling (PPP) -6.999\n", - "UT Mason-Dixon -51.000\n", - " Public Policy Polling (PPP) -32.000\n", - "VA American Research Group 2.000\n", - " Mason-Dixon 1.000\n", - " Public Policy Polling (PPP) 5.096\n", - " Quinnipiac 0.578\n", - " Rasmussen 0.892\n", - "VT Public Policy Polling (PPP) 20.000\n", - "WA Public Policy Polling (PPP) 13.051\n", - " Rasmussen 11.000\n", - " SurveyUSA 15.310\n", - "WI CNN / Opinion Research 4.000\n", - " Public Policy Polling (PPP) 5.393\n", - " Rasmussen 2.116\n", - "WV Public Policy Polling (PPP) -19.757\n", - "Length: 109" - ] - } - ], - "prompt_number": 70 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "2004 and 2008 Polls" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004 = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/2004-pres-polls.csv\")\n", - "state_data2004" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 71, - "text": [ - "\n", - "Int64Index: 879 entries, 0 to 878\n", - "Data columns:\n", - "State 879 non-null values\n", - "Kerry 879 non-null values\n", - "Bush 879 non-null values\n", - "Date 879 non-null values\n", - "Pollster 879 non-null values\n", - "dtypes: int64(2), object(3)" - ] - } - ], - "prompt_number": 71 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004.head(5)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 72, - "text": [ - " State Kerry Bush Date Pollster\n", - "0 AL 39 57 Oct 25 SurveyUSA\n", - "1 AL 32 56 Oct 12 Capital Survey\n", - "2 AL 34 62 Oct 01 SurveyUSA\n", - "3 AL 40 54 Sep 14 ARG\n", - "4 AL 42 53 Sep 06 Rasmussen" - ] - } - ], - "prompt_number": 72 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2008 = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/2008-pres-polls.csv\")\n", - "state_data2008" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 73, - "text": [ - "\n", - "Int64Index: 1189 entries, 0 to 1188\n", - "Data columns:\n", - "State 1189 non-null values\n", - "Obama 1189 non-null values\n", - "McCain 1189 non-null values\n", - "Start 1189 non-null values\n", - "End 1189 non-null values\n", - "Pollster 1189 non-null values\n", - "dtypes: int64(2), object(4)" - ] - } - ], - "prompt_number": 73 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2008.head(5)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 74, - "text": [ - " State Obama McCain Start End Pollster\n", - "0 AL 36 61 Oct 27 Oct 28 SurveyUSA\n", - "1 AL 34 54 Oct 15 Oct 16 Capital Survey\n", - "2 AL 35 62 Oct 08 Oct 09 SurveyUSA\n", - "3 AL 35 55 Oct 06 Oct 07 Capital Survey\n", - "4 AL 39 60 Sep 22 Sep 22 Rasmussen" - ] - } - ], - "prompt_number": 74 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2008.End + \" 2008\"" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 75, - "text": [ - "0 Oct 28 2008\n", - "1 Oct 16 2008\n", - "2 Oct 09 2008\n", - "3 Oct 07 2008\n", - "4 Sep 22 2008\n", - "5 Sep 17 2008\n", - "6 Sep 16 2008\n", - "7 Sep 15 2008\n", - "8 Sep 09 2008\n", - "9 Aug 04 2008\n", - "10 Jul 31 2008\n", - "11 Jun 26 2008\n", - "12 Jun 26 2008\n", - "13 Jun 02 2008\n", - "14 May 27 2008\n", - "...\n", - "1174 May 05 2008\n", - "1175 Apr 24 2008\n", - "1176 Apr 13 2008\n", - "1177 Apr 05 2008\n", - "1178 Mar 26 2008\n", - "1179 Mar 16 2008\n", - "1180 Feb 28 2008\n", - "1181 Feb 21 2008\n", - "1182 Feb 17 2008\n", - "1183 Oct 19 2008\n", - "1184 Oct 14 2008\n", - "1185 Sep 11 2008\n", - "1186 Sep 10 2008\n", - "1187 Aug 15 2008\n", - "1188 Feb 28 2008\n", - "Name: End, Length: 1189" - ] - } - ], - "prompt_number": 75 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "(state_data2008.End + \" 2008\").apply(pandas.datetools.parse)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 76, - "text": [ - "0 2008-10-28 00:00:00\n", - "1 2008-10-16 00:00:00\n", - "2 2008-10-09 00:00:00\n", - "3 2008-10-07 00:00:00\n", - "4 2008-09-22 00:00:00\n", - "5 2008-09-17 00:00:00\n", - "6 2008-09-16 00:00:00\n", - "7 2008-09-15 00:00:00\n", - "8 2008-09-09 00:00:00\n", - "9 2008-08-04 00:00:00\n", - "10 2008-07-31 00:00:00\n", - "11 2008-06-26 00:00:00\n", - "12 2008-06-26 00:00:00\n", - "13 2008-06-02 00:00:00\n", - "14 2008-05-27 00:00:00\n", - "...\n", - "1174 2008-05-05 00:00:00\n", - "1175 2008-04-24 00:00:00\n", - "1176 2008-04-13 00:00:00\n", - "1177 2008-04-05 00:00:00\n", - "1178 2008-03-26 00:00:00\n", - "1179 2008-03-16 00:00:00\n", - "1180 2008-02-28 00:00:00\n", - "1181 2008-02-21 00:00:00\n", - "1182 2008-02-17 00:00:00\n", - "1183 2008-10-19 00:00:00\n", - "1184 2008-10-14 00:00:00\n", - "1185 2008-09-11 00:00:00\n", - "1186 2008-09-10 00:00:00\n", - "1187 2008-08-15 00:00:00\n", - "1188 2008-02-28 00:00:00\n", - "Name: End, Length: 1189" - ] - } - ], - "prompt_number": 76 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Need to clean some of the dates in this data. Luckily, pandas makes this easy to do." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004.Date = state_data2004.Date.str.replace(\"Nov 00\", \"Nov 01\")\n", - "state_data2004.Date = state_data2004.Date.str.replace(\"Oct 00\", \"Oct 01\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 77 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2008[\"poll_date\"] = (state_data2008.End + \" 2008\").apply(pandas.datetools.parse)\n", - "state_data2004[\"poll_date\"] = (state_data2004.Date + \" 2004\").apply(pandas.datetools.parse)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 78 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "del state_data2008[\"End\"]\n", - "del state_data2008[\"Start\"]\n", - "del state_data2004[\"Date\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 79 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2008" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 80, - "text": [ - "\n", - "Int64Index: 1189 entries, 0 to 1188\n", - "Data columns:\n", - "State 1189 non-null values\n", - "Obama 1189 non-null values\n", - "McCain 1189 non-null values\n", - "Pollster 1189 non-null values\n", - "poll_date 1189 non-null values\n", - "dtypes: int64(2), object(3)" - ] - } - ], - "prompt_number": 80 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 81, - "text": [ - "\n", - "Int64Index: 879 entries, 0 to 878\n", - "Data columns:\n", - "State 879 non-null values\n", - "Kerry 879 non-null values\n", - "Bush 879 non-null values\n", - "Pollster 879 non-null values\n", - "poll_date 879 non-null values\n", - "dtypes: int64(2), object(3)" - ] - } - ], - "prompt_number": 81 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_groups = state_data2008.groupby(\"State\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 82 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_groups.aggregate(dict(Obama=np.mean, McCain=np.mean))" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 83, - "text": [ - " McCain Obama\n", - "State \n", - "AK 52.000 39.429\n", - "AL 56.826 34.348\n", - "AR 51.000 37.250\n", - "AZ 49.333 39.190\n", - "CA 37.633 53.267\n", - "CO 44.467 48.289\n", - "CT 36.923 52.692\n", - "DC 13.000 82.000\n", - "DE 38.625 55.500\n", - "FL 46.394 46.121\n", - "GA 51.346 43.154\n", - "HI 30.000 64.000\n", - "IA 41.407 50.037\n", - "ID 60.000 30.500\n", - "IL 36.900 55.600\n", - "IN 47.500 44.962\n", - "KS 53.562 37.750\n", - "KY 54.842 37.526\n", - "LA 52.167 39.083\n", - "MA 38.800 52.200\n", - "MD 38.667 53.833\n", - "ME 38.188 50.562\n", - "MI 42.053 47.368\n", - "MN 41.739 50.261\n", - "MO 47.429 45.571\n", - "MS 51.200 40.500\n", - "MT 48.214 43.857\n", - "NC 47.523 46.091\n", - "ND 45.571 42.714\n", - "NE 51.714 37.143\n", - "NH 42.757 48.919\n", - "NJ 39.767 49.767\n", - "NM 43.593 48.741\n", - "NV 44.844 46.938\n", - "NY 36.865 52.432\n", - "OH 44.975 46.658\n", - "OK 61.700 32.000\n", - "OR 40.852 50.333\n", - "PA 42.080 48.893\n", - "RI 32.000 53.000\n", - "SC 53.300 41.000\n", - "SD 50.375 39.875\n", - "TN 54.364 36.364\n", - "TX 50.200 40.400\n", - "UT 58.600 30.000\n", - "VA 45.817 47.933\n", - "VT 34.750 59.750\n", - "WA 40.424 51.515\n", - "WI 41.921 49.684\n", - "WV 48.692 42.538\n", - "WY 59.333 32.667" - ] - } - ], - "prompt_number": 83 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Means for the entire country (without weighting by population)" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_groups.aggregate(dict(Obama=np.mean, McCain=np.mean)).mean()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 84, - "text": [ - "McCain 45.338\n", - "Obama 46.082" - ] - } - ], - "prompt_number": 84 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004.Pollster.replace(pollster_map, inplace=True)\n", - "state_data2008.Pollster.replace(pollster_map, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 85 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004 = state_data2004.merge(weights, how=\"inner\", on=\"Pollster\")\n", - "state_data2008 = state_data2008.merge(weights, how=\"inner\", on=\"Pollster\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 86 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "len(state_data2004.Pollster.unique())" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 87, - "text": [ - "26" - ] - } - ], - "prompt_number": 87 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "len(state_data2008.Pollster.unique())" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 88, - "text": [ - "21" - ] - } - ], - "prompt_number": 88 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import datetime" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 89 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "date2004 = datetime.datetime(2004, 11, 2)\n", - "date2004" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 90, - "text": [ - "datetime.datetime(2004, 11, 2, 0, 0)" - ] - } - ], - "prompt_number": 90 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "(date2004 - state_data2004.poll_date) < datetime.timedelta(21)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 91, - "text": [ - "0 False\n", - "1 False\n", - "2 False\n", - "3 False\n", - "4 False\n", - "5 False\n", - "6 False\n", - "7 False\n", - "8 False\n", - "9 True\n", - "10 True\n", - "11 False\n", - "12 False\n", - "13 False\n", - "14 False\n", - "...\n", - "719 False\n", - "720 False\n", - "721 False\n", - "722 False\n", - "723 False\n", - "724 True\n", - "725 True\n", - "726 False\n", - "727 False\n", - "728 False\n", - "729 False\n", - "730 False\n", - "731 False\n", - "732 False\n", - "733 False\n", - "Name: poll_date, Length: 734" - ] - } - ], - "prompt_number": 91 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Restrict the samples to the 3 weeks leading up to the election" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004 = state_data2004.ix[(date2004 - state_data2004.poll_date) <= datetime.timedelta(21)]\n", - "state_data2004.reset_index(drop=True, inplace=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 92, - "text": [ - "\n", - "Int64Index: 213 entries, 0 to 212\n", - "Data columns:\n", - "State 213 non-null values\n", - "Kerry 213 non-null values\n", - "Bush 213 non-null values\n", - "Pollster 213 non-null values\n", - "poll_date 213 non-null values\n", - "Weight 213 non-null values\n", - "PIE 213 non-null values\n", - "dtypes: float64(2), int64(2), object(3)" - ] - } - ], - "prompt_number": 92 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "date2008 = datetime.datetime(2008, 11, 4)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 93 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2008 = state_data2008.ix[(date2008 - state_data2008.poll_date) <= datetime.timedelta(21)]\n", - "state_data2008.reset_index(drop=True, inplace=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 94, - "text": [ - "\n", - "Int64Index: 210 entries, 0 to 209\n", - "Data columns:\n", - "State 210 non-null values\n", - "Obama 210 non-null values\n", - "McCain 210 non-null values\n", - "Pollster 210 non-null values\n", - "poll_date 210 non-null values\n", - "Weight 210 non-null values\n", - "PIE 210 non-null values\n", - "dtypes: float64(2), int64(2), object(3)" - ] - } - ], - "prompt_number": 94 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2008" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 95, - "text": [ - "\n", - "Int64Index: 210 entries, 0 to 209\n", - "Data columns:\n", - "State 210 non-null values\n", - "Obama 210 non-null values\n", - "McCain 210 non-null values\n", - "Pollster 210 non-null values\n", - "poll_date 210 non-null values\n", - "Weight 210 non-null values\n", - "PIE 210 non-null values\n", - "dtypes: float64(2), int64(2), object(3)" - ] - } - ], - "prompt_number": 95 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004[\"time_weight\"] =(date2004 - state_data2004.poll_date).apply(exp_decay)\n", - "state_data2008[\"time_weight\"] =(date2008 - state_data2008.poll_date).apply(exp_decay)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 96 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004[[\"time_weight\", \"poll_date\"]].head(5)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 97, - "text": [ - " time_weight poll_date\n", - "0 0.955 2004-10-31 00:00:00\n", - "1 0.794 2004-10-23 00:00:00\n", - "2 0.831 2004-10-25 00:00:00\n", - "3 0.955 2004-10-31 00:00:00\n", - "4 0.891 2004-10-28 00:00:00" - ] - } - ], - "prompt_number": 97 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def max_date(x):\n", - " return x == x.max()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 98 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2004[\"newest_poll\"] = state_data2004.groupby((\"State\", \"Pollster\")).poll_date.transform(max_date)\n", - "state_data2008[\"newest_poll\"] = state_data2008.groupby((\"State\", \"Pollster\")).poll_date.transform(max_date)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 99 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Clustering States by Demographics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are notes on trend line adjustment, [here](http://www.fivethirtyeight.com/2008/06/we-know-more-than-we-think-big-change-2.html), [here](http://www.fivethirtyeight.com/2008/06/refinement-to-adjustment-part-i.html), [here](http://www.fivethirtyeight.com/2008/06/refinement-to-adjustment-part-ii.html), [here](http://www.fivethirtyeight.com/2008/06/trendline-now-calculated-from-daily.html), and [here](http://www.fivethirtyeight.com/2008/06/construction-season-over-technical.html). However, to the best of my knowledge, the similar state \"nearest neighbor\" clustering remains a black box." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Partican Voting Index data obtained from [Wikipedia](http://en.wikipedia.org/wiki/Cook_Partisan_Voting_Index)" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "pvi = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/partisan_voting.csv\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 100 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "pvi.set_index(\"State\", inplace=True);\n", - "pvi" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 101, - "text": [ - " PVI\n", - "State \n", - "Alabama R+13\n", - "Alaska R+13\n", - "Arizona R+6 \n", - "Arkansas R+9 \n", - "California D+7 \n", - "Colorado EVEN\n", - "Connecticut D+7 \n", - "Delaware D+7 \n", - "District of Columbia D+39\n", - "Florida R+2 \n", - "Georgia R+7 \n", - "Hawaii D+12\n", - "Idaho R+17\n", - "Illinois D+8 \n", - "Indiana R+6 \n", - "Iowa D+1 \n", - "Kansas R+12\n", - "Kentucky R+10\n", - "Louisiana R+10\n", - "Maine D+5 \n", - "Maryland D+9 \n", - "Massachusetts D+12\n", - "Michigan D+4 \n", - "Minnesota D+2 \n", - "Mississippi R+10\n", - "Missouri R+3 \n", - "Montana R+7 \n", - "Nebraska R+13\n", - "Nevada D+1 \n", - "New Hampshire D+2 \n", - "New Jersey D+4 \n", - "New Mexico D+2 \n", - "New York D+10\n", - "North Carolina R+4 \n", - "North Dakota R+10\n", - "Ohio R+1 \n", - "Oklahoma R+17\n", - "Oregon D+4 \n", - "Pennsylvania D+2 \n", - "Rhode Island D+11\n", - "South Carolina R+8 \n", - "South Dakota R+9 \n", - "Tennessee R+9 \n", - "Texas R+10\n", - "Utah R+20\n", - "Vermont D+13\n", - "Virginia R+2 \n", - "Washington D+5 \n", - "West Virginia R+8 \n", - "Wisconsin D+2 \n", - "Wyoming R+20" - ] - } - ], - "prompt_number": 101 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "pvi.PVI = pvi.PVI.replace({\"EVEN\" : \"0\"})\n", - "pvi.PVI = pvi.PVI.str.replace(\"R\\+\", \"-\")\n", - "pvi.PVI = pvi.PVI.str.replace(\"D\\+\", \"\")\n", - "pvi.PVI = pvi.PVI.astype(float)\n", - "pvi.PVI" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 102, - "text": [ - "State\n", - "Alabama -13\n", - "Alaska -13\n", - "Arizona -6\n", - "Arkansas -9\n", - "California 7\n", - "Colorado 0\n", - "Connecticut 7\n", - "Delaware 7\n", - "District of Columbia 39\n", - "Florida -2\n", - "Georgia -7\n", - "Hawaii 12\n", - "Idaho -17\n", - "Illinois 8\n", - "Indiana -6\n", - "Iowa 1\n", - "Kansas -12\n", - "Kentucky -10\n", - "Louisiana -10\n", - "Maine 5\n", - "Maryland 9\n", - "Massachusetts 12\n", - "Michigan 4\n", - "Minnesota 2\n", - "Mississippi -10\n", - "Missouri -3\n", - "Montana -7\n", - "Nebraska -13\n", - "Nevada 1\n", - "New Hampshire 2\n", - "New Jersey 4\n", - "New Mexico 2\n", - "New York 10\n", - "North Carolina -4\n", - "North Dakota -10\n", - "Ohio -1\n", - "Oklahoma -17\n", - "Oregon 4\n", - "Pennsylvania 2\n", - "Rhode Island 11\n", - "South Carolina -8\n", - "South Dakota -9\n", - "Tennessee -9\n", - "Texas -10\n", - "Utah -20\n", - "Vermont 13\n", - "Virginia -2\n", - "Washington 5\n", - "West Virginia -8\n", - "Wisconsin 2\n", - "Wyoming -20\n", - "Name: PVI, Length: 51" - ] - } - ], - "prompt_number": 102 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Party affliation of electorate obtained from [Gallup](http://www.gallup.com/poll/156437/Heavily-Democratic-States-Concentrated-East.aspx#2)." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "party_affil = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/gallup_electorate.csv\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 103 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "party_affil.Democrat = party_affil.Democrat.str.replace(\"%\", \"\").astype(float)\n", - "party_affil.Republican = party_affil.Republican.str.replace(\"%\", \"\").astype(float)\n", - "party_affil.set_index(\"State\", inplace=True);\n", - "party_affil.rename(columns={\"Democrat Advantage\" : \"dem_adv\"}, inplace=True);\n", - "party_affil[\"no_party\"] = 100 - party_affil.Democrat - party_affil.Republican" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 104 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "party_affil" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 105, - "text": [ - " Democrat Republican dem_adv N no_party\n", - "State \n", - "District of Columbia 79.0 12.7 66.30 416 8.3\n", - "Rhode Island 52.5 26.5 26.00 623 21.0\n", - "Hawaii 54.3 28.7 25.60 466 17.0\n", - "New York 52.0 30.8 21.20 8674 17.2\n", - "Maryland 54.0 33.8 20.20 3571 12.2\n", - "Massachusetts 52.5 33.4 19.10 3583 14.1\n", - "Delaware 50.5 33.1 17.40 540 16.4\n", - "Connecticut 49.8 34.4 15.40 2020 15.8\n", - "Vermont 48.8 34.9 13.90 550 16.3\n", - "California 48.3 34.6 13.70 16197 17.1\n", - "Illinois 48.4 35.8 12.60 5888 15.8\n", - "New Jersey 47.4 35.9 11.50 4239 16.7\n", - "Michigan 47.7 36.6 11.10 5056 15.7\n", - "Minnesota 48.4 38.2 10.20 3873 13.4\n", - "Washington 47.5 37.7 9.80 5333 14.8\n", - "Oregon 47.2 39.1 8.10 3002 13.7\n", - "Pennsylvania 46.4 41.2 5.20 8443 12.4\n", - "Maine 43.8 39.4 4.40 1040 16.8\n", - "New Mexico 44.7 41.1 3.60 1555 14.2\n", - "Ohio 44.1 40.5 3.60 6426 15.4\n", - "West Virginia 45.3 41.9 3.40 1202 12.8\n", - "Wisconsin 45.0 42.2 2.80 4140 12.8\n", - "Iowa 43.2 41.4 1.80 2337 15.4\n", - "Florida 43.0 42.3 0.70 9965 14.7\n", - "Arkansas 41.5 40.8 0.70 2071 17.7\n", - "Kentucky 43.5 43.1 0.40 2898 13.4\n", - "North Carolina 43.4 43.2 0.20 6213 13.4\n", - "New Hampshire 42.3 43.8 -1.50 873 13.9\n", - "Virginia 41.2 44.2 -3.00 5313 14.6\n", - "Missouri 40.1 44.0 -3.90 3727 15.9\n", - "Georgia 40.3 44.3 -4.00 5110 15.4\n", - "Nevada 39.2 43.4 -4.20 1348 17.4\n", - "Louisiana 40.3 45.1 -4.80 2655 14.6\n", - "Colorado 39.9 45.1 -5.20 3671 15.0\n", - "Texas 38.3 44.1 -5.80 11325 17.6\n", - "South Dakota 41.5 47.5 -6.00 607 11.0\n", - "Indiana 39.0 45.7 -6.70 4197 15.3\n", - "Mississippi 40.1 47.1 -7.00 1763 12.8\n", - "Arizona 39.8 47.3 -7.50 4325 12.9\n", - "Tennessee 38.1 46.5 -8.40 4231 15.4\n", - "Alaska 35.9 44.3 -8.44 NaN 19.8\n", - "Oklahoma 38.6 48.0 -9.40 2583 13.4\n", - "South Carolina 36.9 48.8 -11.90 2858 14.3\n", - "North Dakota 35.8 49.0 -13.20 547 15.2\n", - "Alabama 36.0 49.6 -13.60 3197 14.4\n", - "Montana 35.9 49.6 -13.70 1137 14.5\n", - "Kansas 34.4 51.3 -16.90 1937 14.3\n", - "Nebraska 33.1 52.1 -19.00 1351 14.8\n", - "Wyoming 26.7 56.6 -29.90 600 16.7\n", - "Idaho 27.5 57.8 -30.30 1336 14.7\n", - "Utah 24.5 63.8 -39.30 2256 11.7" - ] - } - ], - "prompt_number": 105 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "census_data = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/census_demographics.csv\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 106 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def capitalize(s):\n", - " s = s.title()\n", - " s = s.replace(\"Of\", \"of\")\n", - " return s" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 107 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "census_data[\"State\"] = census_data.state.map(capitalize)\n", - "del census_data[\"state\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 108 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "census_data.set_index(\"State\", inplace=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 109, - "text": [ - " per_black per_hisp per_white educ_hs educ_coll average_income median_income pop_density vote_pop older_pop\n", - "State \n", - "Alabama 26.5 4.0 66.8 81.4 21.7 22984 42081 94.4 3001712.500 672383.600\n", - "Alaska 3.6 5.8 63.7 90.7 27.0 30726 66521 1.2 475548.444 58540.158\n", - "Arizona 4.5 30.1 57.4 85.0 26.3 25680 50448 56.3 3934880.535 920515.710\n", - "Arkansas 15.6 6.6 74.2 81.9 19.1 21274 39267 56.0 1798043.148 428944.934\n", - "California 6.6 38.1 39.7 80.7 30.1 29188 60883 239.1 24009747.944 4409953.704\n", - "Colorado 4.3 20.9 69.7 89.3 35.9 30151 56456 48.5 3310567.012 578197.948\n", - "Connecticut 11.1 13.8 70.9 88.4 35.2 36775 67740 738.1 2263008.088 515622.096\n", - "Delaware 21.9 8.4 65.1 87.0 27.7 29007 57599 460.8 568773.645 133348.845\n", - "District of Columbia 50.7 9.5 35.3 86.5 49.2 42078 58526 9856.5 442485.136 70451.544\n", - "Florida 16.5 22.9 57.5 85.3 25.9 26551 47661 350.6 11701330.788 3354127.392\n", - "Georgia 31.0 9.1 55.5 83.5 27.2 25134 49347 168.4 6242473.560 1079673.100\n", - "Hawaii 2.0 9.2 22.9 89.8 29.4 28882 66420 211.8 867505.110 202097.070\n", - "Idaho 0.8 11.5 83.6 88.2 24.3 22518 46423 19.0 954160.970 202878.080\n", - "Illinois 14.8 16.2 63.3 86.2 30.3 28782 55735 231.1 8133370.424 1634395.639\n", - "Indiana 9.4 6.2 81.3 86.2 22.4 24058 47697 181.0 4060042.406 860233.704\n", - "Iowa 3.1 5.2 88.4 89.9 24.5 25335 48872 54.5 1880257.726 456284.041\n", - "Kansas 6.1 10.8 77.8 89.2 29.3 25907 49424 34.9 1765811.370 381874.654\n", - "Kentucky 8.0 3.2 86.1 81.0 20.3 22515 41576 109.9 2757063.636 589863.060\n", - "Louisiana 32.4 4.4 60.1 81.0 20.9 23094 43445 104.9 2886721.516 571854.500\n", - "Maine 1.3 1.4 94.3 89.8 26.5 25385 46933 43.1 842071.192 216494.644\n", - "Maryland 30.0 8.4 54.4 87.8 35.7 34849 70647 594.8 3753418.116 728536.125\n", - "Massachusetts 7.8 9.9 76.4 88.7 38.3 33966 64509 839.4 4262135.792 922255.040\n", - "Michigan 14.3 4.5 76.4 88.0 25.0 25135 48432 174.8 6192369.249 1392542.367\n", - "Minnesota 5.4 4.9 82.8 91.3 31.4 29582 57243 66.6 3367262.430 700176.791\n", - "Mississippi 37.3 2.9 57.7 79.6 19.5 19977 37881 63.2 1840720.416 387206.560\n", - "Missouri 11.7 3.7 80.8 86.2 25.0 24724 46262 87.1 3744658.624 853517.696\n", - "Montana 0.5 3.1 87.5 91.0 27.9 23836 43872 6.8 623874.375 151726.248\n", - "Nebraska 4.7 9.5 81.8 90.0 27.7 25229 49342 23.8 1131381.574 250599.176\n", - "Nevada 8.6 27.1 53.6 84.3 21.8 27589 55726 24.6 1718416.182 340415.250\n", - "New Hampshire 1.3 2.9 92.2 90.9 32.9 31422 63277 147.0 854189.712 184547.160\n", - "New Jersey 14.6 18.1 58.9 87.3 34.6 34858 69811 1195.5 5566148.805 1208498.235\n", - "New Mexico 2.5 46.7 40.2 82.7 25.5 22966 43820 17.0 1280567.760 283182.464\n", - "New York 17.5 18.0 58.0 84.4 32.1 30948 55603 411.2 12516121.671 2666731.989\n", - "North Carolina 22.0 8.6 65.0 83.6 26.1 24745 45570 196.1 6093189.031 1274644.932\n", - "North Dakota 1.3 2.2 88.6 89.4 26.3 25803 46781 9.7 434296.820 98486.208\n", - "Ohio 12.4 3.2 81.0 87.4 24.1 25113 47358 282.3 7204049.424 1650927.993\n", - "Oklahoma 7.7 9.2 68.2 85.4 22.6 23094 42979 54.7 2335568.928 519436.596\n", - "Oregon 2.0 12.0 78.1 88.6 28.6 26171 49260 39.9 2454758.606 553675.837\n", - "Pennsylvania 11.3 5.9 79.2 87.4 26.4 27049 50398 283.9 7989789.522 1987890.216\n", - "Rhode Island 7.2 12.8 76.5 83.7 30.3 28707 54902 1018.1 677038.488 154541.394\n", - "South Carolina 28.1 5.3 64.0 83.0 24.0 23443 43939 153.9 2938556.440 659771.430\n", - "South Dakota 1.4 2.9 84.4 89.3 25.3 24110 46369 10.7 501865.938 118667.808\n", - "Tennessee 16.9 4.7 75.4 82.5 22.7 23722 43314 153.9 4034112.390 877259.361\n", - "Texas 12.2 38.1 44.8 80.0 25.8 24870 49646 96.3 16021000.944 2695841.505\n", - "Utah 1.3 13.2 80.1 90.6 29.4 23139 56330 33.6 1679064.312 259184.424\n", - "Vermont 1.1 1.6 94.2 90.6 33.3 27478 51841 67.9 406553.719 93964.650\n", - "Virginia 19.8 8.2 64.5 86.1 33.8 32145 61406 202.6 5230406.184 1012075.500\n", - "Washington 3.8 11.6 72.1 89.6 31.0 29733 57244 101.2 4378054.358 867414.826\n", - "West Virginia 3.5 1.3 93.0 81.9 17.3 21232 38380 77.1 1170734.684 300568.968\n", - "Wisconsin 6.5 6.1 83.1 89.4 25.8 26624 51598 105.0 3592701.443 793935.613\n", - "Wyoming 1.1 9.1 85.5 91.3 23.6 27860 53802 5.8 361348.488 72156.066" - ] - } - ], - "prompt_number": 109 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#loadpy https://raw.github.com/gist/3912533/d958b515f602f6e73f7b16d8bc412bc8d1f433d9/state_abbrevs.py;" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 110 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "states_abbrev_dict = {\n", - " 'AK': 'Alaska',\n", - " 'AL': 'Alabama',\n", - " 'AR': 'Arkansas',\n", - " 'AS': 'American Samoa',\n", - " 'AZ': 'Arizona',\n", - " 'CA': 'California',\n", - " 'CO': 'Colorado',\n", - " 'CT': 'Connecticut',\n", - " 'DC': 'District of Columbia',\n", - " 'DE': 'Delaware',\n", - " 'FL': 'Florida',\n", - " 'GA': 'Georgia',\n", - " 'GU': 'Guam',\n", - " 'HI': 'Hawaii',\n", - " 'IA': 'Iowa',\n", - " 'ID': 'Idaho',\n", - " 'IL': 'Illinois',\n", - " 'IN': 'Indiana',\n", - " 'KS': 'Kansas',\n", - " 'KY': 'Kentucky',\n", - " 'LA': 'Louisiana',\n", - " 'MA': 'Massachusetts',\n", - " 'MD': 'Maryland',\n", - " 'ME': 'Maine',\n", - " 'MI': 'Michigan',\n", - " 'MN': 'Minnesota',\n", - " 'MO': 'Missouri',\n", - " 'MP': 'Northern Mariana Islands',\n", - " 'MS': 'Mississippi',\n", - " 'MT': 'Montana',\n", - " 'NA': 'National',\n", - " 'NC': 'North Carolina',\n", - " 'ND': 'North Dakota',\n", - " 'NE': 'Nebraska',\n", - " 'NH': 'New Hampshire',\n", - " 'NJ': 'New Jersey',\n", - " 'NM': 'New Mexico',\n", - " 'NV': 'Nevada',\n", - " 'NY': 'New York',\n", - " 'OH': 'Ohio',\n", - " 'OK': 'Oklahoma',\n", - " 'OR': 'Oregon',\n", - " 'PA': 'Pennsylvania',\n", - " 'PR': 'Puerto Rico',\n", - " 'RI': 'Rhode Island',\n", - " 'SC': 'South Carolina',\n", - " 'SD': 'South Dakota',\n", - " 'TN': 'Tennessee',\n", - " 'TX': 'Texas',\n", - " 'UT': 'Utah',\n", - " 'VA': 'Virginia',\n", - " 'VI': 'Virgin Islands',\n", - " 'VT': 'Vermont',\n", - " 'WA': 'Washington',\n", - " 'WI': 'Wisconsin',\n", - " 'WV': 'West Virginia',\n", - " 'WY': 'Wyoming'\n", - "}" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 111 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Campaign Contributions from FEC." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "obama_give = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/obama_indiv_state.csv\", \n", - " header=None, names=[\"State\", \"obama_give\"])\n", - "romney_give = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/romney_indiv_state.csv\",\n", - " header=None, names=[\"State\", \"romney_give\"])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 112 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "obama_give.State.replace(states_abbrev_dict, inplace=True);\n", - "romney_give.State.replace(states_abbrev_dict, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 113 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "obama_give.set_index(\"State\", inplace=True)\n", - "romney_give.set_index(\"State\", inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 114 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "demo_data = census_data.join(party_affil[[\"dem_adv\", \"no_party\"]]).join(pvi)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 115 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "demo_data = demo_data.join(obama_give).join(romney_give)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 116 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "giving = demo_data[[\"obama_give\", \"romney_give\"]].div(demo_data[[\"vote_pop\", \"older_pop\"]].sum(1), axis=0)\n", - "giving" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 117, - "text": [ - " obama_give romney_give\n", - "State \n", - "Alabama 0.245 0.366\n", - "Alaska 1.112 0.499\n", - "Arizona 0.569 0.673\n", - "Arkansas 0.247 0.217\n", - "California 1.128 0.618\n", - "Colorado 1.056 0.797\n", - "Connecticut 1.207 1.545\n", - "Delaware 0.767 0.359\n", - "District of Columbia 326.864 2.535\n", - "Florida 0.503 0.875\n", - "Georgia 0.468 0.526\n", - "Hawaii 1.007 0.225\n", - "Idaho 0.366 0.990\n", - "Illinois 0.934 0.590\n", - "Indiana 0.341 0.257\n", - "Iowa 0.487 0.286\n", - "Kansas 0.392 0.470\n", - "Kentucky 0.289 0.393\n", - "Louisiana 0.260 0.529\n", - "Maine 0.800 0.246\n", - "Maryland 1.518 0.594\n", - "Massachusetts 1.735 1.105\n", - "Michigan 0.512 0.501\n", - "Minnesota 0.660 0.232\n", - "Mississippi 0.189 0.327\n", - "Missouri 0.413 0.482\n", - "Montana 0.764 0.534\n", - "Nebraska 0.336 0.351\n", - "Nevada 0.484 0.639\n", - "New Hampshire 0.962 0.734\n", - "New Jersey 0.736 0.704\n", - "New Mexico 1.052 0.379\n", - "New York 1.199 0.809\n", - "North Carolina 0.549 0.355\n", - "North Dakota 0.238 0.343\n", - "Ohio 0.378 0.428\n", - "Oklahoma 0.325 0.801\n", - "Oregon 0.971 0.342\n", - "Pennsylvania 0.588 0.467\n", - "Rhode Island 0.713 0.358\n", - "South Carolina 0.317 0.351\n", - "South Dakota 0.271 0.519\n", - "Tennessee 0.377 0.522\n", - "Texas 0.477 0.691\n", - "Utah 0.379 2.395\n", - "Vermont 1.602 0.250\n", - "Virginia 1.000 0.939\n", - "Washington 1.191 0.476\n", - "West Virginia 0.260 0.321\n", - "Wisconsin 0.455 0.238\n", - "Wyoming 0.746 1.080" - ] - } - ], - "prompt_number": 117 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "demo_data[[\"obama_give\", \"romney_give\"]] = giving" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 118 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from scipy import cluster as sp_cluster\n", - "from sklearn import cluster, neighbors" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 119 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "clean_data = sp_cluster.vq.whiten(demo_data.values)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 120 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "clean_data.var(axis=0)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 121, - "text": [ - "array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", - " 1., 1.])" - ] - } - ], - "prompt_number": 121 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "KNN = neighbors.NearestNeighbors(n_neighbors=7)\n", - "KNN.fit(clean_data)\n", - "KNN.kneighbors(clean_data[0], return_distance=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 122, - "text": [ - "(array([[ 0. , 0.8763, 1.0233, 1.3971, 1.8694, 2.1093, 2.2603]]),\n", - " array([[ 0, 40, 18, 42, 24, 33, 10]], dtype=int32))" - ] - } - ], - "prompt_number": 122 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "idx = _[1]\n", - "demo_data.index[0], demo_data.index[idx]" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 123, - "text": [ - "('Alabama',\n", - " array([['Alabama', 'South Carolina', 'Louisiana', 'Tennessee',\n", - " 'Mississippi', 'North Carolina', 'Georgia']], dtype=object))" - ] - } - ], - "prompt_number": 123 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "nearest_neighbor = {}\n", - "for i, state in enumerate(demo_data.index):\n", - " neighborhood = KNN.kneighbors(clean_data[i], return_distance=True)\n", - " nearest_neighbor.update({state : (demo_data.index[neighborhood[1]],\n", - " neighborhood[0])})" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 124 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "nearest_neighbor" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 125, - "text": [ - "{'Alabama': (array([['Alabama', 'South Carolina', 'Louisiana', 'Tennessee',\n", - " 'Mississippi', 'North Carolina', 'Georgia']], dtype=object),\n", - " array([[ 0. , 0.8763, 1.0233, 1.3971, 1.8694, 2.1093, 2.2603]])),\n", - " 'Alaska': (array([['Alaska', 'Wyoming', 'Nebraska', 'Washington', 'Kansas',\n", - " 'Delaware', 'Colorado']], dtype=object),\n", - " array([[ 0. , 3.3349, 3.6854, 3.7395, 3.7689, 3.7821, 3.8213]])),\n", - " 'Arizona': (array([['Arizona', 'Nevada', 'Oklahoma', 'New Mexico', 'Oregon',\n", - " 'Colorado', 'Kansas']], dtype=object),\n", - " array([[ 0. , 2.6992, 2.8728, 2.8766, 3.0299, 3.0351, 3.0367]])),\n", - " 'Arkansas': (array([['Arkansas', 'Tennessee', 'Alabama', 'Kentucky', 'Indiana',\n", - " 'Missouri', 'South Carolina']], dtype=object),\n", - " array([[ 0. , 1.8792, 2.3171, 2.4043, 2.4555, 2.5235, 2.5635]])),\n", - " 'California': (array([['California', 'Texas', 'New York', 'Florida', 'Illinois',\n", - " 'New Jersey', 'Pennsylvania']], dtype=object),\n", - " array([[ 0. , 3.9121, 4.461 , 4.7217, 5.8944, 6.7702, 7.0775]])),\n", - " 'Colorado': (array([['Colorado', 'Washington', 'Virginia', 'Oregon', 'Kansas',\n", - " 'Minnesota', 'New Hampshire']], dtype=object),\n", - " array([[ 0. , 1.8541, 2.4517, 2.5881, 2.655 , 2.7096, 2.7496]])),\n", - " 'Connecticut': (array([['Connecticut', 'Massachusetts', 'New Jersey', 'Virginia',\n", - " 'Colorado', 'Washington', 'New Hampshire']], dtype=object),\n", - " array([[ 0. , 1.882 , 2.4986, 2.8973, 3.2209, 3.4531, 3.4642]])),\n", - " 'Delaware': (array([['Delaware', 'Washington', 'Michigan', 'Illinois', 'Oregon',\n", - " 'Virginia', 'Rhode Island']], dtype=object),\n", - " array([[ 0. , 2.5376, 2.7875, 2.8076, 2.8882, 2.9771, 3.0112]])),\n", - " 'District of Columbia': (array([['District of Columbia', 'Maryland', 'Massachusetts', 'Connecticut',\n", - " 'New Jersey', 'Virginia', 'Delaware']], dtype=object),\n", - " array([[ 0. , 12.3449, 12.6305, 12.6762, 13.2193, 13.5237,\n", - " 13.7589]])),\n", - " 'Florida': (array([['Florida', 'New York', 'Illinois', 'Texas', 'Pennsylvania',\n", - " 'North Carolina', 'Ohio']], dtype=object),\n", - " array([[ 0. , 2.9107, 3.038 , 3.1893, 3.3073, 3.4896, 3.5918]])),\n", - " 'Georgia': (array([['Georgia', 'North Carolina', 'South Carolina', 'Louisiana',\n", - " 'Alabama', 'Tennessee', 'Missouri']], dtype=object),\n", - " array([[ 0. , 1.5857, 1.7042, 2.0122, 2.2603, 2.2821, 2.7322]])),\n", - " 'Hawaii': (array([['Hawaii', 'Delaware', 'Washington', 'New Jersey', 'Illinois',\n", - " 'Nevada', 'Alaska']], dtype=object),\n", - " array([[ 0. , 3.5885, 3.861 , 4.0249, 4.2819, 4.3453, 4.3871]])),\n", - " 'Idaho': (array([['Idaho', 'Nebraska', 'Kansas', 'Wyoming', 'Oklahoma', 'Montana',\n", - " 'North Dakota']], dtype=object),\n", - " array([[ 0. , 1.9803, 2.0754, 2.0787, 2.1757, 2.2378, 2.3297]])),\n", - " 'Illinois': (array([['Illinois', 'New York', 'Washington', 'Michigan', 'Virginia',\n", - " 'Pennsylvania', 'New Jersey']], dtype=object),\n", - " array([[ 0. , 2.0673, 2.137 , 2.2883, 2.4543, 2.59 , 2.6832]])),\n", - " 'Indiana': (array([['Indiana', 'Missouri', 'Tennessee', 'Ohio', 'Iowa', 'Michigan',\n", - " 'Wisconsin']], dtype=object),\n", - " array([[ 0. , 0.907 , 1.5921, 1.6033, 1.7819, 1.9781, 2.0616]])),\n", - " 'Iowa': (array([['Iowa', 'Maine', 'Wisconsin', 'Oregon', 'North Dakota', 'Missouri',\n", - " 'Indiana']], dtype=object),\n", - " array([[ 0. , 1.1152, 1.5243, 1.594 , 1.6018, 1.755 , 1.7819]])),\n", - " 'Kansas': (array([['Kansas', 'Nebraska', 'North Dakota', 'Montana', 'Idaho',\n", - " 'Indiana', 'Missouri']], dtype=object),\n", - " array([[ 0. , 0.6719, 1.5316, 1.6431, 2.0754, 2.154 , 2.2018]])),\n", - " 'Kentucky': (array([['Kentucky', 'West Virginia', 'Tennessee', 'Indiana', 'Oklahoma',\n", - " 'Alabama', 'Arkansas']], dtype=object),\n", - " array([[ 0. , 1.1876, 1.7593, 2.1843, 2.2642, 2.3361, 2.4043]])),\n", - " 'Louisiana': (array([['Louisiana', 'Alabama', 'South Carolina', 'Mississippi',\n", - " 'Tennessee', 'Georgia', 'North Carolina']], dtype=object),\n", - " array([[ 0. , 1.0233, 1.136 , 1.5793, 1.9074, 2.0122, 2.2222]])),\n", - " 'Maine': (array([['Maine', 'Iowa', 'Vermont', 'North Dakota', 'Montana', 'Oregon',\n", - " 'Missouri']], dtype=object),\n", - " array([[ 0. , 1.1152, 1.7709, 2.0009, 2.1852, 2.2556, 2.2738]])),\n", - " 'Maryland': (array([['Maryland', 'Virginia', 'New Jersey', 'Massachusetts',\n", - " 'Connecticut', 'Delaware', 'Washington']], dtype=object),\n", - " array([[ 0. , 2.9192, 2.9716, 3.0229, 3.4926, 3.5658, 3.7933]])),\n", - " 'Massachusetts': (array([['Massachusetts', 'Connecticut', 'New Jersey', 'Washington',\n", - " 'Virginia', 'Colorado', 'New Hampshire']], dtype=object),\n", - " array([[ 0. , 1.882 , 2.5823, 2.6111, 2.7211, 2.8532, 2.8816]])),\n", - " 'Michigan': (array([['Michigan', 'Ohio', 'Missouri', 'Pennsylvania', 'Indiana',\n", - " 'Wisconsin', 'Iowa']], dtype=object),\n", - " array([[ 0. , 0.914 , 1.5797, 1.9268, 1.9781, 2.1194, 2.1783]])),\n", - " 'Minnesota': (array([['Minnesota', 'Washington', 'Wisconsin', 'Oregon', 'New Hampshire',\n", - " 'Iowa', 'Vermont']], dtype=object),\n", - " array([[ 0. , 1.4419, 1.6072, 1.8303, 1.9445, 2.2889, 2.363 ]])),\n", - " 'Mississippi': (array([['Mississippi', 'Louisiana', 'Alabama', 'South Carolina',\n", - " 'Tennessee', 'North Carolina', 'Georgia']], dtype=object),\n", - " array([[ 0. , 1.5793, 1.8694, 2.1346, 3.0436, 3.163 , 3.2884]])),\n", - " 'Missouri': (array([['Missouri', 'Indiana', 'Ohio', 'Tennessee', 'Michigan', 'Iowa',\n", - " 'North Dakota']], dtype=object),\n", - " array([[ 0. , 0.907 , 1.414 , 1.537 , 1.5797, 1.755 , 2.1177]])),\n", - " 'Montana': (array([['Montana', 'North Dakota', 'Nebraska', 'Kansas', 'Iowa',\n", - " 'South Dakota', 'Maine']], dtype=object),\n", - " array([[ 0. , 1.0132, 1.4011, 1.6431, 1.7944, 1.8935, 2.1852]])),\n", - " 'Nebraska': (array([['Nebraska', 'Kansas', 'North Dakota', 'Montana', 'Idaho', 'Iowa',\n", - " 'Indiana']], dtype=object),\n", - " array([[ 0. , 0.6719, 1.1533, 1.4011, 1.9803, 2.0716, 2.1521]])),\n", - " 'Nevada': (array([['Nevada', 'Arizona', 'Delaware', 'Illinois', 'New Mexico',\n", - " 'Colorado', 'Indiana']], dtype=object),\n", - " array([[ 0. , 2.6992, 3.2186, 3.3355, 3.4181, 3.4779, 3.4977]])),\n", - " 'New Hampshire': (array([['New Hampshire', 'Minnesota', 'Washington', 'Vermont', 'Colorado',\n", - " 'Wisconsin', 'Massachusetts']], dtype=object),\n", - " array([[ 0. , 1.9445, 2.3854, 2.6837, 2.7496, 2.8483, 2.8816]])),\n", - " 'New Jersey': (array([['New Jersey', 'Virginia', 'Connecticut', 'Massachusetts',\n", - " 'Illinois', 'Washington', 'Maryland']], dtype=object),\n", - " array([[ 0. , 2.4212, 2.4986, 2.5823, 2.6832, 2.9395, 2.9716]])),\n", - " 'New Mexico': (array([['New Mexico', 'Arizona', 'Nevada', 'Oregon', 'Oklahoma',\n", - " 'North Carolina', 'Colorado']], dtype=object),\n", - " array([[ 0. , 2.8766, 3.4181, 4.7554, 4.8641, 4.8808, 4.9258]])),\n", - " 'New York': (array([['New York', 'Illinois', 'Florida', 'New Jersey', 'Virginia',\n", - " 'Michigan', 'Pennsylvania']], dtype=object),\n", - " array([[ 0. , 2.0673, 2.9107, 3.3612, 3.6949, 3.819 , 3.9422]])),\n", - " 'North Carolina': (array([['North Carolina', 'Georgia', 'South Carolina', 'Tennessee',\n", - " 'Alabama', 'Ohio', 'Missouri']], dtype=object),\n", - " array([[ 0. , 1.5857, 1.6217, 1.8337, 2.1093, 2.1905, 2.1934]])),\n", - " 'North Dakota': (array([['North Dakota', 'Montana', 'Nebraska', 'Kansas', 'Iowa', 'Maine',\n", - " 'Indiana']], dtype=object),\n", - " array([[ 0. , 1.0132, 1.1533, 1.5316, 1.6018, 2.0009, 2.0738]])),\n", - " 'Ohio': (array([['Ohio', 'Michigan', 'Missouri', 'Indiana', 'Pennsylvania',\n", - " 'Wisconsin', 'North Carolina']], dtype=object),\n", - " array([[ 0. , 0.914 , 1.414 , 1.6033, 1.6991, 2.1596, 2.1905]])),\n", - " 'Oklahoma': (array([['Oklahoma', 'Tennessee', 'Idaho', 'Indiana', 'Kentucky', 'Kansas',\n", - " 'Missouri']], dtype=object),\n", - " array([[ 0. , 2.0111, 2.1757, 2.21 , 2.2642, 2.3057, 2.3747]])),\n", - " 'Oregon': (array([['Oregon', 'Wisconsin', 'Iowa', 'Washington', 'Minnesota',\n", - " 'Missouri', 'Kansas']], dtype=object),\n", - " array([[ 0. , 1.2415, 1.594 , 1.6631, 1.8303, 2.2442, 2.2534]])),\n", - " 'Pennsylvania': (array([['Pennsylvania', 'Ohio', 'Michigan', 'Wisconsin', 'North Carolina',\n", - " 'Oregon', 'Illinois']], dtype=object),\n", - " array([[ 0. , 1.6991, 1.9268, 1.9716, 2.297 , 2.5221, 2.59 ]])),\n", - " 'Rhode Island': (array([['Rhode Island', 'Delaware', 'Vermont', 'Maine', 'Nevada',\n", - " 'Illinois', 'Washington']], dtype=object),\n", - " array([[ 0. , 3.0112, 3.6719, 3.8235, 3.8411, 3.8785, 3.887 ]])),\n", - " 'South Carolina': (array([['South Carolina', 'Alabama', 'Louisiana', 'Tennessee',\n", - " 'North Carolina', 'Georgia', 'Mississippi']], dtype=object),\n", - " array([[ 0. , 0.8763, 1.136 , 1.4947, 1.6217, 1.7042, 2.1346]])),\n", - " 'South Dakota': (array([['South Dakota', 'Montana', 'North Dakota', 'Wisconsin', 'Kansas',\n", - " 'Nebraska', 'Oklahoma']], dtype=object),\n", - " array([[ 0. , 1.8935, 2.1282, 2.1654, 2.2243, 2.2675, 2.4938]])),\n", - " 'Tennessee': (array([['Tennessee', 'Alabama', 'South Carolina', 'Missouri', 'Indiana',\n", - " 'Kentucky', 'North Carolina']], dtype=object),\n", - " array([[ 0. , 1.3971, 1.4947, 1.537 , 1.5921, 1.7593, 1.8337]])),\n", - " 'Texas': (array([['Texas', 'Florida', 'California', 'New York', 'Arizona',\n", - " 'Illinois', 'Georgia']], dtype=object),\n", - " array([[ 0. , 3.1893, 3.9121, 4.2069, 4.5867, 4.6339, 4.7973]])),\n", - " 'Utah': (array([['Utah', 'Idaho', 'Wyoming', 'Kansas', 'Oklahoma', 'Nebraska',\n", - " 'South Dakota']], dtype=object),\n", - " array([[ 0. , 3.8272, 4.1158, 4.8072, 4.8669, 5.0276, 5.046 ]])),\n", - " 'Vermont': (array([['Vermont', 'Maine', 'Iowa', 'Minnesota', 'Oregon', 'Washington',\n", - " 'New Hampshire']], dtype=object),\n", - " array([[ 0. , 1.7709, 2.3538, 2.363 , 2.5073, 2.6424, 2.6837]])),\n", - " 'Virginia': (array([['Virginia', 'New Jersey', 'Colorado', 'Illinois', 'Washington',\n", - " 'Massachusetts', 'Connecticut']], dtype=object),\n", - " array([[ 0. , 2.4212, 2.4517, 2.4543, 2.5525, 2.7211, 2.8973]])),\n", - " 'Washington': (array([['Washington', 'Minnesota', 'Oregon', 'Colorado', 'Wisconsin',\n", - " 'Illinois', 'New Hampshire']], dtype=object),\n", - " array([[ 0. , 1.4419, 1.6631, 1.8541, 2.0414, 2.137 , 2.3854]])),\n", - " 'West Virginia': (array([['West Virginia', 'Kentucky', 'Tennessee', 'Indiana', 'Oklahoma',\n", - " 'Arkansas', 'Missouri']], dtype=object),\n", - " array([[ 0. , 1.1876, 2.7545, 2.8103, 2.8824, 2.9104, 3.1176]])),\n", - " 'Wisconsin': (array([['Wisconsin', 'Oregon', 'Iowa', 'Minnesota', 'Pennsylvania',\n", - " 'Washington', 'Indiana']], dtype=object),\n", - " array([[ 0. , 1.2415, 1.5243, 1.6072, 1.9716, 2.0414, 2.0616]])),\n", - " 'Wyoming': (array([['Wyoming', 'Idaho', 'Nebraska', 'Kansas', 'North Dakota',\n", - " 'Montana', 'Alaska']], dtype=object),\n", - " array([[ 0. , 2.0787, 2.4089, 2.6214, 2.6543, 2.8861, 3.3349]]))}" - ] - } - ], - "prompt_number": 125 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "k_means = cluster.KMeans(n_clusters=5, n_init=50)\n", - "k_means.fit(clean_data)\n", - "values = k_means.cluster_centers_.squeeze()\n", - "labels = k_means.labels_" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 126 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "clusters = sp_cluster.vq.kmeans(clean_data, 5)[0]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 127 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def choose_group(data, clusters):\n", - " \"\"\"\n", - " Return the index of the cluster to which the rows in data\n", - " are \"closest\" (in the sense of the L2-norm)\n", - " \"\"\"\n", - " data = data[:,None] # add an axis for broadcasting\n", - " distances = data - clusters\n", - " groups = []\n", - " for row in distances:\n", - " dists = map(np.linalg.norm, row)\n", - " groups.append(np.argmin(dists))\n", - " return groups" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 128 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "groups = choose_group(clean_data, clusters)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 129 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "np.array(groups)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 130, - "text": [ - "array([1, 0, 3, 1, 4, 0, 0, 0, 2, 4, 1, 0, 3, 0, 3, 3, 3, 1, 1, 3, 0, 0, 3,\n", - " 0, 1, 3, 3, 3, 0, 0, 0, 1, 4, 1, 3, 3, 1, 3, 3, 0, 1, 3, 1, 4, 3, 0,\n", - " 0, 0, 1, 3, 3])" - ] - } - ], - "prompt_number": 130 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or use a one-liner" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "groups = [np.argmin(map(np.linalg.norm, (clean_data[:,None] - clusters)[i])) for i in range(51)]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 131 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "demo_data[\"kmeans_group\"] = groups\n", - "demo_data[\"kmeans_labels\"] = labels" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 132 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for _, group in demo_data.groupby(\"kmeans_group\"):\n", - " group = group.index\n", - " group.values.sort()\n", - " print group.values" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "['Alaska' 'Colorado' 'Connecticut' 'Delaware' 'Hawaii' 'Illinois'\n", - " 'Maryland' 'Massachusetts' 'Minnesota' 'Nevada' 'New Hampshire'\n", - " 'New Jersey' 'Rhode Island' 'Vermont' 'Virginia' 'Washington']\n", - "['Alabama' 'Arkansas' 'Georgia' 'Kentucky' 'Louisiana' 'Mississippi'\n", - " 'New Mexico' 'North Carolina' 'Oklahoma' 'South Carolina' 'Tennessee'\n", - " 'West Virginia']\n", - "['District of Columbia']\n", - "['Arizona' 'Idaho' 'Indiana' 'Iowa' 'Kansas' 'Maine' 'Michigan' 'Missouri'\n", - " 'Montana' 'Nebraska' 'North Dakota' 'Ohio' 'Oregon' 'Pennsylvania'\n", - " 'South Dakota' 'Utah' 'Wisconsin' 'Wyoming']\n", - "['California' 'Florida' 'New York' 'Texas']\n" - ] - } - ], - "prompt_number": 133 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "labels" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 134, - "text": [ - "array([0, 1, 0, 0, 3, 1, 1, 1, 2, 3, 0, 1, 4, 1, 4, 4, 4, 0, 0, 4, 1, 1, 4,\n", - " 4, 0, 4, 4, 4, 1, 4, 1, 0, 3, 0, 4, 4, 0, 4, 4, 1, 0, 4, 0, 3, 4, 4,\n", - " 1, 1, 0, 4, 4])" - ] - } - ], - "prompt_number": 134 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "demo_data[\"kmeans_labels\"] = labels\n", - "for _, group in demo_data.groupby(\"kmeans_labels\"):\n", - " group = group.index.copy()\n", - " group.values.sort()\n", - " print group.values" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "['Alabama' 'Arizona' 'Arkansas' 'Georgia' 'Kentucky' 'Louisiana'\n", - " 'Mississippi' 'New Mexico' 'North Carolina' 'Oklahoma' 'South Carolina'\n", - " 'Tennessee' 'West Virginia']\n", - "['Alaska' 'Colorado' 'Connecticut' 'Delaware' 'Hawaii' 'Illinois'\n", - " 'Maryland' 'Massachusetts' 'Nevada' 'New Jersey' 'Rhode Island' 'Virginia'\n", - " 'Washington']\n", - "['District of Columbia']\n", - "['California' 'Florida' 'New York' 'Texas']\n", - "['Idaho' 'Indiana' 'Iowa' 'Kansas' 'Maine' 'Michigan' 'Minnesota'\n", - " 'Missouri' 'Montana' 'Nebraska' 'New Hampshire' 'North Dakota' 'Ohio'\n", - " 'Oregon' 'Pennsylvania' 'South Dakota' 'Utah' 'Vermont' 'Wisconsin'\n", - " 'Wyoming']\n" - ] - } - ], - "prompt_number": 135 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "demo_data = demo_data.reset_index()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 136 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.State.replace(states_abbrev_dict, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 137 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012 = state_data2012.merge(demo_data[[\"State\", \"kmeans_labels\"]], on=\"State\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 138 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "kmeans_groups = state_data2012.groupby(\"kmeans_labels\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 139 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "group = kmeans_groups.get_group(kmeans_groups.groups.keys()[2])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 140 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "group.State.unique()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 141, - "text": [ - "array(['California', 'Florida', 'New York', 'Texas'], dtype=object)" - ] - } - ], - "prompt_number": 141 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def edit_tick_label(tick_val, tick_pos):\n", - " if tick_val < 0:\n", - " text = str(int(tick_val)).replace(\"-\", \"Romney+\")\n", - " else:\n", - " text = \"Obama+\"+str(int(tick_val))\n", - " return text" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 142 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from pandas import lib\n", - "from matplotlib.ticker import FuncFormatter\n", - "fig, axes = plt.subplots(figsize=(12,8))\n", - "\n", - "data = group[[\"poll_date\", \"obama_spread\"]]\n", - "data = pandas.concat((data, national_data2012[[\"poll_date\", \"obama_spread\"]]))\n", - " \n", - "data.sort(\"poll_date\", inplace=True)\n", - "dates = pandas.DatetimeIndex(data.poll_date).asi8\n", - "\n", - "loess_res = sm.nonparametric.lowess(data.obama_spread.values, dates, \n", - " frac=.2, it=3)\n", - "\n", - "dates_x = lib.ints_to_pydatetime(dates)\n", - "axes.scatter(dates_x, data[\"obama_spread\"])\n", - "axes.plot(dates_x, loess_res[:,1], color='r')\n", - "axes.yaxis.get_major_locator().set_params(nbins=12)\n", - "axes.yaxis.set_major_formatter(FuncFormatter(edit_tick_label))\n", - "axes.grid(False, axis='x')\n", - "axes.hlines(0, dates_x[0], dates_x[-1], color='black', lw=3)\n", - "axes.margins(0, .05)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "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\n3Bn5+Bv5CkREREREeskHHzj52c9iMU2D8nIHv/qVJ9IlKYCLiIiISP8VFWXicLR2O/F61QVFRERE\nRKTXjBkTYsWKekaNCnLDDc3ce29TpEvSlzBFREREpP+KioKZM/1cd52fmBiIiYl0RQrgIiIiItLP\nGQYkJ0e6ilbqgiIiIiIiYiMFcBERERERGymAi4iIiIjYSAFcRERERMRGCuAiIiIiIjZSABcRERER\nsZECuIiIiIiIjRTARURERERspAAuIiIiImIjBXARERERERspgIuIiIiI2EgBXERERETERgrgIiIi\nIiI2UgAXEREREbGRAriIiIiIiI0UwEVEREREbKQALiIiIiJiIwVwEREREREbKYCLiIiIiNhIAVxE\nRERExEYK4CIiIiIiNlIAFxERERGxkQK4iIiIiIiNFMBFRERERGzk6myBvXv3snbtWgBmzpxJVlYW\nixYt4uGHH+714k73zDPPcOjQIeLi4vj617/OoEGDAHjiiSc4cuQIbreb6667jqlTp9pem4iIiMiF\nLhSChgaIj490Jf1bpwF81apV3H///RiGwfLly1myZIkddbXrnnvuAWDLli289tpr3H777QAYhsGC\nBQsYPHhwxGoTERERuZBVVBg89VQ0r74axV13NXHnnc0kJka6qv6pwwBeUVFBenp6+E5zWloalZWV\n+Hw+li1bRnV1Nfn5+eTn5wOwadMmiouLKS0tZfr06UyePJn169ezfft2ysrKyMvLY8OGDSxcuBCv\n19vu8i2Ki4s5duxYu3ez4+PjCQQCbX5nmmaXdnjjxo1MmjQp/DOgttpqq6222mqrPeDbVVV5PP54\nDAALF7q49NIQU6YE+kx9F1I7NjaWjhhmB8l1y5YtHDlyhJkzZwKwZs0aMjIyWLlyJYsXLyY5OZmC\nggKWLl2Ky+UiEAjgcrnw+XwsXbqUhx56iPXr11NRUYHH4wGgqamJrKwscnJy2l3+wIEDFBYWUl9f\nj9/vx+v1MmvWLMaNGxeua8WKFXzhC18gIyMDsLqmlJaWkpmZya233nrWO+Hr1q0jJyenwwMiIiIi\nMhD97nduvve9uHD7+edrufHGQAQrunAVFRWFb1C3x9XRysOHD2fr1q3hdkVFBbm5uXi9XoYOHQpA\nZmYm5eXlZGZmsmvXLoqKinC73dTV1YXX83q9AHg8HmpqamhubgZod/kRI0ZQUFBASUkJR48ePeMO\n+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\nEeltnfUB1z8gioiIiIjYSAFcRERERMRGCuAiIiIiIjZSABcRERERsZECuIiIiIiIjRTARURERERs\npAAuIiIiImIjBXARERERERspgIuIiIiI2EgBXERERETERgrgIiIiIiI2UgAXEREREbGRAriIiIiI\niI0UwLuorg4++sigpibSlYiIiIj0XSdPWpnp5MlIV9J3KYB3wdGjBg8+GMP48Ul87WvxHDigwyYi\nIiJyurIyg+9+N5bx45P4t3+LpazMiHRJfZKSZBfs2OHk2Wc9BAIG69dH8dZbrkiXJCIiItLnvPee\ni7VrowkEDP7nf6J57z1lpvYogHeB47Sj5HKZkSlEREREpA9zOjtui0UBvAuuuCLA/fc3MnhwiC99\nqYnPfjYQ6ZJERERE+pzx4wN87Ws+Bg8Occ89PsaPV2Zqj2Ga5oC5nbtu3TpycnLOaV2fD2pqDBIS\nTOLiergwERERkX6isRFOnDBISjKJiYl0NZFRVFREfn7+Wf+ujjld5PFAauqA+awiIiIick5iYiAm\nRpmpI+qCIiIiIiJiIwVwEREREREbKYCLiIiIiNhIAVxERERExEb6EqaIiIhINwSD8O67TjZujOLy\nywNMnBggPj7SVcmFRAFcREREpBt27HDyxS8m4Pdb06z/4Q+1TJum8a6l69QFRURERKQbKiuNcPgG\n2LtX0z1K9yiAi4iIiHTDJZeESE8PAeDxmFx9te5+S/eoC4qIiIhIN4weHWLNmloOHnQwZEiIyy8P\nRbokucAogIuIiIh00+jRIUaPVvCWc6MuKCIiIiIiNlIAFxERERGxkQK4iIiIiIiNFMBFRERERGyk\nL2GKiIiICAAHDzqorjZITQ2Rnm5Gupx+S3fARURERIRduxzcdFMC06YlMnduPAcPKib2Fh1ZERER\nEeGdd1xUVFjRcPt2FyUliom9RUdWRERERLjoolO7nJh4veqC0lvUB1xEREREyM318+ij9bz2WhSz\nZzdzxRXBSJfUbymAi4iIiAgpKTB/fjPz5zdHupR+T11QRERERERspAAuIiIiImIjBXARERERERsp\ngIuIiIiI2KjTL2Hu3buXtWvXAjBz5kyysrJYtGgRDz/8cK8Xd7pdu3bxu9/9juzsbO66667w7594\n4gmOHDmC2+3muuuuY+rUqbbXJiIiIiLSFZ0G8FWrVnH//fdjGAbLly9nyZIldtTVLr/fz6xZs9iz\nZ0+b3xuGwYIFCxg8eHCEKhMRERER6ZoOA3hFRQXp6ekMGjQIgLS0NCorK/H5fCxbtozq6mry8/PJ\nz88HYNOmTRQXF1NaWsr06dOZPHky69evZ/v27ZSVlZGXl8eGDRtYuHAhXq+33eVbFBcXc+zYsTZ3\ns8eNG0dJSUm7tZpm1waL37hxI5MmTQr/DKitttpqq6222mqrrXaPtWNjY+mIYXaQXLds2cKRI0eY\nOXMmAGvWrCEjI4OVK1eyePFikpOTKSgoYOnSpbhcLgKBAC6XC5/Px9KlS3nooYdYv349FRUVeDwe\nAJqamsjKyiInJ6fd5Q8cOEBhYSH19fX4/X68Xi+zZs1i3LhxAJSUlPDee++16YLyzDPPUFpaSmZm\nJrfeeutZ74SvW7eOnJycDg+IiIiIiMj5KCoqCt+gbo+ro5WHDx/O1q1bw+2Kigpyc3Pxer0MHToU\ngMzMTMrLy8nMzGTXrl0UFRXhdrupq6sLr+f1egHweDzU1NTQ3GwN8N7e8iNGjKCgoICSkhKOHj3a\npf7c99xzDwA7d+5k9erVzJ8/v9N1REREREQiocNRUFJTUykrK6OmpoaamhrKy8tJTU3l+PHj1NXV\n4fP5KCsrIzMzE4CVK1dy9913M23atC5tvLvLQ8ddTaKjo4mOju7yY4mIiIiI2K3DO+AAc+fOZcWK\nFeGfAeLi4igsLKS8vJwZM2aEl73mmmt45JFHyM3NJTEx8axh2TCMdpc/VXZ2NtnZ2W1+t2bNGrZt\n20ZNTQ2NjY3ce++9APz2t7/l6NGjJCcnh2sUEREREemLOuwD3t+oD7iIiIiI9LbO+oBrIh4RERER\nERspgIuIiIiI2EgBXERERETERgrgIiIiIiI2UgAXEREREbGRAriIiIiIiI0UwEVEREREbKQALiIi\nIiJiIwVwEREREREbKYCLiIiIiNhIAVxERERExEYK4CIiIiIiNlIAFxERERGxkQK4iMgAd+yYQXm5\nQSgU6Urs09QEZWUGH39s77p9xYkT1j40Nka6ErnQ1dRY55LPF+lKLiwK4CIiA9i2bU5uuCGBz342\nkb/+NYpgMNIV9b7aWvjNb6LJzU3izjvj2bev62+FdXXw1FPWunfc0b11+4r9+w3uvjue3NwkHnvM\nc0F/kJDIKi11MGeOdS796lceTpyIdEUXjgvvyiEiIj2isRF++MMYDh1ycuKEg69/PY6DB41Il9Xr\ndu92smRJLPX1Bv/8ZxT//d/ubq1bUGCt+957UTz3XNfX7Sv+9jc3b74ZRX29wbJlMezc6Yx0SXKB\nWrPGzdtvW+fSww/HUFKic6mrFMBFRAYww2j/5/7s9P10dOOd0FrXDLedF2DeOJ/9FzmVYZintSNU\nyAVILzsRkQEqJgZ+/vMGLrkkSEpKiGeeqePii83OV7zAXXppkH//9waSkkJce62fO+9s7ta6P/1p\nI0lJIXJz/cyZ0/V1+4obb/Rz/fV+EhND/OhHjVx22QDodyS9YubMZqZM8ZOUFOKBBxp0LnWDYZpm\n/7/afmLdunXk5OREugwRkT6lutrA74ehQ80Bcwerudna79hYk6Skc1s3JsbE6+2d+npbbS3U1RkM\nGmTi8US6GrmQnTgBDQ0Gyckm0dGRrqbvKCoqIj8//6x/d9lYi4iI9EEpKQPmPkyY2w1paee23+ez\nbl+RkAAJCRf2PkjfkJQESUk6l7pLXVBERERERGykAC4iIiIiYiMFcBERERERGymAi4iIiIjYSF/C\nFDmL3bsdvPmmi5QUk4kTAwwdqi+ZiPQn1dWwaVMUZWUOJk0KcPnlGkJNelcwCO+95+Tdd11kZweZ\nMCFAXFykq5JIUAAXacdHHxncfns8ZWXWLBs//nEj3/++L8JViUhP+vOf3dx/v5V+kpNDvPJKLZdc\nEopwVdKfvf++kxkzEggEDMBk9eo6rrsuEOmyJALUBUWkHTU1Rjh8A6xbF4XfH8GCRKTHbdwYFf75\n+HEH1dUDZBB0iZjycuOT8A1gUFqqGDZQ6ZkXaUdqqsnkyS2J22TePB9RUR2uIiIXmNtuawpPpT12\nbICMDN39lt51ySUhUlKs8yw62uSKK9TtaaBSFxSRdlx0kckTT9Sza5eThASTsWN1kRTpb/LyArz8\nci0ff2wwZkyIjAx9z0N615gxIf7yl1oOHHCQlqb3loFMAVzkLIYNMxk2TH3zRPqr6GiYMEEBSOw1\nZkyIMWP0ry0DnbqgiIiIiIjYSAFcRERERMRGCuAiIiIiIjZSABcRERERsdGA+xLm7t0OAgEYOTKk\n2adERAaIQAA++MC6/o8aFSI2NtIVyeHDBlVVBkOGmKSnD5wRaIJB2Lfv7Fmkthb273cQHQ1ZWSEc\nulXaLw24p3XKlESmTEnk6aejaWyMdDUiImKHV15xMXmydf1/9tlofJrYNqI++MDBrFnxXH99ErNn\nx7N//8CJI3//uyucRVaubJtF6urgV7/yMHVqEtddl8iGDQPuPumAMXDO+E9YM1AZLF4cQ3n5gNt9\nEZEB5/h3ww6PAAAgAElEQVRxKCiIJRi0rv8PPKDrf6Rt2+aktNQKl8XFLt5/39nJGv3DiROweHFs\nOIsUFMRQXt46A+vhww7+4z9iAGhuNvjpT2N0s7CfGrBXoJQUk+jogfNPXiIiA5XHA5mZreMuDx5s\n4vHo+h9JSUltj7/XOzCeD7cbhg9vHXs+JcXE42n9u8cDCQmtx2LkyJBmYe6nnIsXL14c6SLssn//\nfny+DDIyQvyf/9PApz6lgfBFRPq7qCgYPz7AiRMGw4ZZ1/+sLF3/Iyk5OURGRgifz2DBAh95eX6i\noyNdVe+LioLPfCbIyZNGu1nE6zWZNMlPebnBxIl+fvCDRlJSIliwnLPy8nJGjRp11r8bpmkOjI+d\nwLp168jJySEUQl9qEBEZgHT971sG8vPR0b4P5OPSXxQVFZGfn3/Wvw/Ip1cntYjIwKTrf98ykJ+P\njvZ9IB+XgUJPsYiIiIiIjRTARURERERspAAuIiIiImKjTgP43r17+cUvfsEvfvEL9u3bB8CiRYt6\nvbD27Nq1i0WLFrFq1ao2vz98+DDLly9n+fLlHD58OCK1iYiISM+4EIaHOFuNF0LtfdFAO26dBvBV\nq1bxjW98g/nz5/Pcc8/ZUdNZ+f1+Zs2adcbvCwsLmTdvHvPmzeP555+PQGUiIiJyvvbvd/CDH8Rw\n551xvPNO35ycZ88eB9/8Zixf/WocO3a0xijThDffdHHHHXH87/8dw8GDRgePIqd6/30Hd90Vx7/+\nayz79g2MzhkdznFaUVFBeno6gwYNAiAtLY3Kykp8Ph/Lli2jurqa/Pz88DArmzZtori4mNLSUqZP\nn87kyZNZv34927dvp6ysjLy8PDZs2MDChQvxer3tLt+iuLiYY8eOMXXq1PDvxo0bR0lJSZsafT4f\nLpcrXCNAc3Mzbre73X3auHEjkyZNCv8MqK222mqrrbbaEW7HxcWzcuW1/P731sw0b78dxT/+cZJR\no0J9oj6AK66YxIIFsbz9tjU7zvbtTv7+91r27XsTw8hm9uxR+HwG69aBafr52c8Cfeb49tV2ebnB\n7NkJVFZawbuiwsEDD7xLfX1Vn6jvXNuxsbF0pMNxwLds2cKRI0eYOXMmAGvWrCEjI4OVK1eyePFi\nkpOTKSgoYOnSpbhcLgKBAC6XC5/Px9KlS3nooYdYv349FRUVeD6Z6qmpqYmsrCxycnLaXf7AgQMU\nFhZSX1+P3+/H6/Uya9Ysxo0bB0BJSQnvvfced911F2BNrvP666/jcrkA6y75tGnTGDFixBn70zIO\nuIiIiPQtzc1wyy3xvPNO69SPb755gssu6zuTJlVVGUydmsiRI1ZYdLlM3n33JMOHh9i61UF+flJ4\n2Ztuaub3v6+PVKkXjAMHHIwfn4hpWv9iMHJkkFdfPUlycoQLO0+djQPu6mjl4cOHs3Xr1nC7oqKC\n3NxcvF4vQ4cOBSAzM5Py8nIyMzPZtWsXRUVFuN1u6urqwut5vV4APB4PNTU1NDc3A7S7/IgRIygo\nKKCkpISjR4+2uQPenvT0dKqqqliwYAGmafL444+Tnp7e4ToiIiLSt7jdsHChjzvvdNHUZPCd7zSS\nmdl3wjdAcrLJ0qUN3HtvHKEQ/OxnDQwdatU4YkSIefN8PPush9hYk29/2xfhai8Mqakhli5t5IEH\nYnA6YfHiBk7p1NBvdRjAU1NTKSsro6amBrCm1UxNTeX48ePU1dXhcrkoKysjMzMTgJUrV/LYY49R\nVVXF5s2bO914d5cHOP2GfXR0NKFQiIaGBkKhEMFg8KzdT0RERKTvmjIlwPr1J/H5rECbmBjpitpy\nOODmm/28+eZJAgG45JIQ0dHW3wYNggceaOSrX20iLg5Gj+5bHx76Ko8H5s1rYsoUPy4XZGWFMAZA\n9/kOAzjA3LlzWbFiRfhngLi4OAoLCykvL2fGjBnhZa+55hoeeeQRcnNzSUxMPCMstzA+ObKnL3+q\n7OxssrOz2/xuzZo1bNu2jZqaGhobG7n33nsBmDNnDk8//TQOh4O77767q/suIiIifYhhwJgxfTu4\nRkXBpz/dfo2DBsGgQX27/r4oLg7Gjh1Yx63DPuD9jfqAi4iIiEhv66wP+MAY60VEREREpI9QABcR\nERERsZECuIiIiIiIjTr9EqZEXn09vP++k4YGg+zsIGlpkem27/fDjh1OqqsNRo8OMXLkwPrChIic\nu+JiB2VlDjIzQ2f9ApuIdF1jo/WefPKkwaWXBhk2rP9+pc/ufS0tNfjwQydDhpiMHRvE0Qu3qxXA\nLwBr1rj5zndiAYPPfa6ZJ55oICXF/hfapk0ubrstnmDQICsrwIsv1jF8eP99wYtIz9i+3cnNNydQ\nV2eQlBTiL3+p7VOTq4hciF55JYqvfS0OMPjsZ/3813/Vk5raP9+TX345iq9/3Z59LS11cMstCRw5\n4iAqyuR//qeWa64J9vh21AWlj2tshKefjgasoRv//nc3lZWRGSDzpZeiCAatbe/b5+LQIZ0+ItK5\nPXsc1NVZ144TJxzs2+eMcEUiFzbThMJCNy3ZYNOmKCoq+ufg2aEQPPts233tzRx04IAjPNOp32/w\n1ltRnaxxbpSg+riYGJg61R9uX3xxEK83Mp9wJ0wIhH9OSDC56KL++UlbRHpWRkYIsK4XhmGSnq67\n3yLnwzBg6tTW9+ShQ0P9dvZIhwPy8tru6ycTrPeKIUNCREe35pvLLgt0sPS5UxeUC8D8+U18+tNB\nqqsd5OX5SU+PTPDNz/fz3HO1fPihk4kTA31+sgQR6RvGjw+yZk0d27c7yckJcOWVPf/PuSIDzZe/\n3Mzw4SHKyx1Mnern4ov773vynDnWvlZU9P6+Xn55iD//uZa333YxZkyQ3NzeCeCaiEdEREREpAdp\nIh4RERERkT5EAVxERERExEYK4CIiIiIiNlIAFxERERGxkQK4DXw+KC83qKuLdCWREwxCRYXBxx9H\nupL+LRTScRYZyBoarPeb+vpIV9L7jh0zOHYscmNfV1cbbcaj/vhj6/ob6IVBM7qyr51d/0+vd6Cr\nq7NeKz5fZLavAN7Ljh+HRx/1MHFiIt/6ViyHDg28k7+5Gf74xygmT05k1qwEdu3SadcbAgH485+j\nmDIlkRkzEti5U8dZZCCprDR48MEYJk5M5Ic/jKW8vP++32za5OT66xO5/vpENm2yf2KnrVudfO5z\nCUydmsirrzrZvdvBbbfFM2lSIi+84O7RUPfWW637unlz+/vq98Patdb1/+abEygubnv9Lyqy6s3L\nS2TdOhcDZ/y79h086ODee+OYODGRxx7zROSmlYYh7GX/+IeLW29NCLf/8z/rmTOn2dYaIq2kxMHk\nyYmYpvVmMGtWM08/PQBuz9hs714HEycmhmcrzctr5oUX6nFptH+RAeHll13MmdP6fvPss3V88Yv+\nDta4MFVWGlx/fSLl5VbITEsL8frrJxk61J44U1cH06cnsGOHdXG96io/o0eH+L//N/qTJUw2bDjJ\n2LHnP1Z1ZaVBXl4iFRXWvqanW/s6ZEjbfd2zx7r+h0LW9f9zn2vm97+vx+mEkyfhC19IoKTEqjc2\n1mTz5hNkZg6Y+HeGZ591c//9ceH2mjW1TJnSs/90oWEII+z0jzeh/jtO/lmZZtvjEAiceVzk/J1+\nnINBHWeRgeT095f++n5jmm33LWjzvE6hUNttGga90u2kxanbCoXaf17bu/6f+reWGzMtj9FyQ2yg\n6guvFQXwXjZuXJB77/Xh8Zjk5/uZPLkXX6V91CWXhHj88Qbi4kyysgL88IeNGAP7td8rRo0K8eST\n9cTHm4wYEWDp0kaioiJdlYjY5TOfCXLnnU14PCa33NLEhAn98/0mNdXkt7+tJyUlREpKiKeeqrft\n7jdAYiI8/ngD6ekhEhNDfO97jXzvez7GjAkQG2vyH//RwOjRPZPohg41eeopa18HDw7x29/Wk5p6\n5r6OGhXi17+2rv8jRwZ48MFGnJ/0VklKgl/+sp60tBBJSSFWrqwjM7Offjrrory8ANdd58fjMbnv\nvkbGjbP/taIuKDaor4ePPzZISDBJSrJ9832C3w9HjxpER8PgwQPmlLNdIGD9k6XbDRddpOMsMtDU\n1UFNjUFSkklCQufLX8ha+rinpUXmWldZaRAMWts3DKiqMmhqgiFDzB6/+dGVfe3s+n96vQNdTQ3U\n1RkkJ5vExvb843fWBUW9Q20QFwdxcQM7DEVFQUbGwD4GdnC5dJxFBrL4eIiPHxjXgEgF7xan33Xv\nzZtLXdnXzq7/dv4rwYXA6wWvN3LHRF1QRERERERspAAuIiIiImIjBXARERERERspgIuIiIiI2Ehf\nwhwAjh0zePttF9XVBtdeG2DMmIE9/JBIf1RU5GTrViejRoW4+uoAcXGdr9MTjh412LzZRU2NdX35\n1Kf6x/WluRnee89JSYmT7Owg48cHcbutv1VXwzvvRFFZaZCbG+DTnz7/ff7wQ4PNm6OIjja59tqA\nvkzdDaZpzUy5dauTSy4JMWFC75//pmm95rZtczJ6dIirruqZbe7d62DzZhfJySa5uYE2o5mEQtY2\nt293kpVl7WdMTMeP5/db5/Hx4wbHj1v3XCdO9DNypElxsYMtW1ykp1vXjOpqB5s2uUhMtLbd3nCH\n56KiwrpG1NYaTJwY4JJLuvd6OXrU4N13nSQkmBw+7KCmxsHEiX7Gjeve49TUwDvvuCgrc3D11QFi\nY0Ps3++itNRJYmKIyZPtfd0pgA8AL7zg5sEHrTF2hg0L8te/1g7oGbBE+pudOx3cfHMCjY3W2GIv\nvFDLDTfYM67ts89G88gjVgoYOTLAn/9cR3r6hX992bbNyc03JxAKGTgcJi+9VMvVV1uzm6xe7eaH\nP7TS1tChIf72t1pGjDj3EF5dbfCv/xrHli3W2HV33+3j0UcbiY7uZEUBoLi47fn/hz/UMm1a757/\nO3Y4mTEjgaYmAzD505/qyMs7v20ePmwwe3Y8Bw9aA3g/8EADCxY0hf/+/vvWNpubrW2uWVPX6eyN\n27Y5WbIkhvR0k9WrrU+QEyb4Wb68gVtuSQiH8hdfrOWBB2LYvduKhf/2b408+KAPx3n2kwgG4ckn\nPfzqVx4ALr00wOrVdd0akaWwMJqYGJMTJwyWLbOuNUOGhHj55e697l55JYr77osH4Jvf9BETY/LG\nG1EUFVn7fNdd1uvO4+nyQ54XdUHp54JB66Rrcfiw9UlYRPqPykpHOHwAbN9uz70Vnw9efbX1+rJ/\nv4uPP+4f15ePPnKEp/UOhQw++qj17XLdutZ9rqx0UF19fvt88iRs2dL6nL3+ehS1tf3jONqhoqLt\n+f/++71//peXG5+EbwCDkhLneT/mxx8b4fAN8Morbvz+ttu0wre1zb17O49wZWUORo8O8e67rY/7\nz3+6qKxsvSMO1hjhLeEb4LXXomhoOPd9adHQYD1Wi927rX8t66qmJusak5RktrmuHT3q4Nix7r1G\nNm5srWPQIJPoaOtfFFqsW+emrs6+150CeD/ndMJXvtIEWJ82J0zwayxQkX5m+PAQQ4ZYd4KcTpOJ\nE/2drNEzPB64667WO3STJvkZMqR/XF+yskLh+Rvi4sw2MxvOnt1MyzV13LgAaWnn1wUlJcXkttua\nw+27724mKal/HEc7XHxx6/nvcplce23vn/8jRlgzU7Zs86qrzv+O+5Ahp9ZuctddTW0m9Bk5MsSg\nQdY2o6JMrrgieOaDnOaSS0Ls2uXkxhtbj8mttzYzfHiIrKyWmk2GDw9xww2ty9x1VxPx8ee7R9a4\n9Hfd5Qu3b7jBz0UXdf31Eh1tZZiyMgdTp/pped1ddlmA9PTuve5mzGjGMKz1q6rANE1uuqntPtv5\nutNMmANAfb11R+zkScjODjJ8+IB5ykUGjL17HZSWOhg61GTcuCAumzoY1tXBtm0u6urgssuC/ap7\n286dDg4dcjB8eIjLL299s29ogO3bnZw4YXDppaHz6n7SoqLC4P33nbjdcMUVAQYNOu+HHFD27HHw\n4YcOUlNNxo615/zfvdvB/v3WNseNC4anfj8fH31kUFzsJCHBOg9OD8G7dlnbTE+3ttmVLiLFxQ6q\nqgzq6w1cLhg3LkhqqsmHHzrYs8dBcrIV5qurDXbscBIbC1deGSAx8fz3B6x/4dm2zUVjI1x+ebDb\n/azr6qzXW1SUSXW1g4YGgyuvDHa7L7nPZ3Xjqa42GDMmREyMdQwqKx0kJpqMH9+zr7vOZsJUABcR\nERER6UGdBXB1QRERERERsZECuIiIiIiIjRTARURERERspAAuIiIiImIjTcQjIiIXrA8/dNDYCJmZ\noR4btaEjx4/DkSPWqAnDh5vU1sKhQw5iYmDUqK6PynDypDXW+KnrNTVZ++NwWMPH9fZIHo2NsH+/\ng6goa3vnO+lKV3z0kcHJkxAdbdDYaA29d/rQuK3H2Bpi024nTsDhw22fm7IyqKkxOHnSQWysSXZ2\niJoag4oKg0GDTIYNO/t4Fh09r6efT9318cfWWN/x8Zx1NJ5AAEpLHYRC1v5EaoKnjvb18GGDmhqD\noUPNNrN/9rSDBx3U1kJGRuiMEU9aj5PJoEFQVWWQlGT22shOugMuIiIXpC1bnOTlJTJ5chI//7mH\nEyd6d3uVlQb/63/FMmVKEjfckEhxsYPHH/cweXIS112XyObNXRuH7sQJ+PnPrfXy8hLZssWJ3w9/\n/KObSZMSmTQpkZdeiiLUi9mzsRFWrWrd3muv9f79uF27HNx4YwKvveZm9uw4rrsuia9+NY5Dh1on\nPzl61OAHP7CO8bRpCezYYW9MqamBhx+OCT83//ynk337HGzYEMWrr7qZMSOB/PxENm508s1vWvvw\nhS8ksHt3+3X6/fCHP7Qe57/9zUXL2HNHjxp8//st+5rY7X2trjZ44AFr/euvT2DbtjPPv1AIXnop\nKrz9F19009zczoP1stNfOzt3tu7rnj0OZsxIYMqUJObPj+Pw4d6ZDGfbNifXX29t54EHYttMoHXq\ncXrmGQ//+q9xTJmSxI03JrBrV++cgwrgIiJywTFNWL7cE54x8te/jmH//t59S9u3z8Hatdbtw2PH\nHOze7WT5cmtq7Pp6g0ceiSHY+dwoHDjg4Ne/ttarrTVYvtxDRYUVPE3TIBg0WLgwlqqq3puVr7zc\nwaJFsYCB328Fud7+APPqq1EcPWqN47x/vxX4t2yJYufO1uC4b5+D1autY1xV5eDFF929W9Rp9u93\n8tRT1lzktbUGTz4ZzdtvO4mPN1m2LAbTNAiFDLZudbF+vTVLzuHDTt54I6rdxzv9eV20KC78vO7d\n62DNmtZ9/X//r3v7+sEHDp5/3lq/psZBYeGZ61dXGyxaFEswaGCaVi1Hj9o/y+rpr51T93XjRheH\nDlnnwBtvRPXIrKLtWbXKzccfW9eI55+PZt++1utFdbXBj39sHafBg83wc1te7mwz229PUgAXEZEL\njmFYMyC2iI42iYnp3W3GxhKeSQ8gPt4kJqa1ffHFXZuMxeOx6m1dz+oW0DKzIkBqarDNMj3N7TYZ\nNKj18TMyQm1mXewNQ4aECAYJzzDaIiGh9ee4OHA42tZlJ4/HxO1u3f6wYSEGDTJxOGgzg2NioknL\nrIzQ9rk7ldsNgwe3LpeW1vq8xsW1PZ+6O7NjbKyJ09m21jO3bzJ0aOunwosuCuG29zMNcOZr59R9\nTU4+9XwwSUjonfP+1G06nWab8/DU42S9plv/NnRo75yDzsWLFy/ulUfug/bv309aWlqkyxARkR5w\nySUhGhutILJ8eQPjxwcxevHmXkqKyeWXBzlyxMGsWc1Mn97MtGkBDh50MGmSn/vv93VpJr2UFJMJ\nE6z18vL8fPvbTQwbZjJxop+DBx1cemmQRx9t7LBf8flKTIRJkwLs3+/gyiuDLFnSSGpq787Ll5Ji\nfUhqbDSYMiVAc7PBD37QSF6eP9wvOTnZmsny8GHrGH/5y8229O0/tcbx4wMcOuQgP9/Pffc1M3Jk\niNJSB5//fIDjx2H06CBz5zYxYUKQo0cd3HVXE1/8or/dqdvj42HiRD+HDrU+ry0zQaakWPtaVnZu\n+5qSYnLllQEOH3YwfbqfefOaSEpqu4zHA1dfHeDIEQeZmUF++csGRo2yf/7F0187d97Zuq/JyVbo\nbmoy+MlPGpkyJdArHxKGDQsRCoHLZfLoow1cc03rTKKnHifTNPna15qoqnLw5S83MXOmv82HxK4q\nLy9n1KhRZ/27ZsIUEZELlmlaX57q7bu3p/L7227P7weXi26H//bWa+nC0hPTmndFIAAOB7Z8AbNF\nc7N1Z7jl/x0tEymnP8dg1RQKWb9veX66WmcwaD3P7R3n893X9mptb/tg33l1Nh3Vatdz3lENoZB1\nTXE6z7+ezmbC1CgoIiJywTIMe8M3nLm9c91+e+vZHZB6e6SV9rSEmo7CTSTDN7T/3LRXU1fr7Oh5\nPd997cr5F+ng3aKjWu16zjuq4dQPSL1dj/qAi4iIiIjYSAFcRERERMRGCuAiIiIiIjY6595fe/fu\nZe3atQDMnDmTrKwsFi1axMMPP9xjxXXVE088wZEjR3C73Vx33XVMnTrV9hpERERERLrinAP4qlWr\nuP/++zEMg+XLl7NkyZKerKtbDMNgwYIFDB48OGI1SM8zTdi82clvfuNhzJggd9/d1OGUsAcOOHj6\n6WjKyhx861s+xo/vwowYIhJmmtakGCtWRHPZZdZQa10dCs804a23rElMsrODfOUrHa/r98M//uHi\npZeiuO66AH/6k5srrwzy5S83hYdp6y3BILzxhounn44mJyfAnXc2k57eNwcEazlOv/tdNLNnN7Nj\nh5Pdu51885s+PvvZ8xt2sboa1q5189prUdxxRzOf+5yf2Nieq906J1w89VR0l84JO5w8CX/9axR/\n/rObL36xifHjA7z9tpu//CWKiROtc2HIkI5r3LfPwa9/7SY3N8h777mornbwne/4uPLKzt9zrHWj\naWgw+M53fFx++bmPMX3okEFhYTQffODkvvt85OZG/j2vpgb+/Gc3f/tbFLNmNXPTTe0Pz9ji6FGD\nP/3JzZtvurjrriby83tnCEKAI0cMSkocvPNOFG63idsNW7a4mDu3iZEjQ/z6126mTg3y5puu8PMz\ndmzvjUN/TgG8oqKC9PR0Bn0y4GlaWhqVlZX4fD6WLVtGdXU1+fn54eFXNm3aRHFxMaWlpUyfPp3J\nkyezfv16tm/fTllZGXl5eWzYsIGFCxfi9XrbXb5FcXExx44dO+Mud1dHU9y4cSOTJk0K/wyo3Ufb\nmzcf5/bbR9HYaPCXv0Ag4Gf69He46qqrzlg+FIJHH43ihResGcz+8Q8XL7zwAc3Ne/rM/qitdt9v\nX84dd4ygqcl6zUEzP/qR2aX133rrY26/fWR4XdNsZtq0LUyYMOEs69cyZ04mP/6xj/vui6O52eCl\nl6yJUL797aZe3d9duxzMnh1PIGDw0ktuEhJMxo17E7/f38eeD4iPv445c+LJzAx98qHBusa99loU\nL764n4kTB53z4x89eg3f/761/ssvR/HCC+XccENMj9VvGJedcU4sWtS186m32s3NU/nWt6xEWF9v\nEAw28b3vWTNVvvqqm6FDQ8ye7T/r+ldeOYn777c+pVRUOHnlFSstvvGGi+ef38OECaln3X5s7BCW\nLs0Jz5r5zjsuXnmllqFDzW7vT1FREX/849X85jfW8/X661H84Q+lXHttSkSPr883le9+Nw6wzqm1\na+uYPDlwlvPDoLx8Kj/5iXU8X3klir//vZbx44M9Xt+WLVvYseNqamtd/PKXHhYu9LFkiXXsEhJM\n9uxxMmSIye9+5+LNN63nZ9MmF6+9VktqavefH+v57vjT7DmNA75lyxaOHDnCzJkzAVizZg0ZGRms\nXLmSxYsXk5ycTEFBAUuXLsXlchEIBHC5XPh8PpYuXcpDDz3E+vXrqaiowOOxLiZNTU1kZWWRk5PT\n7vIHDhygsLCQ+vp6/H4/Xq+XL33pS4wdO5ZnnnmG0tJSMjMzufXWW896J1zjgF9YioqcTJvWOivB\njBnN/O539e0u6/PBzTcn8N57rvDv3nrrBJ/+tL2zqIlcyLZscXLjja2vudtvb+K3v23o0rr//KeT\nz3++dd1bb21mxYr2X68A69e7+NKXEli4sJFHHmmdwvLuu308/njjOVTfdZs2OZkxo7XW+fN9PPpo\n727zXG3Y4GLWrASuvDJAamqIl19uvT3497+f5Kqrzv2u57PPurn//rhw+/e/r+WmmwLnVe+pTj8n\nbrutiaee6tr51Fv+9Kco5s+3AvgttzSTkxOgoKA1KP34xw18//tNZ13/2DGDvLxErroqwAcfOCgp\naX3PeeedE2Rlnf09p6rKWreszPr6ndNp8u67J9vM6NpVpgm33x7H66+3ng//+McJrrgisu95L7zg\n5r77Ws+pZ5+t44tf9J91+eXLo/n3f289/n/8Yy3XX99z5+CpfvUrNx9+6GL16ijmzm3mySet/Hnf\nfT6ef97NTTf5efttFwcOWGM2GobJe++dZMSIczumnY0Dfk5fwhw+fDiVlZXhdkVFBZmZmXi9XoYO\nHUpUVBSZmZmUl5cDsGvXLgoLC1m9ejV1dXXh9bxeLx6PB6/XS3R0NM3NzWddfsSIERQUFDBv3jxu\nueUWCgoKGDt2LAD33HMPP/3pT5k4cSKrV68+l12SPujii4PMnm1dCGNiTP7lX3xnXdbjgR/9qJGo\nKOvz5H33Ndo+hbHIhW7kyBAzZ1qvudhYk3vuOXsQaW/dL32pdd2vfe3sr1eArKxgeIbAvDzr2h8f\nbzJ3bvM5Vt91o0aF+Pznre0kJJjccUfvb/NcZWUFmTTJz+7dTqZN838yTTbcemvTOQeDFtdcEwhP\n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\nLjbtcFIoBF980RLvdXUQDLqzNEoweP7UoYoKQwl4nFMCLiIiAIwaFeLhh+sAm0GDQvzbv9V3eIxc\nHsaNCzFtWjiDy8trJDc31MER7peUBE8/XUtKio1p2rzwQi1ZWe5MwIcPt1iypBbDsElPt1i4sA7v\n5f8lhqupEqaIiDSrqYHSUoPERBg0qMe8PQhQXg7nzhmkpUHfvj3n2p88aRAMGgwZYpGQEOvWdF0g\nAMXFJj6fzZAhPef6xauOKmHq85GIiDRLSoIRI/Tm3RNlZEBGRs+79uFRb/f32++HESM078QtNAVF\nRERERMRBSsBFRERERBykBFxERERExEFKwEVEREREHKQfYYqIiHSTXbs8HD5skpVlMW5cCJ8v1i0S\nubw0NsLOnR5OnDC56iqLnJwQhgsKuSoBFxER6QZ79pjMnJlCTY2BadqsW1fFP/zD5b++toiTtm/3\nMGNGCpZl4PfbvPdeFWPHxv/zTFNQREREusHJkyY1NeGhOMsy2LfPE+MWiVx+Dh3yYFnh51kgYHD8\nuDtSW3e0UkRExGWysiySksLrS5umTXZ2/I/KibjNqFEhTDP8PEtMtBk2zB1roWsKioiISDcYPdri\n3XerOHSoZQ64iETXhAkh1q+v4sQJk5EjLcaMccfzTAm4iIhINxk7NuSK+agibpWQALm5IXJz3fU8\n0xQUEREREREHKQEXEREREXGQEnAREREREQcpARcRERERcZAScBERERERBykBFxERERFxkBJwERER\nEREHKQEXEREREXGQEnAREREREQcpARcRERERcZAScBERERERBykBFxERERFxkBJwEREREREHKQEX\nEREREXGQEnAREREREQcpARcRERERcZA31g1w2vbt22PdBBERERHpwQzbtu1YN0JEREREpKfQFBQR\nEREREQcpARcRERERcZAScBERERERBykBFxERERFxkBJwEREREREHeRYvXrw41o2IRFlZGffddx+3\n3XYbHo+H++67j2uuuYb+/ftH7T5+85vfsHbtWrZt28ZXvvIVEhMTASgsLOS1117j448/Jisri9TU\n1Hb3b9myhVWrVnH48GFGjBiB3++/5LYdOnSIV155hffff5/6+npGjhx5yedsLZ773mTFihUMGjSI\nPn36RO2cEHnf9+/fz/LlyykpKSEnJ6f5PG3dvqviMead6jvEX8w72ffW4j3u29rfFW6K+Wj2u4lb\nYr47+t5avMd8W+fpCjfFfDT73Zpb4j5q/bddprS01H744Yftd955x960aZP9yCOP2Hv37u2W+9q6\ndav9xz/+sXn7ySeftMvLy+3y8nJ76dKl7e4PBoP2woULbcuy7NLSUnvlypVRadNTTz1ll5eXR+Vc\n7YnHvjdZsWKFfeLEiaies7XO9n3Xrl321q1b7d/+9rfnHd/W7bsqHmPeqb7bdvzFvJN9by3e476t\n/V3hppiPZr+buCXmu6PvrcV7zLd1nq5wU8y3dZ5L5Za4b+s8kXJdIR7DMMjMzKSoqIiSkhJGjx7d\n/LePPvqIvXv3cuTIEWbMmMFNN91EUVERb775JvPnzwdg0aJFFBQUdGpENjk5mWAwCEAgEMDr9ZKe\nnt7894aGBizLumB/Y2MjhmFgWRb19fUkJydTUVERlf737duXjz/+mK997WsYhtG8/8CBA6xbt45g\nMMgdd9zR/LjMnz+frKwszp49y7Rp07jttts6dT/x2Pe2XOy6Azz66KNMnTqVLVu2kJuby8yZMzt1\nvs703efzMXbsWPbt23fese3dvqviLead7DvEV8w73ff2xFPcA23u7wq3xDxEt99N3BDz0D19b0+8\nxfzFztNVbor5i50nGtwS9xc7T1e4LgFvMmrUKM6dO0cgEGjeN2nSJKZMmUIgEOBnP/sZN910E4MH\nD6aqqora2lrKy8sZOHBgp6dDbN68ma9//esAlJSU0K9fP1avXg1ARkYGxcXF2LZ9wf6ioiKGDx/O\nnDlzePHFF0lKSqK0tJRAIHDJUzEeeOABNm3axM9//nPuvvtuRo0aBcCaNWuYP38+Pp+PZcuWNQdo\nfX093/72t0lPT2fx4sXcfPPNeL0dX/Z47HtbLnbdASorK8nOzmbatGkUFBR0+kW5M30fPnz4RY+N\n9PaRiJeYd7rv8RTzsbjubYmnuO8u8R7z3cUNMR8L8Rrzrc9zqdwU89HsN7gv7i+1/65LwO2/F+6c\nNm0aAL/73e+a/7Z//362b9+Oz+ejurq6ef+UKVP4+OOPKSsr6/QnpG3btjF48GAGDx4MQGZmJmfO\nnGHBggXYts1zzz1HZmYmtm1fdD9ATk4OOTk52LbN4sWLo5KAmqbJzTffTG5uLgsXLuSZZ54hEAhw\n9OhRli1bBoRfjM6dO0d6ejppaWkMGDAAgKysLIqLixk6dKgr+95a60/HbV33jIyM5r525kkJne97\nWyK9fWfEW8y3pTv6DvEV8073/cviNe6jzS0x313cEPNOifeY//J5usptMR+tfrfmpriPRv9dl4C3\n5/XXX2f58uWcOXOGLVu2NO+fMmUKzz33HAD33HNPh+c5cuQIn332GXPnzm3e16tXLyzLora2Fsuy\nCIVCzV8vt7W/yYYNG7j66quj0UUsy8I0TYLBIBkZGQD4/X6ys7N58MEHSUlJOe/25eXlVFdX4/P5\nKC4uJisrq93zx3Pfm5w+fZp+/fo1b7d13SMVad+h5UWzs7ePtljFPDjX93iLeYjNdY/nuO9ofzTF\nU8x3tL+r3BDzHe2PhniP+YudpzvEW8x3V7/dEvfR6r/rEnDDMM77RNza5MmTefrpp8nLyztvBYLE\nxERSU1M7vDhNnn32Wfr27csTTzzB0KFD+c53vgPAt771LV577TVM0+Tee+9tvn1b+1955RWOHTtG\nWloa3//+97vS3Qv84Q9/4NChQ/Tq1YtvfvObzftnzZrFqlWrqKysZMCAAdx///0AJCUlsXr1akpK\nSpg5c2abj1289/3MmTO8/PLLhEIhJkyYcN6IelvXPVKR9v1Pf/oTO3fupKKigrq6Oh588MF2b99V\n8RjzTvUd4i/mney7m+K+rf1d4aaYj2a/m7gl5ruj726K+bbO0xVuivlo9rs1t8R9tPpv2E4MWcSB\nl156iXnz5tG7d+9YN8VRBQUFLFmyJNbNkBhQzEtPo5iXnqanxjy4P+5dNwIeqcOHD7Nu3TomTpzY\nIwNUeh7FvPQ0innpaRTz7tdjRsBFREREROKBStGLiIiIiDhICbiIiIiIiIOUgIuIiIiIOEgJuIiI\niIiIg5SAi4iIiIg4SAm4iIiIiIiD/h+YsztaJs45ogAAAABJRU5ErkJggg==\n" - } - ], - "prompt_number": 143 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "loess_res[-7:,1].mean()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 144, - "text": [ - "2.3144535643345003" - ] - } - ], - "prompt_number": 144 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from pandas import lib\n", - "from matplotlib.ticker import FuncFormatter\n", - "fig, axes = plt.subplots(figsize=(12,8))\n", - "\n", - "national_data2012.sort(\"poll_date\", inplace=True)\n", - "dates = pandas.DatetimeIndex(national_data2012.poll_date).asi8\n", - "\n", - "loess_res = sm.nonparametric.lowess(national_data2012.obama_spread.values, dates, \n", - " frac=.075, it=3)\n", - "\n", - "dates_x = lib.ints_to_pydatetime(dates)\n", - "axes.scatter(dates_x, national_data2012[\"obama_spread\"])\n", - "axes.plot(dates_x, loess_res[:,1], color='r')\n", - "axes.yaxis.get_major_locator().set_params(nbins=12)\n", - "axes.yaxis.set_major_formatter(FuncFormatter(edit_tick_label))\n", - "axes.grid(False, axis='x')\n", - "axes.hlines(0, dates_x[0], dates_x[-1], color='black', lw=3)\n", - "axes.margins(0, .05)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAvEAAAHZCAYAAAAPL2QnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlgVPW99/H3ObNksiesIRgI+6IgRJGoyGKwahHF2rrh\nXqn3trWttE8frU8VaK3eawXU2mq9Vbnaqq0LUC1uUbTKqpEt7JBACAmEQMg6ySzn+eNAQmRLgMlw\nyOf1D5zMOef3Pcuc+Zzf/GbGsCzLQkREREREHMOMdgEiIiIiItI6CvEiIiIiIg6jEC8iIiIi4jAK\n8SIiIiIiDuOOdgFtKTc3N9oliIiIiEg7kJOTE9H1t6sQD5CVlRXtEkRERETkDJaXlxfxNjScRkRE\nRETEYRTiRUREREQcRiFeRERERMRhFOJFRERERBxGIV5ERERExGEU4kVEREREHEYhXkRERETEYRTi\nRUREREQcRiFeRERERMRhFOJFRERERBxGIV5ERERExGEU4kVEREREHEYhXkRERETEYRTiRUREREQc\nRiFeRERERMRhFOJFRERERBxGIV5ERERExGHc0S7AKcrKDDZvNklIsBg0KIxbe05EREREokQ98S2w\ndy/cf38sEyYkcemlSeTmKsGLiIiISPQoxLfAjh0mb78dA0AoZPDHP/oIhaJclIiIiIi0WwrxLZCY\nCCkp4cbp4cNDuFxRLEhERERE2jWNC2mBXr3CvPVWNX/7m5cePcJMmtQQ7ZJEREREpB1TiG+hYcNC\nDBtWF+0yREREREQ0nEZERERExGkU4kVEREREHEYhXkRERETEYRTiRUREREQcRiFeRERERMRhFOJF\nRERERBxGIV5ERERExGEU4kVEREREHEYhXkRERETEYRTiRUREREQcRiFeRERERMRhFOJFRERERBxG\nIV5ERERExGEU4kVEREREHEYhXkRERETEYRTiRUREREQcRiFeRERERMRhFOJFRERERBxGIV5ERERE\nxGEU4kVEREREHEYhXkRERETEYRTiRUREREQcRiFeRERERMRhFOJFRERERBxGIV5ERERExGEU4kVE\nREREHEYhXkRERETEYRTiRUREREQcRiFeRERERMRhFOJFRERERBxGIV5ERERExGEU4kVEREREHEYh\nXkRERETEYRTiRUREREQcRiFeRERERMRhFOJFRERERBxGIV5ERERExGEU4kVEREREHEYhXkRERETE\n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\nwQ9+AMDNN9/MX/7yF0zT5LbbbmvptouIiIicUj4f+HxHzj/x8RAff9RRzHIMXi+kpWnfHeqYY+LP\nNBoTLyIiIiKR1hZj4vVjTyIiIiIiDqMQLyIiIiLiMArxIiIiIiIOoxAvIiIiIuIwCvEiIiIiIg6j\nEC8iIiIi4jAK8SIiIiIiDqMQLyIiIiLiMArxIiIiIiIO4452AdIyNTWwc6dJTAz06BGOai27dxvs\n22fQqZNFx47t5gd/ReQU07VEJLK2bzfw+w26dw8THx/taiIrHIbCQhPLsujZ08Id4YRbWwvFxSZe\nL/TsGZ1cpp54B6ipgeefj2HkyCRGj05k+XJX1GopKDC4/voELrwwme9/P56iIiNqtYiIc23davC9\n79nXkilT4tmxQ9cSkVPpq69cjBmTRHZ2Es8+66O6OtoVRY5lwfvvu7nwwiSys5N55x0PoVDk2qup\ngRdeOJjLkli6NDq5TCHeAbZtM5kxIxYwqKw0eeQRX0RPzmNZvtzNqlX27e1nn3lYtSp6NxQi4lxf\nfulm9Wr7WrJwoYeVK3UtETlVwmF47DEf+/ebgMEjj8RSUHDmRr7duw2mTo0nEDAIhQx+8pN4Sksj\n1zGwfbvJQw/ZuayqymD69FgaGiLW3FGduUf0DOLxQExM03TXrhZmlI7cN9+Oi42NTh0i4mxxccee\nFpETZ5rQpUvTEA+Px8LrjWJBEeb1WiQnN21vcrKFxxPZ9ny+pukuXSI/fOdIXNOmTZvW9s1GR0FB\nAd26dYt2Ga2WmmqRlRVk/XoX558f5Fe/8kdt/GhKioXXa1FRYfLjH/u5/PKAgryItFpyskVMTNO1\n5IorAs1eFEXk5AwcGD7wWTqLJ5+s5fzzQxhn6Ki12FgYOdLOSWlpYf74x1r69o3cOPXUVDj//CBr\n17oYPjzIww/X0alT81xWUlJC7969I1YDgGFZVrv5NFFubi5ZWVnRLuOE1dTYvfLRvpsOh+1aEhI4\nYy8IIhJ5upaIRFZDAwQCh7+Lfqby++3x8W3VuXisXJaXl0dOTk5E29e30zjI6fIkNE1ITIx2FSLi\ndLqWiESW1xv9jr+21Nbv5kU7l2lMvIiIiIiIwyjEi4iIiIg4jEK8iIiIiIjDKMSLiIiIiDiMQryI\niIiIiMMoxIuIiIiIOIxCvIiIiIiIwyjEi4iIiIg4jEK8iIiIiIjDKMSLiIiIiDiMO9oFtAf19bBp\n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\n" - } - ], - "prompt_number": 145 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends = []\n", - "for i, group in kmeans_groups:\n", - " data = group[[\"poll_date\", \"obama_spread\"]]\n", - " data = pandas.concat((data, national_data2012[[\"poll_date\", \"obama_spread\"]]))\n", - " \n", - " data.sort(\"poll_date\", inplace=True)\n", - " dates = pandas.DatetimeIndex(data.poll_date).asi8\n", - "\n", - " loess_res = sm.nonparametric.lowess(data.obama_spread.values, dates, \n", - " frac=.1, it=3)\n", - " states = group.State.unique()\n", - " for state in states:\n", - " trends.append([state, loess_res[-7:,1].mean()])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 146 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 147, - "text": [ - "[['Arizona', 2.3149200179538716],\n", - " ['Georgia', 2.3149200179538716],\n", - " ['Mississippi', 2.3149200179538716],\n", - " ['New Mexico', 2.3149200179538716],\n", - " ['North Carolina', 2.3149200179538716],\n", - " ['South Carolina', 2.3149200179538716],\n", - " ['Tennessee', 2.3149200179538716],\n", - " ['West Virginia', 2.3149200179538716],\n", - " ['Colorado', 18.412063676088412],\n", - " ['Connecticut', 18.412063676088412],\n", - " ['Hawaii', 18.412063676088412],\n", - " ['Illinois', 18.412063676088412],\n", - " ['Maryland', 18.412063676088412],\n", - " ['Massachusetts', 18.412063676088412],\n", - " ['Nevada', 18.412063676088412],\n", - " ['New Jersey', 18.412063676088412],\n", - " ['Rhode Island', 18.412063676088412],\n", - " ['Virginia', 18.412063676088412],\n", - " ['Washington', 18.412063676088412],\n", - " ['California', 2.73263672729736],\n", - " ['Florida', 2.73263672729736],\n", - " ['New York', 2.73263672729736],\n", - " ['Texas', 2.73263672729736],\n", - " ['Indiana', 6.5865280433068092],\n", - " ['Iowa', 6.5865280433068092],\n", - " ['Kansas', 6.5865280433068092],\n", - " ['Maine', 6.5865280433068092],\n", - " ['Michigan', 6.5865280433068092],\n", - " ['Minnesota', 6.5865280433068092],\n", - " ['Missouri', 6.5865280433068092],\n", - " ['Montana', 6.5865280433068092],\n", - " ['Nebraska', 6.5865280433068092],\n", - " ['New Hampshire', 6.5865280433068092],\n", - " ['North Dakota', 6.5865280433068092],\n", - " ['Ohio', 6.5865280433068092],\n", - " ['Oregon', 6.5865280433068092],\n", - " ['Pennsylvania', 6.5865280433068092],\n", - " ['South Dakota', 6.5865280433068092],\n", - " ['Utah', 6.5865280433068092],\n", - " ['Vermont', 6.5865280433068092],\n", - " ['Wisconsin', 6.5865280433068092]]" - ] - } - ], - "prompt_number": 147 - }, - { - "cell_type": "heading", - "level": 4, - "metadata": {}, - "source": [ - "Adjust for sensitivity to time-trends" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\\text{Margin}=X_i+Z_t+\\epsilon$$\n", - "\n", - "where $S_i$ are Pollster:State dummies. In a state with a time-dependent trend, you might write\n", - "\n", - "$$\\text{Margin}=X_i+m*Z_t$$\n", - "\n", - "where $m$ is a multiplier representing uncertainty in the time-trend parameter. Solving for $m$ gives\n", - "\n", - "$$m=\\text{Margin}-\\frac{X_i}{Z_t}$$" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "from statsmodels.formula.api import ols, wls" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 148 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#pollster_state_dummy = state_data2012.groupby([\"Pollster\", \"State\"])[\"obama_spread\"].mean()\n", - "#daily_dummy = state_data2012.groupby([\"poll_date\"])[\"obama_spread\"].mean()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 149 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012[\"pollster_state\"] = state_data2012[\"Pollster\"] + \"-\" + state_data2012[\"State\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 150 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There's actually a bug in pandas when you merge on datetimes. In order to avoid it, we need to sort our data now and once again after we merge on dates." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.sort(columns=[\"pollster_state\", \"poll_date\"], inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 151 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "dummy_model = ols(\"obama_spread ~ C(pollster_state) + C(poll_date)\", data=state_data2012).fit()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 152 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The base case is American Research Group-Colorado" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.irow(0)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 153, - "text": [ - "Pollster American Research Group\n", - "State Colorado\n", - "MoE 4\n", - "Obama (D) 49\n", - "Romney (R) 47\n", - "Sample 600\n", - "Spread Obama +2\n", - "obama_spread 2\n", - "poll_date 2012-09-11 00:00:00\n", - "Weight 0.65\n", - "PIE 1.76\n", - "ESS 173\n", - "MESS 173\n", - "time_weight 0.6156\n", - "kmeans_labels 1\n", - "pollster_state American Research Gro...\n", - "Name: 25" - ] - } - ], - "prompt_number": 153 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "pollster_state = state_data2012[\"pollster_state\"].unique()\n", - "pollster_state.sort()\n", - "pollster_state_params = dummy_model.params[1:len(pollster_state)] + dummy_model.params[0]\n", - "intercept = dummy_model.params[0]\n", - "X = pandas.DataFrame(zip(pollster_state, np.r_[intercept, pollster_state_params]), \n", - " columns=[\"pollster_state\", \"X\"])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 154 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "dates = state_data2012.poll_date.unique()\n", - "dates.sort()\n", - "dates_params = intercept + dummy_model.params[-len(dates):]\n", - "Z = pandas.DataFrame(zip(dates, dates_params), columns=[\"poll_date\", \"Z\"])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 155 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Drop the ones less than 1." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "Z = Z.ix[np.abs(Z.Z) > 1]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 156 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012 = state_data2012.merge(X, on=\"pollster_state\", sort=False)\n", - "state_data2012 = state_data2012.merge(Z, on=\"poll_date\", sort=False)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 157 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012.sort(columns=[\"pollster_state\", \"poll_date\"], inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 158 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_data2012[\"m\"] = state_data2012[\"obama_spread\"].sub(state_data2012[\"X\"].div(state_data2012[\"Z\"]))" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 159 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#m_dataframe.ix[m_dataframe.pollster_state == \"American Research Group-New Hampshire\"].values" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 160 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_dataframe = state_data2012[[\"State\", \"m\", \"poll_date\", \"Pollster\", \"pollster_state\"]]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 161 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_dataframe[\"m\"].describe()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 162, - "text": [ - "count 355.000\n", - "mean 3.281\n", - "std 9.168\n", - "min -52.000\n", - "25% -0.808\n", - "50% 2.697\n", - "75% 8.145\n", - "max 38.723" - ] - } - ], - "prompt_number": 162 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_size = m_dataframe.groupby(\"pollster_state\").size()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 163 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_size" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 164, - "text": [ - "pollster_state\n", - "American Research Group-Colorado 1\n", - "American Research Group-Florida 1\n", - "American Research Group-Iowa 1\n", - "American Research Group-Nevada 1\n", - "American Research Group-New Hampshire 3\n", - "American Research Group-North Carolina 1\n", - "American Research Group-Ohio 1\n", - "American Research Group-Virginia 1\n", - "CNN / Opinion Research-Wisconsin 1\n", - "Chicago Trib. / MarketShares-Illinois 1\n", - "Columbus Dispatch (OH)-Ohio 2\n", - "EPIC-MRA-Michigan 8\n", - "Fairleigh-Dickinson (NJ)-New Jersey 3\n", - "Field Poll (CA)-California 6\n", - "Insider Advantage-Georgia 2\n", - "LA Times / Bloomberg-New Hampshire 1\n", - "Marist (NY)-New York 3\n", - "Mason-Dixon-Florida 3\n", - "Mason-Dixon-Georgia 1\n", - "Mason-Dixon-New Hampshire 1\n", - "Mason-Dixon-North Dakota 1\n", - "Mason-Dixon-Utah 1\n", - "Mason-Dixon-Virginia 1\n", - "Mitchell-Michigan 3\n", - "Ohio Poll-Ohio 2\n", - "Public Policy Polling (PPP)-Arizona 7\n", - "Public Policy Polling (PPP)-California 2\n", - "Public Policy Polling (PPP)-Colorado 6\n", - "Public Policy Polling (PPP)-Connecticut 3\n", - "Public Policy Polling (PPP)-Florida 8\n", - "Public Policy Polling (PPP)-Georgia 1\n", - "Public Policy Polling (PPP)-Hawaii 1\n", - "Public Policy Polling (PPP)-Iowa 8\n", - "Public Policy Polling (PPP)-Maine 2\n", - "Public Policy Polling (PPP)-Maryland 1\n", - "Public Policy Polling (PPP)-Massachusetts 6\n", - "Public Policy Polling (PPP)-Michigan 6\n", - "Public Policy Polling (PPP)-Minnesota 5\n", - "Public Policy Polling (PPP)-Mississippi 2\n", - "Public Policy Polling (PPP)-Missouri 7\n", - "Public Policy Polling (PPP)-Montana 3\n", - "Public Policy Polling (PPP)-Nebraska 1\n", - "Public Policy Polling (PPP)-Nevada 4\n", - "Public Policy Polling (PPP)-New Hampshire 3\n", - "Public Policy Polling (PPP)-New Mexico 6\n", - "Public Policy Polling (PPP)-North Carolina 22\n", - "Public Policy Polling (PPP)-Ohio 9\n", - "Public Policy Polling (PPP)-Oregon 2\n", - "Public Policy Polling (PPP)-Pennsylvania 5\n", - "Public Policy Polling (PPP)-Rhode Island 1\n", - "Public Policy Polling (PPP)-South Carolina 3\n", - "Public Policy Polling (PPP)-South Dakota 1\n", - "Public Policy Polling (PPP)-Tennessee 1\n", - "Public Policy Polling (PPP)-Texas 3\n", - "Public Policy Polling (PPP)-Utah 1\n", - "Public Policy Polling (PPP)-Virginia 7\n", - "Public Policy Polling (PPP)-Washington 3\n", - "Public Policy Polling (PPP)-West Virginia 3\n", - "Public Policy Polling (PPP)-Wisconsin 6\n", - "Quinnipiac-Connecticut 4\n", - "Quinnipiac-Florida 12\n", - "Quinnipiac-New Jersey 8\n", - "Quinnipiac-New York 5\n", - "Quinnipiac-Ohio 11\n", - "Quinnipiac-Pennsylvania 9\n", - "Quinnipiac-Virginia 5\n", - "Rasmussen-Arizona 3\n", - "Rasmussen-California 1\n", - "Rasmussen-Colorado 3\n", - "Rasmussen-Connecticut 1\n", - "Rasmussen-Florida 5\n", - "Rasmussen-Indiana 1\n", - "Rasmussen-Iowa 3\n", - "Rasmussen-Maine 1\n", - "Rasmussen-Massachusetts 4\n", - "Rasmussen-Michigan 2\n", - "Rasmussen-Missouri 6\n", - "Rasmussen-Montana 5\n", - "Rasmussen-Nebraska 2\n", - "Rasmussen-Nevada 3\n", - "Rasmussen-New Hampshire 1\n", - "Rasmussen-New Jersey 1\n", - "Rasmussen-New Mexico 3\n", - "Rasmussen-North Carolina 4\n", - "Rasmussen-North Dakota 1\n", - "Rasmussen-Ohio 7\n", - "Rasmussen-Pennsylvania 4\n", - "Rasmussen-Virginia 5\n", - "Rasmussen-Washington 1\n", - "Rasmussen-Wisconsin 7\n", - "Suffolk (NH/MA)-Florida 2\n", - "SurveyUSA-California 4\n", - "SurveyUSA-Florida 2\n", - "SurveyUSA-Georgia 4\n", - "SurveyUSA-Kansas 2\n", - "SurveyUSA-Michigan 1\n", - "SurveyUSA-New Jersey 1\n", - "SurveyUSA-New York 1\n", - "SurveyUSA-North Carolina 2\n", - "SurveyUSA-Oregon 4\n", - "SurveyUSA-Pennsylvania 1\n", - "SurveyUSA-Washington 4\n", - "Length: 102" - ] - } - ], - "prompt_number": 164 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "drop_idx = m_size.ix[m_size == 1]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 165 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_dataframe = m_dataframe.set_index([\"pollster_state\", \"poll_date\"])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 166 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_dataframe.xs(\"American Research Group-New Hampshire\", level=0)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 167, - "text": [ - " State m Pollster\n", - "poll_date \n", - "2012-03-17 New Hampshire 6.437 American Research Group\n", - "2012-06-23 New Hampshire 0.071 American Research Group\n", - "2012-09-26 New Hampshire 4.055 American Research Group" - ] - } - ], - "prompt_number": 167 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_dataframe = m_dataframe.drop(drop_idx.index, level=0).reset_index()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 168 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_dataframe" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 169, - "text": [ - "\n", - "Int64Index: 320 entries, 0 to 319\n", - "Data columns:\n", - "pollster_state 320 non-null values\n", - "poll_date 320 non-null values\n", - "State 320 non-null values\n", - "m 320 non-null values\n", - "Pollster 320 non-null values\n", - "dtypes: datetime64[ns](1), float64(1), object(3)" - ] - } - ], - "prompt_number": 169 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_regression_data = m_dataframe.merge(demo_data, on=\"State\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 170 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_regression_data" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 171, - "text": [ - "\n", - "Int64Index: 320 entries, 0 to 319\n", - "Data columns:\n", - "pollster_state 320 non-null values\n", - "poll_date 320 non-null values\n", - "State 320 non-null values\n", - "m 320 non-null values\n", - "Pollster 320 non-null values\n", - "per_black 320 non-null values\n", - "per_hisp 320 non-null values\n", - "per_white 320 non-null values\n", - "educ_hs 320 non-null values\n", - "educ_coll 320 non-null values\n", - "average_income 320 non-null values\n", - "median_income 320 non-null values\n", - "pop_density 320 non-null values\n", - "vote_pop 320 non-null values\n", - "older_pop 320 non-null values\n", - "dem_adv 320 non-null values\n", - "no_party 320 non-null values\n", - "PVI 320 non-null values\n", - "obama_give 320 non-null values\n", - "romney_give 320 non-null values\n", - "kmeans_group 320 non-null values\n", - "kmeans_labels 320 non-null values\n", - "dtypes: datetime64[ns](1), float64(14), int64(4), object(3)" - ] - } - ], - "prompt_number": 171 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_regression_data[[\"PVI\", \"per_black\", \"per_hisp\", \"older_pop\", \"average_income\", \n", - " \"romney_give\", \"obama_give\", \"educ_coll\", \"educ_hs\"]].corr()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 172, - "text": [ - " PVI per_black per_hisp older_pop average_income romney_give obama_give educ_coll educ_hs\n", - "PVI 1.000 -0.295 0.115 0.150 0.594 0.291 0.669 0.494 0.226\n", - "per_black -0.295 1.000 -0.174 0.279 -0.064 0.111 -0.281 -0.111 -0.497\n", - "per_hisp 0.115 -0.174 1.000 0.403 0.098 0.289 0.306 0.112 -0.566\n", - "older_pop 0.150 0.279 0.403 1.000 0.022 0.237 -0.038 -0.076 -0.479\n", - "average_income 0.594 -0.064 0.098 0.022 1.000 0.718 0.704 0.888 0.250\n", - "romney_give 0.291 0.111 0.289 0.237 0.718 1.000 0.555 0.630 -0.025\n", - "obama_give 0.669 -0.281 0.306 -0.038 0.704 0.555 1.000 0.835 0.085\n", - "educ_coll 0.494 -0.111 0.112 -0.076 0.888 0.630 0.835 1.000 0.273\n", - "educ_hs 0.226 -0.497 -0.566 -0.479 0.250 -0.025 0.085 0.273 1.000" - ] - } - ], - "prompt_number": 172 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "(today - m_regression_data[\"poll_date\"].astype('O'))" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 173, - "text": [ - "0 743 days, 0:00:00\n", - "1 612 days, 0:00:00\n", - "2 521 days, 0:00:00\n", - "3 227 days, 0:00:00\n", - "4 136 days, 0:00:00\n", - "5 70 days, 0:00:00\n", - "6 24 days, 0:00:00\n", - "7 203 days, 0:00:00\n", - "8 98 days, 0:00:00\n", - "9 7 days, 0:00:00\n", - "10 391 days, 0:00:00\n", - "11 316 days, 0:00:00\n", - "12 235 days, 0:00:00\n", - "13 130 days, 0:00:00\n", - "14 97 days, 0:00:00\n", - "...\n", - "305 29 days, 0:00:00\n", - "306 1 day, 0:00:00\n", - "307 584 days, 0:00:00\n", - "308 500 days, 0:00:00\n", - "309 409 days, 0:00:00\n", - "310 220 days, 0:00:00\n", - "311 87 days, 0:00:00\n", - "312 13 days, 0:00:00\n", - "313 342 days, 0:00:00\n", - "314 218 days, 0:00:00\n", - "315 189 days, 0:00:00\n", - "316 146 days, 0:00:00\n", - "317 112 days, 0:00:00\n", - "318 69 days, 0:00:00\n", - "319 15 days, 0:00:00\n", - "Name: poll_date, Length: 320" - ] - } - ], - "prompt_number": 173 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "time_weights = (today - m_regression_data[\"poll_date\"].astype('O')).apply(exp_decay)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 174 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_model = wls(\"m ~ PVI + per_hisp + per_black + average_income + educ_coll\", data=m_regression_data, weights=time_weights).fit()\n", - "m_model.summary()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "html": [ - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "
WLS Regression Results
Dep. Variable: m R-squared: 0.704
Model: WLS Adj. R-squared: 0.699
Method: Least Squares F-statistic: 149.4
Date: Fri, 26 Oct 2012 Prob (F-statistic): 8.75e-81
Time: 08:31:09 Log-Likelihood: -632.76
No. Observations: 320 AIC: 1278.
Df Residuals: 314 BIC: 1300.
Df Model: 5
\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "
coef std err t P>|t| [95.0% Conf. Int.]
Intercept 4.5623 2.504 1.822 0.069 -0.364 9.488
PVI 1.5534 0.076 20.565 0.000 1.405 1.702
per_hisp 0.1672 0.023 7.351 0.000 0.122 0.212
per_black 0.1972 0.040 4.954 0.000 0.119 0.275
average_income -0.0003 0.000 -1.836 0.067 -0.001 2.17e-05
educ_coll 0.0612 0.121 0.506 0.613 -0.177 0.299
\n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - "
Omnibus: 113.511 Durbin-Watson: 1.677
Prob(Omnibus): 0.000 Jarque-Bera (JB): 1263.298
Skew: -1.115 Prob(JB): 4.77e-275
Kurtosis: 12.475 Cond. No. 2.71e+05
" - ], - "output_type": "pyout", - "prompt_number": 175, - "text": [ - "\n", - "\"\"\"\n", - " WLS Regression Results \n", - "==============================================================================\n", - "Dep. Variable: m R-squared: 0.704\n", - "Model: WLS Adj. R-squared: 0.699\n", - "Method: Least Squares F-statistic: 149.4\n", - "Date: Fri, 26 Oct 2012 Prob (F-statistic): 8.75e-81\n", - "Time: 08:31:09 Log-Likelihood: -632.76\n", - "No. Observations: 320 AIC: 1278.\n", - "Df Residuals: 314 BIC: 1300.\n", - "Df Model: 5 \n", - "==================================================================================\n", - " coef std err t P>|t| [95.0% Conf. Int.]\n", - "----------------------------------------------------------------------------------\n", - "Intercept 4.5623 2.504 1.822 0.069 -0.364 9.488\n", - "PVI 1.5534 0.076 20.565 0.000 1.405 1.702\n", - "per_hisp 0.1672 0.023 7.351 0.000 0.122 0.212\n", - "per_black 0.1972 0.040 4.954 0.000 0.119 0.275\n", - "average_income -0.0003 0.000 -1.836 0.067 -0.001 2.17e-05\n", - "educ_coll 0.0612 0.121 0.506 0.613 -0.177 0.299\n", - "==============================================================================\n", - "Omnibus: 113.511 Durbin-Watson: 1.677\n", - "Prob(Omnibus): 0.000 Jarque-Bera (JB): 1263.298\n", - "Skew: -1.115 Prob(JB): 4.77e-275\n", - "Kurtosis: 12.475 Cond. No. 2.71e+05\n", - "==============================================================================\n", - "\n", - "The condition number is large, 2.71e+05. This might indicate that there are\n", - "strong multicollinearity or other numerical problems.\n", - "\"\"\"" - ] - } - ], - "prompt_number": 175 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_resid = pandas.DataFrame(zip(m_model.resid, m_regression_data.State), \n", - " columns=[\"resid\", \"State\"])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 176 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_resid_group = state_resid.groupby(\"State\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 177 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "fig, axes = plt.subplots(figsize=(12,8), subplot_kw={\"ylabel\" : \"Residual\",\n", - " \"xlabel\" : \"State\"})\n", - "i = 0\n", - "for state, group in state_resid_group:\n", - " x = [i] * len(group)\n", - " axes.scatter(x, group[\"resid\"], s=91)\n", - " i += 1\n", - "states = m_regression_data.State.unique()\n", - "states.sort()\n", - "#axes.xaxis.get_major_locator().set_params(nbins=len(states))\n", - "axes.margins(.05, .05)\n", - "axes.xaxis.set_ticks(range(31))\n", - "axes.xaxis.set_ticklabels(states);\n", - "for label in axes.xaxis.get_ticklabels():\n", - " label.set_rotation(90)\n", - " label.set_fontsize('large')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "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\nFbuXMx3NmWPh7rsz850t4sILI9M6FqUFa/VqE1demY3Pd26eyaTx5ZdO2rVLvcLK5Yosg/3jj2b2\n7VNo0iRM69ZBGjQIF2u2Ep8P1q+PLMf+888matcOc801AZo0CRZ5ZgyIzMO8Zo2JefMszJljxWLR\nuPNOH506BYu1MNiuXZFlvefPP3O+wwoVwnzyieuPBclKH+l5TkGNG4do1y7Is89mUKtWiMaNQ/j9\nCuPG2fF6Ydo0KZyF/vbtK/hMcHL+7GSqWVPjnnv8XH11gLy8SMtF1arF+34Eg/DllxYGDMgkHD5Z\nFJhYudJCrVohpk9P3XlNS4vKleXYVxyXXhrg/ffdDB/uYOfOyN0kk0nj2mv9PPqot0if62AQPvnE\nis+nUKdOiF69IvOfB4PwxRdWNm408dZbNpo1yyvyMwdGl5UFrVqFEjbiarNFRqBbtow/T9MiD/nd\nemvWGfOiDx1qplKlMDNmOIv88OF552m8+aabDRt8LF5sxuWCNm1CtGhhnIWy9JD8M5vBGbHfrVw5\neO45DyNH5pGbq/D111a+/97CBReE+PxzV7FH+tzuyGjBpEkhpk+3sHRp8ZcBPZ0RX8N0z0tEZmH6\n6gvqh4sl0ftcpYrGnj0/FLtwhsgMI/fdd3rh/KedO00895wjrtug6fC5Ocnng7VrVWbM8DF/vpnN\nm1XCCTjXJnKfQyH46adDrF2rsmOHSqLu0xrxfc7Ojszl/PnnTiZPPs5HHzmZO9fJ+PFFXxnv0CGF\nGTMsDBvmoWvXIO+9Z+ellxy89ZadNm2CPPdcHvPnWzhwoPgliBFfQz3zEpG5ZYvKHXdk5bug0KFD\nKg88kMnRo0XPrVABLrkkSNeu/2XECC/XXRdISOFs5J5nGXkupapW1Rg82Me11/rZuPEElSqVpVat\ncLFu40Ckj/qllxxMnmzl9Hk+O3QIMH58HvXrF/+LkJVVDpcrMuJnij3rjihFLrggTKS3L/8HgBRF\n44ILSuctu2h+/NFCKBT9gaf58y1s3myiRYvU2u9E27lT4ZVX7EyZYiMcjkzv5XBoPP64h/79/YZY\noXLjRpWJE2189FEDvF6F7GyNv/zFy803+6hbN/nbp4dduxRWrzbz/vs2jh9X6dQpgKr6adYsVKQW\nmHAYBgzw8/nnkVHmkzwehalTbdSsGeKxx7yEw6n5OhrVL7+YyMuLfvz67TczGzeaCr0899n8/vSZ\n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\n" - } - ], - "prompt_number": 178 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "demo_data = demo_data.drop(demo_data.index[demo_data['State'] == 'District of Columbia'])\n", - "demo_data.reset_index(drop=True, inplace=True);" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 179 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "exog = demo_data[[\"PVI\", \"per_hisp\", \"per_black\", \"average_income\", \"educ_coll\"]]\n", - "exog[\"const\"] = 1" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 180 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_m = m_model.predict(exog)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 181 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_m" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 182, - "text": [ - "array([-15.3603, -21.5913, -4.9947, -10.5032, 16.1222, 1.9831,\n", - " 10.9647, 14.0814, 2.0932, -4.6139, 18.2001, -25.0872,\n", - " 15.766 , -7.7724, 1.4341, -17.1113, -14.4254, -9.5522,\n", - " 6.7645, 17.5081, 18.4677, 8.2765, 2.5286, -7.98 ,\n", - " -3.1192, -11.1954, -19.0509, 5.3332, 0.9212, 8.2565,\n", - " 10.5848, 19.1612, -1.7616, -16.5408, -0.1307, -24.3894,\n", - " 7.0121, 4.3192, 18.3818, -7.0588, -14.4 , -11.0846,\n", - " -8.1381, -29.2403, 18.9684, -0.9221, 7.9232, -12.3191,\n", - " 3.498 , -31.7474])" - ] - } - ], - "prompt_number": 182 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "unit_m = (state_m - state_m.min())/(state_m.max() - state_m.min())" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 183 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "unit_m *= 2" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 184 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_correction = zip(demo_data.State, unit_m)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 185 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "fig, axes = plt.subplots(figsize=(12,8), subplot_kw={\"ylabel\" : \"Time Uncertainty\",\n", - " \"xlabel\" : \"State\"})\n", - "\n", - "axes.scatter(range(len(unit_m)), unit_m, s=91)\n", - "\n", - "axes.margins(.05, .05)\n", - "axes.xaxis.set_ticks(range(len(unit_m)))\n", - "axes.xaxis.set_ticklabels(demo_data.State);\n", - "for label in axes.xaxis.get_ticklabels():\n", - " label.set_rotation(90)\n", - " label.set_fontsize('large')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "png": "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\n" - } - ], - "prompt_number": 186 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m_correction" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 187, - "text": [ - "[('Alabama', 0.64378739293503406),\n", - " ('Alaska', 0.39899365289624461),\n", - " ('Arizona', 1.0510086330835007),\n", - " ('Arkansas', 0.83460144787235913),\n", - " ('California', 1.8806123579140055),\n", - " ('Colorado', 1.3251405679451049),\n", - " ('Connecticut', 1.6779924829159023),\n", - " ('Delaware', 1.8004372432963116),\n", - " ('Florida', 1.329465611597048),\n", - " ('Georgia', 1.0659702728954288),\n", - " ('Hawaii', 1.9622429470675198),\n", - " ('Idaho', 0.26165481506057381),\n", - " ('Illinois', 1.8666167182198876),\n", - " ('Indiana', 0.94188345895010406),\n", - " ('Iowa', 1.3035708167337279),\n", - " ('Kansas', 0.57499466689906564),\n", - " ('Kentucky', 0.68051576608007691),\n", - " ('Louisiana', 0.87196446188500021),\n", - " ('Maine', 1.5129826861514035),\n", - " ('Maryland', 1.9350556925421645),\n", - " ('Massachusetts', 1.972758329102086),\n", - " ('Michigan', 1.572382623529095),\n", - " ('Minnesota', 1.3465700819595314),\n", - " ('Mississippi', 0.9337304745438173),\n", - " ('Missouri', 1.1246911889623949),\n", - " ('Montana', 0.80740786234605832),\n", - " ('Nebraska', 0.49879580201830931),\n", - " ('Nevada', 1.4567544736098006),\n", - " ('New Hampshire', 1.2834218995227675),\n", - " ('New Jersey', 1.5715997823676553),\n", - " ('New Mexico', 1.6630695718979507),\n", - " ('New York', 2.0),\n", - " ('North Carolina', 1.1780268665681453),\n", - " ('North Dakota', 0.59740688290763611),\n", - " ('Ohio', 1.2420974975622283),\n", - " ('Oklahoma', 0.28906929360446137),\n", - " ('Oregon', 1.5227100227420458),\n", - " ('Pennsylvania', 1.4169161758937938),\n", - " ('Rhode Island', 1.9693830170636866),\n", - " ('South Carolina', 0.96992120743772237),\n", - " ('South Dakota', 0.68151306828176339),\n", - " ('Tennessee', 0.81176165562541391),\n", - " ('Texas', 0.92751616650445501),\n", - " ('Utah', 0.098492882545137092),\n", - " ('Vermont', 1.9924269957578287),\n", - " ('Virginia', 1.2110060089821313),\n", - " ('Washington', 1.5585050874076187),\n", - " ('West Virginia', 0.76326334710489518),\n", - " ('Wisconsin', 1.3846558069742687),\n", - " ('Wyoming', 0.0)]" - ] - } - ], - "prompt_number": 187 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends = pandas.DataFrame(trends, columns=[\"State\", \"trend\"])\n", - "m_correction = pandas.DataFrame(m_correction, columns=[\"State\", \"m_correction\"])" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 188 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends = trends.merge(m_correction, on=\"State\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 189 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends.set_index(\"State\", inplace=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 190, - "text": [ - " trend m_correction\n", - "State \n", - "Arizona 2.315 1.051\n", - "California 2.733 1.881\n", - "Colorado 18.412 1.325\n", - "Connecticut 18.412 1.678\n", - "Florida 2.733 1.329\n", - "Georgia 2.315 1.066\n", - "Hawaii 18.412 1.962\n", - "Illinois 18.412 1.867\n", - "Indiana 6.587 0.942\n", - "Iowa 6.587 1.304\n", - "Kansas 6.587 0.575\n", - "Maine 6.587 1.513\n", - "Maryland 18.412 1.935\n", - "Massachusetts 18.412 1.973\n", - "Michigan 6.587 1.572\n", - "Minnesota 6.587 1.347\n", - "Mississippi 2.315 0.934\n", - "Missouri 6.587 1.125\n", - "Montana 6.587 0.807\n", - "Nebraska 6.587 0.499\n", - "Nevada 18.412 1.457\n", - "New Hampshire 6.587 1.283\n", - "New Jersey 18.412 1.572\n", - "New Mexico 2.315 1.663\n", - "New York 2.733 2.000\n", - "North Carolina 2.315 1.178\n", - "North Dakota 6.587 0.597\n", - "Ohio 6.587 1.242\n", - "Oregon 6.587 1.523\n", - "Pennsylvania 6.587 1.417\n", - "Rhode Island 18.412 1.969\n", - "South Carolina 2.315 0.970\n", - "South Dakota 6.587 0.682\n", - "Tennessee 2.315 0.812\n", - "Texas 2.733 0.928\n", - "Utah 6.587 0.098\n", - "Vermont 6.587 1.992\n", - "Virginia 18.412 1.211\n", - "Washington 18.412 1.559\n", - "West Virginia 2.315 0.763\n", - "Wisconsin 6.587 1.385" - ] - } - ], - "prompt_number": 190 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends = trends.product(axis=1)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 191 - }, - { - "cell_type": "heading", - "level": 3, - "metadata": {}, - "source": [ - "Snapshot: Combine Trend Estimates and State Polls" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_polls.name = \"poll\"\n", - "state_polls" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 192, - "text": [ - "State Pollster \n", - "AZ Public Policy Polling (PPP) -9.168\n", - " Rasmussen -10.209\n", - "CA Field Poll (CA) 23.344\n", - " Public Policy Polling (PPP) 20.999\n", - " Rasmussen 22.000\n", - " SurveyUSA 22.123\n", - "CO American Research Group 2.000\n", - " Public Policy Polling (PPP) 5.470\n", - " Rasmussen -1.574\n", - "CT Public Policy Polling (PPP) 12.758\n", - " Quinnipiac 7.294\n", - " Rasmussen 8.000\n", - "FL American Research Group 5.000\n", - " Mason-Dixon -3.543\n", - " Public Policy Polling (PPP) 3.125\n", - " Quinnipiac 3.076\n", - " Rasmussen 0.883\n", - " Suffolk (NH/MA) -0.003\n", - " SurveyUSA 4.169\n", - "GA Insider Advantage -19.174\n", - " Mason-Dixon -17.000\n", - " Public Policy Polling (PPP) -3.000\n", - " SurveyUSA -7.984\n", - "HI Public Policy Polling (PPP) 27.000\n", - "IA American Research Group 7.000\n", - " Mason-Dixon -3.000\n", - " Public Policy Polling (PPP) 5.879\n", - " Rasmussen -2.749\n", - "IL Chicago Trib. / MarketShares 21.000\n", - "IN Rasmussen -16.000\n", - "KS SurveyUSA -15.875\n", - "MA Public Policy Polling (PPP) 17.580\n", - " Rasmussen 15.107\n", - "MD Public Policy Polling (PPP) 23.000\n", - "ME Public Policy Polling (PPP) 16.038\n", - " Rasmussen 12.000\n", - "MI CNN / Opinion Research 8.000\n", - " EPIC-MRA 7.430\n", - " Mitchell 0.897\n", - " Public Policy Polling (PPP) 7.694\n", - " Rasmussen 11.072\n", - " SurveyUSA 11.000\n", - "MN Public Policy Polling (PPP) 7.335\n", - "MO Public Policy Polling (PPP) -11.225\n", - " Rasmussen -2.486\n", - " SurveyUSA -1.000\n", - "MS Public Policy Polling (PPP) -17.973\n", - "MT Mason-Dixon -9.000\n", - " Public Policy Polling (PPP) -5.003\n", - " Rasmussen -15.641\n", - "NC American Research Group -4.000\n", - " Public Policy Polling (PPP) 0.261\n", - " Rasmussen -5.676\n", - " SurveyUSA 1.987\n", - "ND Mason-Dixon -13.000\n", - " Rasmussen -15.000\n", - "NE Public Policy Polling (PPP) -12.005\n", - " Rasmussen -14.308\n", - "NH American Research Group 4.150\n", - " LA Times / Bloomberg -10.000\n", - " Mason-Dixon -11.000\n", - " Public Policy Polling (PPP) 6.273\n", - " Rasmussen -2.439\n", - "NJ Fairleigh-Dickinson (NJ) 13.859\n", - " Public Policy Polling (PPP) 14.006\n", - " Quinnipiac 7.504\n", - " Rasmussen 6.000\n", - " SurveyUSA 14.000\n", - "NM Public Policy Polling (PPP) 10.621\n", - " Rasmussen 11.651\n", - "NV American Research Group 7.000\n", - " CNN / Opinion Research 3.000\n", - " Public Policy Polling (PPP) 7.345\n", - " Rasmussen 2.524\n", - "NY Marist (NY) 22.047\n", - " Quinnipiac 27.345\n", - " SurveyUSA 30.000\n", - "OH American Research Group 1.000\n", - " Columbus Dispatch (OH) 8.616\n", - " Ohio Poll 3.000\n", - " Public Policy Polling (PPP) 4.142\n", - " Quinnipiac 7.729\n", - " Rasmussen 0.866\n", - "OR Public Policy Polling (PPP) 9.130\n", - " SurveyUSA 8.676\n", - "PA Public Policy Polling (PPP) 6.160\n", - " Quinnipiac 6.047\n", - " Rasmussen 10.875\n", - " SurveyUSA 0.000\n", - "RI Public Policy Polling (PPP) 17.000\n", - "SC Public Policy Polling (PPP) -14.558\n", - "SD Public Policy Polling (PPP) -6.000\n", - "TN Public Policy Polling (PPP) -7.000\n", - "TX Public Policy Polling (PPP) -6.999\n", - "UT Mason-Dixon -51.000\n", - " Public Policy Polling (PPP) -32.000\n", - "VA American Research Group 2.000\n", - " Mason-Dixon 1.000\n", - " Public Policy Polling (PPP) 5.096\n", - " Quinnipiac 0.578\n", - " Rasmussen 0.892\n", - "VT Public Policy Polling (PPP) 20.000\n", - "WA Public Policy Polling (PPP) 13.051\n", - " Rasmussen 11.000\n", - " SurveyUSA 15.310\n", - "WI CNN / Opinion Research 4.000\n", - " Public Policy Polling (PPP) 5.393\n", - " Rasmussen 2.116\n", - "WV Public Policy Polling (PPP) -19.757\n", - "Name: poll, Length: 109" - ] - } - ], - "prompt_number": 192 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "state_polls = state_polls.reset_index()\n", - "state_polls.State = state_polls.State.replace(states_abbrev_dict)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 193 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends.name = \"poll\"\n", - "trends" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 194, - "text": [ - "State\n", - "Arizona 2.433\n", - "California 5.139\n", - "Colorado 24.399\n", - "Connecticut 30.895\n", - "Florida 3.633\n", - "Georgia 2.468\n", - "Hawaii 36.129\n", - "Illinois 34.368\n", - "Indiana 6.204\n", - "Iowa 8.586\n", - "Kansas 3.787\n", - "Maine 9.965\n", - "Maryland 35.628\n", - "Massachusetts 36.323\n", - "Michigan 10.357\n", - "Minnesota 8.869\n", - "Mississippi 2.162\n", - "Missouri 7.408\n", - "Montana 5.318\n", - "Nebraska 3.285\n", - "Nevada 26.822\n", - "New Hampshire 8.453\n", - "New Jersey 28.936\n", - "New Mexico 3.850\n", - "New York 5.465\n", - "North Carolina 2.727\n", - "North Dakota 3.935\n", - "Ohio 8.181\n", - "Oregon 10.029\n", - "Pennsylvania 9.333\n", - "Rhode Island 36.260\n", - "South Carolina 2.245\n", - "South Dakota 4.489\n", - "Tennessee 1.879\n", - "Texas 2.535\n", - "Utah 0.649\n", - "Vermont 13.123\n", - "Virginia 22.297\n", - "Washington 28.695\n", - "West Virginia 1.767\n", - "Wisconsin 9.120\n", - "Name: poll" - ] - } - ], - "prompt_number": 194 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends = trends.reset_index()\n", - "trends[\"Pollster\"] = \"National\"" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 195 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "trends" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 196, - "text": [ - " State poll Pollster\n", - "0 Arizona 2.433 National\n", - "1 California 5.139 National\n", - "2 Colorado 24.399 National\n", - "3 Connecticut 30.895 National\n", - "4 Florida 3.633 National\n", - "5 Georgia 2.468 National\n", - "6 Hawaii 36.129 National\n", - "7 Illinois 34.368 National\n", - "8 Indiana 6.204 National\n", - "9 Iowa 8.586 National\n", - "10 Kansas 3.787 National\n", - "11 Maine 9.965 National\n", - "12 Maryland 35.628 National\n", - "13 Massachusetts 36.323 National\n", - "14 Michigan 10.357 National\n", - "15 Minnesota 8.869 National\n", - "16 Mississippi 2.162 National\n", - "17 Missouri 7.408 National\n", - "18 Montana 5.318 National\n", - "19 Nebraska 3.285 National\n", - "20 Nevada 26.822 National\n", - "21 New Hampshire 8.453 National\n", - "22 New Jersey 28.936 National\n", - "23 New Mexico 3.850 National\n", - "24 New York 5.465 National\n", - "25 North Carolina 2.727 National\n", - "26 North Dakota 3.935 National\n", - "27 Ohio 8.181 National\n", - "28 Oregon 10.029 National\n", - "29 Pennsylvania 9.333 National\n", - "30 Rhode Island 36.260 National\n", - "31 South Carolina 2.245 National\n", - "32 South Dakota 4.489 National\n", - "33 Tennessee 1.879 National\n", - "34 Texas 2.535 National\n", - "35 Utah 0.649 National\n", - "36 Vermont 13.123 National\n", - "37 Virginia 22.297 National\n", - "38 Washington 28.695 National\n", - "39 West Virginia 1.767 National\n", - "40 Wisconsin 9.120 National" - ] - } - ], - "prompt_number": 196 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "polls = pandas.concat((state_polls, trends))" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 197 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "weights" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 198, - "text": [ - " Pollster Weight PIE\n", - "0 ABC / Washington Post 0.95 1.41\n", - "1 American Research Group 0.65 1.76\n", - "2 CBS / New York Times 0.66 1.84\n", - "3 Chicago Trib. / Marke... 1.16 1.13\n", - "4 CNN / Opinion Research 0.77 1.59\n", - "5 Columbus Dispatch (OH) 0.50 6.76\n", - "6 EPIC-MRA 0.75 1.65\n", - "7 Fairleigh-Dickinson (NJ) 0.71 1.72\n", - "8 Field Poll (CA) 1.33 0.88\n", - "9 Fox / Opinion Dynamics 0.79 1.60\n", - "10 Franklin Pierce (NH) 0.74 1.60\n", - "11 Insider Advantage 0.95 1.29\n", - "12 Keystone (PA) 0.64 1.55\n", - "13 LA Times / Bloomberg 0.83 1.44\n", - "14 Marist (NY) 0.69 1.73\n", - "15 Mason-Dixon 1.10 1.15\n", - "16 Mitchell 0.96 1.43\n", - "17 Ohio Poll 1.24 1.05\n", - "18 Public Opinion Strate... 0.63 1.81\n", - "19 Public Policy Polling... 1.05 1.60\n", - "20 Quinnipiac 0.95 1.34\n", - "21 Rasmussen 1.30 0.88\n", - "22 Research 2000 1.01 1.20\n", - "23 Selzer 1.47 0.92\n", - "24 Star Tribune (MN) 0.81 2.01\n", - "25 Strategic Vision 0.95 1.45\n", - "26 Suffolk (NH/MA) 0.77 1.37\n", - "27 SurveyUSA 1.91 0.72\n", - "28 Univ. New Hampshire 1.08 1.26\n", - "29 USA Today / Gallup 0.63 2.01\n", - "30 Zogby 0.64 1.72\n", - "31 Zogby Interactive 0.43 4.74" - ] - } - ], - "prompt_number": 198 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "natl_weight = pandas.DataFrame([[\"National\", weights.Weight.mean(), weights.PIE.mean()]],\n", - " columns=[\"Pollster\", \"Weight\", \"PIE\"])\n", - "weights = pandas.concat((weights, natl_weight)).reset_index(drop=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 199 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "polls = polls.merge(weights, on=\"Pollster\", how=\"left\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 200 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "polls = polls.sort(\"State\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 201 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def weighted_mean(group):\n", - " return (group[\"poll\"] * group[\"Weight\"] / group[\"Weight\"].sum()).sum()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 202 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "group" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 203, - "text": [ - " resid State\n", - "307 5.193 Wisconsin\n", - "308 7.402 Wisconsin\n", - "309 0.246 Wisconsin\n", - "310 9.971 Wisconsin\n", - "311 0.697 Wisconsin\n", - "312 2.648 Wisconsin\n", - "313 -0.300 Wisconsin\n", - "314 0.859 Wisconsin\n", - "315 7.209 Wisconsin\n", - "316 -0.676 Wisconsin\n", - "317 -5.412 Wisconsin\n", - "318 -1.565 Wisconsin\n", - "319 -1.565 Wisconsin" - ] - } - ], - "prompt_number": 203 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results = polls.groupby(\"State\").aggregate(weighted_mean)[\"poll\"]" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 204 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 205, - "text": [ - "State\n", - "Arizona -6.351\n", - "California 19.794\n", - "Colorado 6.947\n", - "Connecticut 13.967\n", - "Florida 2.079\n", - "Georgia -8.969\n", - "Hawaii 31.233\n", - "Illinois 26.869\n", - "Indiana -6.870\n", - "Iowa 2.325\n", - "Kansas -9.541\n", - "Maine 12.734\n", - "Maryland 28.856\n", - "Massachusetts 21.816\n", - "Michigan 8.561\n", - "Minnesota 8.046\n", - "Mississippi -8.637\n", - "Missouri -1.974\n", - "Montana -7.035\n", - "Nebraska -8.663\n", - "Nevada 9.022\n", - "New Hampshire -1.133\n", - "New Jersey 13.545\n", - "New Mexico 9.145\n", - "New York 23.207\n", - "North Carolina -0.590\n", - "North Dakota -9.138\n", - "Ohio 4.384\n", - "Oregon 9.117\n", - "Pennsylvania 5.692\n", - "Rhode Island 25.931\n", - "South Carolina -6.767\n", - "South Dakota -1.136\n", - "Tennessee -2.883\n", - "Texas -2.578\n", - "Utah -29.142\n", - "Vermont 16.811\n", - "Virginia 4.985\n", - "Washington 16.118\n", - "West Virginia -9.776\n", - "Wisconsin 4.909\n", - "Name: poll" - ] - } - ], - "prompt_number": 205 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results = results.reset_index()\n", - "results[\"obama\"] = 0\n", - "results[\"romney\"] = 0\n", - "results.ix[results[\"poll\"] > 0, [\"obama\"]] = 1\n", - "results.ix[results[\"poll\"] < 0, [\"romney\"]] = 1" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 206 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results[[\"State\", \"poll\"]].to_csv(\"/home/skipper/school/talks/538model/2012-predicted.csv\", index=False)" - ], - "language": "python", - "metadata": {}, - "outputs": [] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "electoral_votes = pandas.read_csv(\"/home/skipper/school/seaboldgit/talks/pydata/data/electoral_votes.csv\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 207 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "electoral_votes.sort(\"State\", inplace=True).reset_index(drop=True, inplace=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 208, - "text": [ - " State Votes\n", - "0 Alabama 9\n", - "1 Alaska 3\n", - "2 Arizona 11\n", - "3 Arkansas 6\n", - "4 California 55\n", - "5 Colorado 9\n", - "6 Connecticut 7\n", - "7 Delaware 3\n", - "8 District of Columbia 3\n", - "9 Florida 29\n", - "10 Georgia 16\n", - "11 Hawaii 4\n", - "12 Idaho 4\n", - "13 Illinois 20\n", - "14 Indiana 11\n", - "15 Iowa 6\n", - "16 Kansas 6\n", - "17 Kentucky 8\n", - "18 Louisiana 8\n", - "19 Maine 4\n", - "20 Maryland 10\n", - "21 Massachusetts 11\n", - "22 Michigan 16\n", - "23 Minnesota 10\n", - "24 Mississippi 6\n", - "25 Missouri 10\n", - "26 Montana 3\n", - "27 Nebraska 5\n", - "28 Nevada 6\n", - "29 New Hampshire 4\n", - "30 New Jersey 14\n", - "31 New Mexico 5\n", - "32 New York 29\n", - "33 North Carolina 15\n", - "34 North Dakota 3\n", - "35 Ohio 18\n", - "36 Oklahoma 7\n", - "37 Oregon 7\n", - "38 Pennsylvania 20\n", - "39 Rhode Island 4\n", - "40 South Carolina 9\n", - "41 South Dakota 3\n", - "42 Tennessee 11\n", - "43 Texas 38\n", - "44 Utah 6\n", - "45 Vermont 3\n", - "46 Virginia 13\n", - "47 Washington 12\n", - "48 West Virginia 5\n", - "49 Wisconsin 10\n", - "50 Wyoming 3" - ] - } - ], - "prompt_number": 208 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results = electoral_votes.merge(results, on=\"State\", how=\"left\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 209 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results = results.set_index(\"State\")\n", - "red_states = [\"Alabama\", \"Alaska\", \"Arkansas\", \"Idaho\", \"Kentucky\", \"Louisiana\",\n", - " \"Oklahoma\", \"Wyoming\"]\n", - "blue_states = [\"Delaware\", \"District of Columbia\"]\n", - "results.ix[red_states, [\"romney\"]] = 1\n", - "results.ix[red_states, [\"obama\"]] = 0\n", - "results.ix[blue_states, [\"obama\"]] = 1\n", - "results.ix[blue_states, [\"romney\"]] = 0" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 210 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 211, - "text": [ - " Votes poll obama romney\n", - "State \n", - "Alabama 9 NaN 0 1\n", - "Alaska 3 NaN 0 1\n", - "Arizona 11 -6.351 0 1\n", - "Arkansas 6 NaN 0 1\n", - "California 55 19.794 1 0\n", - "Colorado 9 6.947 1 0\n", - "Connecticut 7 13.967 1 0\n", - "Delaware 3 NaN 1 0\n", - "District of Columbia 3 NaN 1 0\n", - "Florida 29 2.079 1 0\n", - "Georgia 16 -8.969 0 1\n", - "Hawaii 4 31.233 1 0\n", - "Idaho 4 NaN 0 1\n", - "Illinois 20 26.869 1 0\n", - "Indiana 11 -6.870 0 1\n", - "Iowa 6 2.325 1 0\n", - "Kansas 6 -9.541 0 1\n", - "Kentucky 8 NaN 0 1\n", - "Louisiana 8 NaN 0 1\n", - "Maine 4 12.734 1 0\n", - "Maryland 10 28.856 1 0\n", - "Massachusetts 11 21.816 1 0\n", - "Michigan 16 8.561 1 0\n", - "Minnesota 10 8.046 1 0\n", - "Mississippi 6 -8.637 0 1\n", - "Missouri 10 -1.974 0 1\n", - "Montana 3 -7.035 0 1\n", - "Nebraska 5 -8.663 0 1\n", - "Nevada 6 9.022 1 0\n", - "New Hampshire 4 -1.133 0 1\n", - "New Jersey 14 13.545 1 0\n", - "New Mexico 5 9.145 1 0\n", - "New York 29 23.207 1 0\n", - "North Carolina 15 -0.590 0 1\n", - "North Dakota 3 -9.138 0 1\n", - "Ohio 18 4.384 1 0\n", - "Oklahoma 7 NaN 0 1\n", - "Oregon 7 9.117 1 0\n", - "Pennsylvania 20 5.692 1 0\n", - "Rhode Island 4 25.931 1 0\n", - "South Carolina 9 -6.767 0 1\n", - "South Dakota 3 -1.136 0 1\n", - "Tennessee 11 -2.883 0 1\n", - "Texas 38 -2.578 0 1\n", - "Utah 6 -29.142 0 1\n", - "Vermont 3 16.811 1 0\n", - "Virginia 13 4.985 1 0\n", - "Washington 12 16.118 1 0\n", - "West Virginia 5 -9.776 0 1\n", - "Wisconsin 10 4.909 1 0\n", - "Wyoming 3 NaN 0 1" - ] - } - ], - "prompt_number": 211 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results[\"Votes\"].mul(results[\"obama\"]).sum()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 212, - "text": [ - "328.0" - ] - } - ], - "prompt_number": 212 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results[\"Votes\"].mul(results[\"romney\"]).sum()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 213, - "text": [ - "210.0" - ] - } - ], - "prompt_number": 213 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "results" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 214, - "text": [ - " Votes poll obama romney\n", - "State \n", - "Alabama 9 NaN 0 1\n", - "Alaska 3 NaN 0 1\n", - "Arizona 11 -6.351 0 1\n", - "Arkansas 6 NaN 0 1\n", - "California 55 19.794 1 0\n", - "Colorado 9 6.947 1 0\n", - "Connecticut 7 13.967 1 0\n", - "Delaware 3 NaN 1 0\n", - "District of Columbia 3 NaN 1 0\n", - "Florida 29 2.079 1 0\n", - "Georgia 16 -8.969 0 1\n", - "Hawaii 4 31.233 1 0\n", - "Idaho 4 NaN 0 1\n", - "Illinois 20 26.869 1 0\n", - "Indiana 11 -6.870 0 1\n", - "Iowa 6 2.325 1 0\n", - "Kansas 6 -9.541 0 1\n", - "Kentucky 8 NaN 0 1\n", - "Louisiana 8 NaN 0 1\n", - "Maine 4 12.734 1 0\n", - "Maryland 10 28.856 1 0\n", - "Massachusetts 11 21.816 1 0\n", - "Michigan 16 8.561 1 0\n", - "Minnesota 10 8.046 1 0\n", - "Mississippi 6 -8.637 0 1\n", - "Missouri 10 -1.974 0 1\n", - "Montana 3 -7.035 0 1\n", - "Nebraska 5 -8.663 0 1\n", - "Nevada 6 9.022 1 0\n", - "New Hampshire 4 -1.133 0 1\n", - "New Jersey 14 13.545 1 0\n", - "New Mexico 5 9.145 1 0\n", - "New York 29 23.207 1 0\n", - "North Carolina 15 -0.590 0 1\n", - "North Dakota 3 -9.138 0 1\n", - "Ohio 18 4.384 1 0\n", - "Oklahoma 7 NaN 0 1\n", - "Oregon 7 9.117 1 0\n", - "Pennsylvania 20 5.692 1 0\n", - "Rhode Island 4 25.931 1 0\n", - "South Carolina 9 -6.767 0 1\n", - "South Dakota 3 -1.136 0 1\n", - "Tennessee 11 -2.883 0 1\n", - "Texas 38 -2.578 0 1\n", - "Utah 6 -29.142 0 1\n", - "Vermont 3 16.811 1 0\n", - "Virginia 13 4.985 1 0\n", - "Washington 12 16.118 1 0\n", - "West Virginia 5 -9.776 0 1\n", - "Wisconsin 10 4.909 1 0\n", - "Wyoming 3 NaN 0 1" - ] - } - ], - "prompt_number": 214 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TODO:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Divide undecided voters probabilistically." + } + ], + "source": [ + "for _, group in demo_data.groupby(\"kmeans_group\"):\n", + " group = group.index\n", + " group.values.sort()\n", + " print group.values" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 0, 3, 1, 4, 0, 0, 0, 2, 4, 1, 0, 3, 0, 3, 3, 3, 1, 1, 3, 0, 0, 3,\n", + " 0, 1, 3, 3, 3, 0, 0, 0, 3, 4, 1, 3, 3, 3, 3, 3, 0, 1, 3, 1, 4, 3, 0,\n", + " 0, 0, 1, 3, 3], dtype=int32)" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "labels" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Alaska' 'Colorado' 'Connecticut' 'Delaware' 'Hawaii' 'Illinois'\n", + " 'Maryland' 'Massachusetts' 'Minnesota' 'Nevada' 'New Hampshire'\n", + " 'New Jersey' 'Rhode Island' 'Vermont' 'Virginia' 'Washington']\n", + "['Alabama' 'Arkansas' 'Georgia' 'Kentucky' 'Louisiana' 'Mississippi'\n", + " 'North Carolina' 'South Carolina' 'Tennessee' 'West Virginia']\n", + "['District of Columbia']\n", + "['Arizona' 'Idaho' 'Indiana' 'Iowa' 'Kansas' 'Maine' 'Michigan' 'Missouri'\n", + " 'Montana' 'Nebraska' 'New Mexico' 'North Dakota' 'Ohio' 'Oklahoma'\n", + " 'Oregon' 'Pennsylvania' 'South Dakota' 'Utah' 'Wisconsin' 'Wyoming']\n", + "['California' 'Florida' 'New York' 'Texas']\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Do historical adjustments based on how polls changed in the past conditional on \"election environment\"" + } + ], + "source": [ + "demo_data[\"kmeans_labels\"] = labels\n", + "for _, group in demo_data.groupby(\"kmeans_labels\"):\n", + " group = group.index.copy()\n", + " group.values.sort()\n", + " print group.values" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "demo_data = demo_data.reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012.State.replace(states_abbrev_dict, inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012 = state_data2012.merge(demo_data[[\"State\", \"kmeans_labels\"]], on=\"State\")" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "kmeans_groups = state_data2012.groupby(\"kmeans_labels\")" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "group = kmeans_groups.get_group(kmeans_groups.groups.keys()[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Wisconsin', 'New Mexico', 'North Dakota', 'Nebraska', 'Ohio',\n", + " 'Pennsylvania', 'Indiana', 'Iowa', 'Arizona', 'Maine', 'Missouri',\n", + " 'Michigan', 'Montana', 'Kansas', 'Oregon', 'South Dakota', 'Utah'], dtype=object)" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "group.State.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def edit_tick_label(tick_val, tick_pos):\n", + " if tick_val < 0:\n", + " text = str(int(tick_val)).replace(\"-\", \"Romney+\")\n", + " else:\n", + " text = \"Obama+\"+str(int(tick_val))\n", + " return text" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nSZIkder/A65pxbug3V2gAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pandas import lib\n", + "from matplotlib.ticker import FuncFormatter\n", + "fig, axes = plt.subplots(figsize=(12,8))\n", + "\n", + "data = group[[\"poll_date\", \"obama_spread\"]]\n", + "data = pandas.concat((data, national_data2012[[\"poll_date\", \"obama_spread\"]]))\n", + " \n", + "data.sort(\"poll_date\", inplace=True)\n", + "dates = pandas.DatetimeIndex(data.poll_date).asi8\n", + "\n", + "loess_res = sm.nonparametric.lowess(data.obama_spread.values, dates, \n", + " frac=.2, it=3)\n", + "\n", + "dates_x = pandas.to_datetime(dates)\n", + "axes.scatter(dates_x, data[\"obama_spread\"])\n", + "axes.plot(dates_x, loess_res[:,1], color='r')\n", + "axes.yaxis.get_major_locator().set_params(nbins=12)\n", + "axes.yaxis.set_major_formatter(FuncFormatter(edit_tick_label))\n", + "axes.grid(False, axis='x')\n", + "axes.hlines(0, dates_x[0], dates_x[-1], color='black', lw=3)\n", + "axes.margins(0, .05)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "6.3911808457264527" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "loess_res[-7:,1].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAucAAAHaCAYAAACjC+cmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VNX5x/HPYYkGJGDYXHAlVYEiJm74EySiCSqLAlqp\nFrGuFasVsWqtu4m1Kta1WrUKrt0Ud2dAFIW6VeuGWHdwV0AUlE3h+f1xJpBlksyaeyfzfb9e95Xk\nzl2ec+bOzJM7zz3XmRkiIiIiIhK8NkEHICIiIiIinpJzEREREZGQUHIuIiIiIhISSs5FREREREJC\nybmIiIiISEi0CzqAMHHOaegaEREREWkRZubqz9OZ83rMLOHpggsuSGr51jblc/vzte352m61P3/b\nnq/tVvvV9qBjyIf2N0bJuYiIiIhISCg5FxEREREJCSXnaSgvLw86hEDlc/vzte352u4a+dz+fG17\nvra7Rj63X23PX0G33zVV85JvnHOm/hARERGRbHPOYbogVEREREQkvJSci4iIiIiEhJJzEREREZGQ\nUHIuIiIiIhISSs5FREREREJCybmIiIiISEgoORcRERERCQkl5yIiIiIiIaHkXEREREQkJJSci4iI\niIiEhJJzEREREZGQUHIuIiIiIhISSs6zIBqNUlk5lsrKsUSj0aDDEREREZEc4cws6BhCwzln6fZH\nNBpl9OgJrFz5RwAKC89i+vRpDBs2LBMhioiIiEgr4JzDzFyD+UrON8hEcl5ZOZaZM0cBE2JzplFR\n8RAzZtyXdnwiIiIi0jo0lpyrrEVEREREJCTaBR1AazN58gnMnTuBlSv934WFZzF58rRggxIRERGR\nnKCylloyUdYCvu58ypSbAZ+sq95cRERERGpTzXkCMpWci4iIiIg0RTXnIiIiIiIhp+RcRERERCQk\nlJyLiIiIiISEknMRERERkZBQci4iIiIiEhJKzkVEREREQkLJuYiIiIhISCg5FxEREREJCSXnIiIi\nIiIhoeRcRERERCQklJyLiIiIiISEknMRERERkZBQci4iIiIiEhJKzkVEREREQkLJuYiIiIhISCg5\nFxEREREJCSXnIiIiIiIhoeRcRERERCQklJyLiIiIiISEknMRERERkZBQci4iIiIiEhJKzkVERERE\nQkLJuYiIiIhISCg5FxEREREJCSXnIiIiIiIhoeRcRERERCQklJyLiIiIiISEknMRERERkZBQci4i\nIiIiEhJKzkVEREREQkLJuYiIiIhISCg5FxEREREJCSXnIiIiIiIhoeRcRERERCQklJyLiIiIiISE\nknMRERERkZBQci4iIiIiEhJKzkVEREREQkLJuYiIiIhISCg5FxEREREJCSXnIiIiIiIhoeRcRERE\nRCQkmk3OnXO9nHMPOufecc6955y72jnX3jl3tHPuupYIMlHOuV/HYlznnCuuNb/cOfetc+6V2HRu\nkHGKiIiIiMTTZHLunHPA/cD9ZrYDsAOwCVANWPbDazSuo51zF8R5aC6wH7AwzmNPm1lpbKrKboQi\nIiIiIslr7sz5UGClmU0DMLN1wCTgGKADsJVz7qnYWfXza1Zyzk13zr3knJvnnDu+1vzvnHOXx+bP\ndM7t4Zyb7Zx73zk3MrbMts65Z5xzL8emveLEFfcfAzN71cziJeYArpm2ioiIiIgEqrnkvB/wcu0Z\nZrYc+AhoB+wBjAF2Bg5zzu0aW+wYM9sN2B041Tm3aWx+B2CWmf0UWA5cgj/TPRq4OLbMl0CFme0K\njAOujRNXsom2Af/nnHvNOfeYc65vkuuLiIiIiGRdu2Yeb650ZaaZLQVwzt0PDMIn879xzh0SW2Yr\n4CfAi8AaM4vG5r8BrDKztc65ecC2sfkFwPXOuQHAWnwpDc65rsATsWWKgYJa+/iFmb3ZRJz/BbYy\nsxXOuQOBB2q2W9+FF164/vfy8nLKy8ub6QIRERERkabNnj2b2bNnN7ucM2s8/3bO7Qecb2ZDas0r\nAj4AzgP2NLOjY/MvBhYDr+PPiFeY2Srn3FPABWb2jHNuuZl1ii1/AfCdmU2J/b3czDo55y4EOpjZ\nmc65tvgEvn29uCYA25jZxcThnPsQ2NXMvk7mceecNdUfIiIiIiKZ4JzDzBpUgzRZ1mJms4AOzrnx\nsY20BaYAtwMrgArn3KbOuULgYPwFmUXA0lhivhMwMMlYi4AvYr8fBbSN1x6aL21Z/7hzrmfs4lac\nc3vg/ymJm7iLiIiIiAQlkXHOR+Pryd8B3sYn5b+PPfYicB/wGvAvM/svEAHaOefmA38Anqu1rfqn\npS3O738GJjjnXgV2BL6LE5PF2RbOuVOdcx8DWwKvO+dujj10GPBGbJtX42vZRURERERCpcmylnyj\nshYRERERaQkplbWIiIiIiEjLUXIuIiIiIhISSs5FREREREJCybmIiIiISEgoORcRERERCQkl5yIi\nIiIiIaHkXEREREQkJJSci4iIiIiEhJJzEREREZGQUHIuIiIiIhISSs5FREREREJCybmIiIiISEgo\nORcRERERCQkl5yIiIiIiIaHkXEREREQkJJSci4iIiIiEhJJzEREREZGQUHIuIiIiIhISSs5FRERE\nREJCybmIiIiISEgoORcRERERCQkl5yIiIiIiIaHkXEREREQkJJSci4iIiIiEhJJzEREREZGQUHIu\nIiIiIhISSs5FRCRh0WiUysqxVFaOJRqNBh1Oi0mn3fnaZyL16bWQGGdmQccQGs45U3+IiMQXjUYZ\nPXoCK1f+EYDCwrOYPn0aw4YNCziy7Eqn3fnaZyL16bXQkHMOM3MN5isZ3UDJuYhI4yorxzJz5ihg\nQmzONCoqHmLGjPuCDCvr0ml3vvaZSH16LTTUWHKushYRERERkZBoF3QAIiKSGyZPPoG5cyewcqX/\nu7DwLCZPnhZsUC0gnXbna5+J1KfXQuJU1lKLylpERJoWjUaZMuVmwH/Y5ku9aDrtztc+E6lPr4W6\nVHOeACXnIiIiItISVHMuIiIiIhJySs5FREREREJCybmIiIiISEgoORcRERERCQkl5yIiIiIiIaHk\nXEREREQkJJSci4iIiIiEhJJzEREREZGQUHIuIiIiIhISSs5FREREREJCyblIBkSjUSorx1JZOZZo\nNBp0OCKSBXqdSxB03OUfZ2ZBxxAazjlTf0iyotEoo0dPYOXKPwJQWHgW06dPY9iwYQFHJiKZote5\nBEHHXevmnMPMXIP5SkY3iJucz58PffqAa9B3IgBUVo5l5sxRwITYnGlUVDzEjBn3BRmWiGSQXucS\nBB13rVtjybnKWpqybh0cdxyceqr/XUREREQki9oFHUCotWkDjz8OI0bAhAlw223Qvn3QUUnITJ58\nAnPnTmDlSv93YeFZTJ48LdigRCSj9DqXIOi4y08qa6ml0ZrzFSvg0EN9Yv73v8PGG7d8cBJq0WiU\nKVNuBvybqeoBRVofvc4lCDruWi/VnCegyQtC16yBo46Cr76CBx+ETp1aNjgRERERaTVUc56uggK4\n+274yU9gv/1gyZKgIxIRERGRVkbJeTLatoWbboKhQ2GffeDTT4OOSERERERaEV0Qmizn4LLLoEsX\nGDwYZs6E3r2DjkpEREREWgEl56k6+2yfoO+zD0Qi0L9/0BGJiIiISI5Tcp6OX/0KOneG/ff3F4kO\n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\ndzgiNctz17t64dyPjY1x5pkfAYpi/bTTTmtLu/Ppu17o99lyrNfrvPa1p/DjH/+Kvr7dOPXUk9p2\nTpqJ5aij1nDJJVdsF9d8291vv9258MItQHvHWbMigsyM7dZbjN7P4lySJEmLYbbi3DnnkiRJUkVY\nnEuSJEkVYXEuSZIkVYTFuSRJklQRFueSJElSRVicS5IkSRVhcS5JkiRVhMW5JEmSVBEW55IkSVJF\nWJxLkiRJFWFxLkk9oF6vMzS0jqGhddTr9UU/viqWSh7tMJ++2NGx9XqdNWuOZOXK1axZs7aptpuN\npV3nb66P14nx04m/3YXKc7H7r52Pt6ixZ6ZLuRTdIUlLS61Wy76+fRLOSTgn+/r2yVqttmjHV8VS\nyaMd5tMXOzq2Vqvl8uV7JOx13/bly/feYdvNxtKu8zfXx1u+fI9cvnzvRR0/nfjbXai/k8X++2vn\n4y1U7GXduX09OtPKXl0sziUtRYODx5X/qWS5nJODg8ct2vFVsVTyaIf59MWOji22Hd5S283G0q7z\nN/fHay2vdujE3+5C/Z0s9t9fOx9voWKfrTh3WoskSZJUFTNV7L264JVzSUuQ01oKSyWPdnBai9Na\nFuoxF7vdxXg8p7VYnEtS29VqtRwcPC4HB4+bc0Ezn+OrYqnk0Q7z6YsdHVur1XJg4Ijs71+VAwNH\nNdV2s7G06/zN9fE6MX468be7UHkudv+18/EWIvbZivMotgkgItL+kCRJ0kKLCDIzpq93zrkkSZJU\nERbnkiRJUkVYnEuSJEkVYXEuSZIkVYTFuSRJklQRFueSJElSRVicS5IkSRVhcS5JkiRVhMW5JEmS\nVBEW55IkSVJFWJxL6kr1ep2hoXUMDa2jXq93OhxpRktpnHZrLt0ad7u12g+N+5944omsXLmalStX\nMzY2tgjRtm5JnefMdCmXojskVV2tVsu+vn0Szkk4J/v69slardbpsKQpltI47dZcujXudmu1H6bu\nvy5hxX3HwoocHR1dxOh3rlvPc1l3bl+PzrSyVxeLc6k7DA4eVz4JZ7mck4ODx3U6LGmKpTROuzWX\nbo273Vrth6n7r9ru2P7+VYsY/c5163merTh3WoskSZJUEcs6HYAktWpk5CS2bFnPxERxv6/vVEZG\nNnY2KGmapTROuzWXbo273Vrth6n7HwKc3LD1ZE455U0LGG3rltp5juKqugAiIu0PqTvU63U2bDgb\nKJ6Yh4eHOxyRtL2lNE67NZdujbvdWu2Hxv332293LrxwCwCnnPIKTjvttIUNdg668TxHBJkZ2623\nGL2fxbkkSZIWw2zFuXPOJUmSpIqwOJckSZIqwuJckiRJqgiLc0mSJKkiLM4lSZKkirA4lyRJkirC\n4lySJEmqCItzSZIkqSIsziVJkqSKsDiXJEmSKsLiXJIkTVGv1xkaWsfQ0Drq9fqiHduJdjthKeXS\nql7OvVmRmZ2OoTIiIu0PSVIvq9frHHvseiYm3gFAX9+pnHfeRoaHhxf02E602wlLKZdW9XLuM4kI\nMjO2W28xej+Lc0lSrxsaWsfmzUcD68s1Gxkc3MRFF31uQY/tRLudsJRyaVUv5z6T2Ypzp7VIkiRJ\nFbGs0wFIkqTqGBk5iS1b1jMxUdzv6zuVkZGNC35sJ9rthKWUS6t6OfdWOK2lgdNaJEkq5gZv2HA2\nUBRUrcwJns+xnWi3E5ZSLq3q5dync855EyzOJUmStBiccy5JkiRVnMW5JEmSVBEW55IkSVJFWJxL\nkiRJFWFxLkmSJFWExbkkSZJUERbnkiRJUkVYnEuSJEkV0XRxHhH3RMSVEbE1IjZFxEMXMrB2i4gD\nI2KizOHKiDir0zFJkiRJjVq5cv6HzBzIzCcBvwFeu0AxzVtE/GiWTTeUOQxk5msWMyZJkiRpZ+Y6\nreVy4C8AIuKQiPh6RFwVEedGxB7l+vGIODMivhUR34uIw8rtP4iIt5X7HBgR10XE2RFxTUTUI2K3\nctuqiPhSRHw7Ii6NiMdGxO4RcWNELCv3WVHe32VafDnHvCSpMur1OkND6xgaWke9Xu90OJK6mM8n\n3aPl4rwshJ8DXFCu+ijwxsx8MrAVOL1cn8CfMvMpwAfL/f8BeCJwYkTsWe63GnhfZj4RuB1YV64/\nG3h9Zh4GvBE4KzPvBMaBvyr3+Wvgc5l5T5PhP6qc0jIeEUe2mLokLZp6vc6xx65n8+aj2bz5aI49\ndr3/oUqaE59PusuyFvbti4grKa6YXwdsLuedPzQzv1busxH4TMMxm8p/rwGuzcyfA0TEjcABwG+B\nmzLz6nK/7wAHRsSDgWcAn4mIybaWl/9+GHgTRbF/IvDfyjZPA44v99mvjBVgS2a+HrgNOCAzt0XE\nGuD8iHhCWfBLUqVs2HA2ExPvANYDMDFRrBseHu5sYJK6js8n3aWV4nwiMwciog+oA6+jKMYbxbT7\nfyr/vbfh9uT9ZdP2AbgH2I3iiv62zByYHkRmXlZOh1kL7JKZ3yvXjwFjABFx0/RjM/Mu4K7y9hUR\n8UPgIOCKxv3OOOOM+26vXbuWtWvXTg9BkiRJasn4+Djj4+M73a+V4hyAzJyIiJOB84GzgG0RcWRm\nbgFOoJh2Mh+RmXdGxE0RcXxmfjaKy+cHZ+ZV5T4fBT4O/GvTjUbsRVHw3xMRj6YozG+cvl9jcS5J\nnTIychJbtqxnYqK439d3KiMj06+HSNLO+XxSDdMv+r71rW+dcb9W5pzf9yHLzPwucDXFnO/1wL9F\nxFXAwcxcMCezf0hz+vrJ+y8DXhkR36WYFvPChn3+A9gT+ESTbQI8C7iqnO7yGeDVmXn7LMdLUkcN\nDw9z3nkbGRzcxODgJs47b6NvQUuaE59Puktkdt8Xm0TE8cALM3N9m9vNbuwPSZIkdZeIIDOnTwlv\nfVpLp0XEe4Fh4PmdjkWSJElqp668cr5QvHIuSZKkxTDblfO5/giRJEmSpDazOJckSZIqwuJckiRJ\nqgiLc0mSJKkiLM4lSZKkirA4lyRJkirC4lySJEmqCItzSZLU8+r1OkND6xgaWke9Xu90OPepalxa\nOP4IUQN/hEiSpN5Tr9c59tj1TEy8A4C+vlM577yNDA8PG5cWzGw/QmRx3sDiXJKk3jM0tI7Nm48G\n1pdrNjI4uImLLvpcJ8OqbFxqD38hVJIkSaq4ZZ0OQJIkqZNGRk5iy5b1TEwU9/v6TmVkZGNng6K6\ncWlhOa2lgdNaJEnqTfV6nQ0bzgaKorgq87qrGpfmzznnTbA4lyRJ0mJwzrkkSZJUcRbnkiRJUkVY\nnEuSJEkVYXEuSZIkVYTFuSRJklQRFueSJElSRVicS5IkSRVhcS5JkiRVhMW5JEmSVBEW55IkSVJF\nWJxLkiRJFWFxLkmSJFWExbkkSZJUERbn8zA+Pt7pEDqql/Pv1dx7Ne9JvZx/r+beq3lP6uX8zb13\ndTp/i/N56PTJ67Rezr9Xc+/VvCf1cv69mnuv5j2pl/M3997V6fwtziVJkqSKsDiXJEmSKiIys9Mx\nVEZE2BmSJElaFJkZ09dZnEuSJEkV4bQWSZIkqSIsziVJkqSKsDiXJEmSKmLJF+cRcW9EfKzh/rKI\n+GVEXNiGtgcj4tsRcXX577Mbth0aEVsj4vqI+N8N6x8YEZ8q1389Ih7ZsO0d5TFbI+Il842vod3T\nIuKaiLgqIq6MiKe2oc2uyL2h/d+1oY1TIuLash+/HBGPaNi2PiJ+UC5/27D+dRFxQzkO+6e1956y\nL66KiIH5xtfQbtXG/LMi4oqIuDsi1k1rb8Z+a0OcVRnzi557Q/uVGvMR8biIuDwi/hgRI/ONbVqc\n3TTmaxGxrR2xTWu3G8b8guQ+7TGqNu5fVrZzdUT8Z0QcPN/4GtruinEfEYdExGUN43Mp1jftzT0z\nl/QC3AlcAexW3n8ecCWwqQ1tHwI8vLz9BOCWhm3fBJ5a3v4i8Nzy9muAs8rbLwU+Wd7+K+AiihdM\nDyqP370NMT4duAzYtbzfD+zbC7lPHwdtaGNtwzj6+4b4+4EfAnuUyw+BPRr66ZHATUB/Q1vPB75Y\n3n4a8PUlPOYfCTwJ2Aisa9h/1n5bQmN+UXOv+JjfGzgMGAVG2p1rN4z5cttfAi8ALmxj/pUf8wuV\n+0xjoQ1ttHPcPx14aHn7ufTmc/1BwKry9r7AbcCKXhj3c819yV85L32RogAE+BvgE0AARMRTy1c1\nV5Svah9Trr8kIp482UBEbImIJzU2mpnfzcyflXe/B/RFxK4RsS9FcfnNcttHgReVt4+mOHkAnwOe\nU95+PHBpZt6bmX8Arqb4Q56vhwO/ysy7y5h/k5k/LXM6NCLGy1eGtYh4eLl+PCLeXb4K3RoRT5ne\naJfkPkVEPLi8CvKd8hXx0eX6AyPiuog4u3x1W4+I3WbIeTwz/1je/Qawf3l7GLgoM2/PzNuBzZPx\nl/304xnCua8vMvMbwB4RsU8b063MmM/MH2fmVuDeaTHO2m/zVJkx34Hcp6jSmM/MX2bmt4G7251n\nqRvGPJn5VWDeV3en6YYxv1C5b6di4/7yzLxjhrbapfLjPjOvz8wflrd/CvyC4sX6fFV+3M81914p\nzj8F/HVEPJDilc03GrZdBzwzM9cApwNvL9f/X+BEgHJAP7Ds+NmsA75TDpK/AG5p2HZruY7y35sB\nMvPPwB1RvAV2FfDciOiLiL2AZ9OeP+KLgAMi4vsR8f6IeFaZ067Aeyle4R0GfAQYK49JoC8zByiu\ndv+/nTxGVXOfbgI4NjMPpbiCs6Fh22rgfZn5ROD2MqcdeSXFkyLAfkzN+Rbuz3k29/VFwzHtzLlK\nY342c+m3ZlRpzM9moXKfrkpjfqF1w5hfKN0w5hdTVcd9Y1vt0lXjPoppJ7tOFqzz1FXjvpXclzXb\naDfLzK0RcSDFq8ovTNu8B/DRiFhNcdJ2Ldd/FviXiHgj8HcUJ3dGEfEE4H8Cg/OIcXP5Cu4yKlfa\nkQAABDFJREFU4JfA5cxw5WEO7f4+Ig4FnklR9H4qIv478B2Kt2u+HBEAu1C83TLpE+XxX4uIFRGx\nIjN/O739Kuc+gwcA/yMinlm2v19EPKzcdlNmXl3e/g5w4GyNRMTLgTXAP84znuk/PNC2Hx3ohjG/\nULphzC+iqo35BeOYd8w3qNy4j2Le8t8BR8y3rUbdNO7LK88fBdryGZtuGvet5t4TxXlpE/BO4Cim\nvqXwNuArmXlsFB9QHAfIzD9ExGaKtyxeTPEHup2I2B84FzghM28qV9/K1Kug+3P/q61bgUcAt0XE\nMoq5aL8pH/PtlK9sI+LjwPfnk/CkzLwXuAS4JCK2AuspBu+1mfmMZpuZvqIbcp/mZcBewJrMvCci\nbgIm39L8U8N+9wB9MzUQEf8V+GfgWZNvpVHktbZhtwOAr+4kllvL/SbtX65rp06P+ZnyaRxHc+m3\nplRgzHcs92mqNOYXQ9XH/I7WzUsXjPkdrWu3So37KD4E+iGK+cnbWsijWZUf9xGxAvg88M8N00Lm\nrRvG/Vxy75VpLVC8dXFGZl47bf0K7n9F9Ypp2z4MvAf4ZsOcsftExB4Ur1RPzczLJ9eX84p+GxFP\ni+Jl2wnABeXmTRSDB+B44CtlWw+IiJXl7YOBgynespmXiHhMRBzUsGoA+BFF8bt3RBxe7rdrRPyX\nhv1eWq4/Erg9M+/sttxn8FDgF+WT9bMpPsDRtCi+UeWDwAsz81cNm+rAUETsERF7UrzKrs/URMPt\nTZSvoMtzcHtm/ryVeJrQ6TF//vTDmdoHzfZbSyoy5juS+wyqNOZ3tK5dqj7mG9e3TZeM+cb1C60y\n4z6Kb3o5F3h5Zt7QYh7NqvS4j4jlwHnARzPz3FaTm003jPs5555t+tRwVRfgtzOsO4ry08zA4eWJ\nvILiVeaN0/a9Dhiape03U3y45cqGZa9y26HAVuAG4D0NxzwQ+DRwPfB14MBy/W7AteVyGXBwm/Jf\nA/xn2e5VFG9n9ZfbnkzxivO7wDXAK8v1FwPvKvvkauCwbsy94XGXAb8CVpbtX03xZHYtxZX8A4Gr\nG/YfAd4yQzubgZ825Ht+w7ZXlHldD6xvWH8yxdzyuyheYZ/dsO19ZR9dRXGFZ6mO+aeUffC78jxs\n3Vm/LaExv6i5V3nMU3x462bgDmAb8BPgIT045r9G8aGwP5T7DPbQmG977l0w7j8M/LqhrW+2Md+u\nGPfAy8t+aWxr3v/Pd8O4n2vuUR6sGUTEfsDFmfnYTseymCLiYoqvOrui07G0QxSfSv8/mXl4p2Op\nOse8Y77XOOaXxpgHx30rHPfVHve9NK2lJVH8uMDXKeacqUtFxN8D/0HxSlg74JhfGhzzzXPMLx2O\n++Y57qvPK+eSJElSRXjlXJIkSaoIi3NJkiSpIizOJUmSpIqwOJckSZIqwuJckiRJqoj/D0cfP2Oi\nID9nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pandas import lib\n", + "from matplotlib.ticker import FuncFormatter\n", + "fig, axes = plt.subplots(figsize=(12,8))\n", + "\n", + "national_data2012.sort(\"poll_date\", inplace=True)\n", + "dates = pandas.DatetimeIndex(national_data2012.poll_date).asi8\n", + "\n", + "loess_res = sm.nonparametric.lowess(national_data2012.obama_spread.values, dates, \n", + " frac=.075, it=3)\n", + "\n", + "dates_x = pandas.to_datetime(dates)\n", + "axes.scatter(dates_x, national_data2012[\"obama_spread\"])\n", + "axes.plot(dates_x, loess_res[:,1], color='r')\n", + "axes.yaxis.get_major_locator().set_params(nbins=12)\n", + "axes.yaxis.set_major_formatter(FuncFormatter(edit_tick_label))\n", + "axes.grid(False, axis='x')\n", + "axes.hlines(0, dates_x[0], dates_x[-1], color='black', lw=3)\n", + "axes.margins(0, .05)" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "trends = []\n", + "for i, group in kmeans_groups:\n", + " data = group[[\"poll_date\", \"obama_spread\"]]\n", + " data = pandas.concat((data, national_data2012[[\"poll_date\", \"obama_spread\"]]))\n", + " \n", + " data.sort(\"poll_date\", inplace=True)\n", + " dates = pandas.DatetimeIndex(data.poll_date).asi8\n", + "\n", + " loess_res = sm.nonparametric.lowess(data.obama_spread.values, dates, \n", + " frac=.1, it=3)\n", + " states = group.State.unique()\n", + " for state in states:\n", + " trends.append([state, loess_res[-7:,1].mean()])" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[['Washington', 4.5126101123209397],\n", + " ['New Hampshire', 4.5126101123209397],\n", + " ['New Jersey', 4.5126101123209397],\n", + " ['Nevada', 4.5126101123209397],\n", + " ['Colorado', 4.5126101123209397],\n", + " ['Connecticut', 4.5126101123209397],\n", + " ['Virginia', 4.5126101123209397],\n", + " ['Massachusetts', 4.5126101123209397],\n", + " ['Rhode Island', 4.5126101123209397],\n", + " ['Hawaii', 4.5126101123209397],\n", + " ['Vermont', 4.5126101123209397],\n", + " ['Maryland', 4.5126101123209397],\n", + " ['Minnesota', 4.5126101123209397],\n", + " ['Illinois', 4.5126101123209397],\n", + " ['North Carolina', 2.990114760057434],\n", + " ['Georgia', 2.990114760057434],\n", + " ['West Virginia', 2.990114760057434],\n", + " ['South Carolina', 2.990114760057434],\n", + " ['Tennessee', 2.990114760057434],\n", + " ['Mississippi', 2.990114760057434],\n", + " ['Wisconsin', 5.689142600619455],\n", + " ['New Mexico', 5.689142600619455],\n", + " ['North Dakota', 5.689142600619455],\n", + " ['Nebraska', 5.689142600619455],\n", + " ['Ohio', 5.689142600619455],\n", + " ['Pennsylvania', 5.689142600619455],\n", + " ['Indiana', 5.689142600619455],\n", + " ['Iowa', 5.689142600619455],\n", + " ['Arizona', 5.689142600619455],\n", + " ['Maine', 5.689142600619455],\n", + " ['Missouri', 5.689142600619455],\n", + " ['Michigan', 5.689142600619455],\n", + " ['Montana', 5.689142600619455],\n", + " ['Kansas', 5.689142600619455],\n", + " ['Oregon', 5.689142600619455],\n", + " ['South Dakota', 5.689142600619455],\n", + " ['Utah', 5.689142600619455],\n", + " ['Florida', 3.3877002862540975],\n", + " ['California', 3.3877002862540975],\n", + " ['New York', 3.3877002862540975],\n", + " ['Texas', 3.3877002862540975]]" + ] + }, + "execution_count": 111, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trends" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Adjust for sensitivity to time-trends" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\\text{Margin}=X_i+Z_t+\\epsilon$$\n", + "\n", + "where $S_i$ are Pollster:State dummies. In a state with a time-dependent trend, you might write\n", + "\n", + "$$\\text{Margin}=X_i+m*Z_t$$\n", + "\n", + "where $m$ is a multiplier representing uncertainty in the time-trend parameter. Solving for $m$ gives\n", + "\n", + "$$m=\\text{Margin}-\\frac{X_i}{Z_t}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from statsmodels.formula.api import ols, wls" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#pollster_state_dummy = state_data2012.groupby([\"Pollster\", \"State\"])[\"obama_spread\"].mean()\n", + "#daily_dummy = state_data2012.groupby([\"poll_date\"])[\"obama_spread\"].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012[\"pollster_state\"] = state_data2012[\"Pollster\"] + \"-\" + state_data2012[\"State\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There's actually a bug in pandas when you merge on datetimes. In order to avoid it, we need to sort our data now and once again after we merge on dates." + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012.sort(columns=[\"pollster_state\", \"poll_date\"], inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dummy_model = ols(\"obama_spread ~ C(pollster_state) + C(poll_date)\", data=state_data2012).fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The base case is American Research Group-Colorado" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Pollster American Research Group\n", + "State Colorado\n", + "MoE 4\n", + "Obama (D) 49\n", + "Romney (R) 47\n", + "Sample 600\n", + "Spread Obama +2\n", + "obama_spread 2\n", + "poll_date 2012-09-11 00:00:00\n", + "Weight 0.65\n", + "PIE 1.76\n", + "ESS 173.0171\n", + "MESS 173.0171\n", + "time_weight 0.6155722\n", + "kmeans_labels 0\n", + "pollster_state American Research Group-Colorado\n", + "Name: 168, dtype: object" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_data2012.irow(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pollster_state = state_data2012[\"pollster_state\"].unique()\n", + "pollster_state.sort()\n", + "pollster_state_params = dummy_model.params[1:len(pollster_state)] + dummy_model.params[0]\n", + "intercept = dummy_model.params[0]\n", + "X = pandas.DataFrame(zip(pollster_state, np.r_[intercept, pollster_state_params]), \n", + " columns=[\"pollster_state\", \"X\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dates = state_data2012.poll_date.unique()\n", + "dates.sort()\n", + "dates_params = intercept + dummy_model.params[-len(dates):]\n", + "Z = pandas.DataFrame(zip(dates, dates_params), columns=[\"poll_date\", \"Z\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Drop the ones less than 1." + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "Z = Z.ix[np.abs(Z.Z) > 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012 = state_data2012.merge(X, on=\"pollster_state\", sort=False)\n", + "state_data2012 = state_data2012.merge(Z, on=\"poll_date\", sort=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012.sort(columns=[\"pollster_state\", \"poll_date\"], inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_data2012[\"m\"] = state_data2012[\"obama_spread\"].sub(state_data2012[\"X\"].div(state_data2012[\"Z\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#m_dataframe.ix[m_dataframe.pollster_state == \"American Research Group-New Hampshire\"].values" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "m_dataframe = state_data2012[[\"State\", \"m\", \"poll_date\", \"Pollster\", \"pollster_state\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "count 357.000000\n", + "mean 3.364920\n", + "std 9.414260\n", + "min -52.000000\n", + "25% -0.807689\n", + "50% 2.696995\n", + "75% 8.172477\n", + "max 44.255926\n", + "Name: m, dtype: float64" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_dataframe[\"m\"].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "m_size = m_dataframe.groupby(\"pollster_state\").size()" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "pollster_state\n", + "American Research Group-Colorado 1\n", + "American Research Group-Florida 1\n", + "American Research Group-Iowa 1\n", + "American Research Group-Nevada 1\n", + "American Research Group-New Hampshire 3\n", + "American Research Group-North Carolina 1\n", + "American Research Group-Ohio 1\n", + "American Research Group-Virginia 1\n", + "CNN / Opinion Research-Wisconsin 1\n", + "Chicago Trib. / MarketShares-Illinois 1\n", + "Columbus Dispatch (OH)-Ohio 2\n", + "EPIC-MRA-Michigan 8\n", + "Fairleigh-Dickinson (NJ)-New Jersey 3\n", + "Field Poll (CA)-California 6\n", + "Insider Advantage-Georgia 2\n", + "LA Times / Bloomberg-New Hampshire 1\n", + "Marist (NY)-New York 3\n", + "Mason-Dixon-Florida 3\n", + "Mason-Dixon-Georgia 1\n", + "Mason-Dixon-New Hampshire 1\n", + "Mason-Dixon-North Dakota 1\n", + "Mason-Dixon-Utah 1\n", + "Mason-Dixon-Virginia 1\n", + "Mitchell-Michigan 3\n", + "Ohio Poll-Ohio 2\n", + "Public Policy Polling (PPP)-Arizona 7\n", + "Public Policy Polling (PPP)-California 2\n", + "Public Policy Polling (PPP)-Colorado 6\n", + "Public Policy Polling (PPP)-Connecticut 3\n", + "Public Policy Polling (PPP)-Florida 8\n", + " ..\n", + "Rasmussen-Iowa 3\n", + "Rasmussen-Maine 1\n", + "Rasmussen-Massachusetts 4\n", + "Rasmussen-Michigan 2\n", + "Rasmussen-Missouri 7\n", + "Rasmussen-Montana 5\n", + "Rasmussen-Nebraska 2\n", + "Rasmussen-Nevada 3\n", + "Rasmussen-New Hampshire 1\n", + "Rasmussen-New Jersey 1\n", + "Rasmussen-New Mexico 3\n", + "Rasmussen-North Carolina 4\n", + "Rasmussen-North Dakota 1\n", + "Rasmussen-Ohio 7\n", + "Rasmussen-Pennsylvania 4\n", + "Rasmussen-Virginia 5\n", + "Rasmussen-Washington 1\n", + "Rasmussen-Wisconsin 7\n", + "Suffolk (NH/MA)-Florida 2\n", + "SurveyUSA-California 4\n", + "SurveyUSA-Florida 2\n", + "SurveyUSA-Georgia 4\n", + "SurveyUSA-Kansas 2\n", + "SurveyUSA-Michigan 1\n", + "SurveyUSA-New Jersey 1\n", + "SurveyUSA-New York 1\n", + "SurveyUSA-North Carolina 2\n", + "SurveyUSA-Oregon 4\n", + "SurveyUSA-Pennsylvania 1\n", + "SurveyUSA-Washington 4\n", + "dtype: int64" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_size" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "drop_idx = m_size.ix[m_size == 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "m_dataframe = m_dataframe.set_index([\"pollster_state\", \"poll_date\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StatemPollster
poll_date
2012-03-17New Hampshire6.436534American Research Group
2012-06-23New Hampshire0.071010American Research Group
2012-09-26New Hampshire4.054884American Research Group
\n", + "
" + ], + "text/plain": [ + " State m Pollster\n", + "poll_date \n", + "2012-03-17 New Hampshire 6.436534 American Research Group\n", + "2012-06-23 New Hampshire 0.071010 American Research Group\n", + "2012-09-26 New Hampshire 4.054884 American Research Group" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_dataframe.xs(\"American Research Group-New Hampshire\", level=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "m_dataframe = m_dataframe.drop(drop_idx.index, level=0).reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pollster_statepoll_dateStatemPollster
0American Research Group-New Hampshire2012-03-17New Hampshire6.436534American Research Group
1American Research Group-New Hampshire2012-06-23New Hampshire0.071010American Research Group
2American Research Group-New Hampshire2012-09-26New Hampshire4.054884American Research Group
3Columbus Dispatch (OH)-Ohio2012-08-20Ohio1.875520Columbus Dispatch (OH)
4Columbus Dispatch (OH)-Ohio2012-09-24Ohio7.679307Columbus Dispatch (OH)
5EPIC-MRA-Michigan2011-02-15Michigan-4.201071EPIC-MRA
6EPIC-MRA-Michigan2011-07-10Michigan-3.096961EPIC-MRA
7EPIC-MRA-Michigan2011-11-15Michigan-4.201071EPIC-MRA
8EPIC-MRA-Michigan2012-01-23Michigan6.398112EPIC-MRA
9EPIC-MRA-Michigan2012-04-02Michigan-0.219418EPIC-MRA
\n", + "
" + ], + "text/plain": [ + " pollster_state poll_date State m \\\n", + "0 American Research Group-New Hampshire 2012-03-17 New Hampshire 6.436534 \n", + "1 American Research Group-New Hampshire 2012-06-23 New Hampshire 0.071010 \n", + "2 American Research Group-New Hampshire 2012-09-26 New Hampshire 4.054884 \n", + "3 Columbus Dispatch (OH)-Ohio 2012-08-20 Ohio 1.875520 \n", + "4 Columbus Dispatch (OH)-Ohio 2012-09-24 Ohio 7.679307 \n", + "5 EPIC-MRA-Michigan 2011-02-15 Michigan -4.201071 \n", + "6 EPIC-MRA-Michigan 2011-07-10 Michigan -3.096961 \n", + "7 EPIC-MRA-Michigan 2011-11-15 Michigan -4.201071 \n", + "8 EPIC-MRA-Michigan 2012-01-23 Michigan 6.398112 \n", + "9 EPIC-MRA-Michigan 2012-04-02 Michigan -0.219418 \n", + "\n", + " Pollster \n", + "0 American Research Group \n", + "1 American Research Group \n", + "2 American Research Group \n", + "3 Columbus Dispatch (OH) \n", + "4 Columbus Dispatch (OH) \n", + "5 EPIC-MRA \n", + "6 EPIC-MRA \n", + "7 EPIC-MRA \n", + "8 EPIC-MRA \n", + "9 EPIC-MRA " + ] + }, + "execution_count": 204, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_dataframe.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "m_regression_data = m_dataframe.merge(demo_data, on=\"State\")" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pollster_statepoll_dateStatemPollsterper_blackper_hispper_whiteeduc_hseduc_coll...older_popper_olderper_votedem_advno_partyPVIobama_giveromney_givekmeans_groupkmeans_labels
0American Research Group-New Hampshire2012-03-17New Hampshire6.436534American Research Group1.32.992.290.932.9...184547.1600.1400.648-1.513.920.9615630.73399740
1American Research Group-New Hampshire2012-06-23New Hampshire0.071010American Research Group1.32.992.290.932.9...184547.1600.1400.648-1.513.920.9615630.73399740
2American Research Group-New Hampshire2012-09-26New Hampshire4.054884American Research Group1.32.992.290.932.9...184547.1600.1400.648-1.513.920.9615630.73399740
3Public Policy Polling (PPP)-New Hampshire2011-04-02New Hampshire3.118546Public Policy Polling (PPP)1.32.992.290.932.9...184547.1600.1400.648-1.513.920.9615630.73399740
4Public Policy Polling (PPP)-New Hampshire2011-07-03New Hampshire-0.240062Public Policy Polling (PPP)1.32.992.290.932.9...184547.1600.1400.648-1.513.920.9615630.73399740
5Public Policy Polling (PPP)-New Hampshire2012-05-12New Hampshire10.469450Public Policy Polling (PPP)1.32.992.290.932.9...184547.1600.1400.648-1.513.920.9615630.73399740
6Columbus Dispatch (OH)-Ohio2012-08-20Ohio1.875520Columbus Dispatch (OH)12.43.281.087.424.1...1650927.9930.1430.6243.615.4-10.3775480.42766203
7Columbus Dispatch (OH)-Ohio2012-09-24Ohio7.679307Columbus Dispatch (OH)12.43.281.087.424.1...1650927.9930.1430.6243.615.4-10.3775480.42766203
8Ohio Poll-Ohio2011-09-16Ohio4.166959Ohio Poll12.43.281.087.424.1...1650927.9930.1430.6243.615.4-10.3775480.42766203
9Ohio Poll-Ohio2012-08-19Ohio1.501578Ohio Poll12.43.281.087.424.1...1650927.9930.1430.6243.615.4-10.3775480.42766203
\n", + "

10 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " pollster_state poll_date State \\\n", + "0 American Research Group-New Hampshire 2012-03-17 New Hampshire \n", + "1 American Research Group-New Hampshire 2012-06-23 New Hampshire \n", + "2 American Research Group-New Hampshire 2012-09-26 New Hampshire \n", + "3 Public Policy Polling (PPP)-New Hampshire 2011-04-02 New Hampshire \n", + "4 Public Policy Polling (PPP)-New Hampshire 2011-07-03 New Hampshire \n", + "5 Public Policy Polling (PPP)-New Hampshire 2012-05-12 New Hampshire \n", + "6 Columbus Dispatch (OH)-Ohio 2012-08-20 Ohio \n", + "7 Columbus Dispatch (OH)-Ohio 2012-09-24 Ohio \n", + "8 Ohio Poll-Ohio 2011-09-16 Ohio \n", + "9 Ohio Poll-Ohio 2012-08-19 Ohio \n", + "\n", + " m Pollster per_black per_hisp per_white \\\n", + "0 6.436534 American Research Group 1.3 2.9 92.2 \n", + "1 0.071010 American Research Group 1.3 2.9 92.2 \n", + "2 4.054884 American Research Group 1.3 2.9 92.2 \n", + "3 3.118546 Public Policy Polling (PPP) 1.3 2.9 92.2 \n", + "4 -0.240062 Public Policy Polling (PPP) 1.3 2.9 92.2 \n", + "5 10.469450 Public Policy Polling (PPP) 1.3 2.9 92.2 \n", + "6 1.875520 Columbus Dispatch (OH) 12.4 3.2 81.0 \n", + "7 7.679307 Columbus Dispatch (OH) 12.4 3.2 81.0 \n", + "8 4.166959 Ohio Poll 12.4 3.2 81.0 \n", + "9 1.501578 Ohio Poll 12.4 3.2 81.0 \n", + "\n", + " educ_hs educ_coll ... older_pop per_older per_vote \\\n", + "0 90.9 32.9 ... 184547.160 0.140 0.648 \n", + "1 90.9 32.9 ... 184547.160 0.140 0.648 \n", + "2 90.9 32.9 ... 184547.160 0.140 0.648 \n", + "3 90.9 32.9 ... 184547.160 0.140 0.648 \n", + "4 90.9 32.9 ... 184547.160 0.140 0.648 \n", + "5 90.9 32.9 ... 184547.160 0.140 0.648 \n", + "6 87.4 24.1 ... 1650927.993 0.143 0.624 \n", + "7 87.4 24.1 ... 1650927.993 0.143 0.624 \n", + "8 87.4 24.1 ... 1650927.993 0.143 0.624 \n", + "9 87.4 24.1 ... 1650927.993 0.143 0.624 \n", + "\n", + " dem_adv no_party PVI obama_give romney_give kmeans_group \\\n", + "0 -1.5 13.9 2 0.961563 0.733997 4 \n", + "1 -1.5 13.9 2 0.961563 0.733997 4 \n", + "2 -1.5 13.9 2 0.961563 0.733997 4 \n", + "3 -1.5 13.9 2 0.961563 0.733997 4 \n", + "4 -1.5 13.9 2 0.961563 0.733997 4 \n", + "5 -1.5 13.9 2 0.961563 0.733997 4 \n", + "6 3.6 15.4 -1 0.377548 0.427662 0 \n", + "7 3.6 15.4 -1 0.377548 0.427662 0 \n", + "8 3.6 15.4 -1 0.377548 0.427662 0 \n", + "9 3.6 15.4 -1 0.377548 0.427662 0 \n", + "\n", + " kmeans_labels \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 3 \n", + "7 3 \n", + "8 3 \n", + "9 3 \n", + "\n", + "[10 rows x 24 columns]" + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_regression_data.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PVIper_blackper_hispolder_popaverage_incomeromney_giveobama_giveeduc_colleduc_hs
PVI1.000000-0.2947990.1164180.1505100.5950830.2919970.6691930.4942910.225624
per_black-0.2947991.000000-0.1733550.278531-0.0641760.111333-0.280984-0.110643-0.497133
per_hisp0.116418-0.1733551.0000000.4033860.0999820.2896530.3078530.113554-0.564734
older_pop0.1505100.2785310.4033861.0000000.0231830.237119-0.036660-0.074438-0.478205
average_income0.595083-0.0641760.0999820.0231831.0000000.7178600.7046090.8883440.249691
romney_give0.2919970.1113330.2896530.2371190.7178601.0000000.5549000.630611-0.024673
obama_give0.669193-0.2809840.307853-0.0366600.7046090.5549001.0000000.8354240.084808
educ_coll0.494291-0.1106430.113554-0.0744380.8883440.6306110.8354241.0000000.272766
educ_hs0.225624-0.497133-0.564734-0.4782050.249691-0.0246730.0848080.2727661.000000
\n", + "
" + ], + "text/plain": [ + " PVI per_black per_hisp older_pop average_income \\\n", + "PVI 1.000000 -0.294799 0.116418 0.150510 0.595083 \n", + "per_black -0.294799 1.000000 -0.173355 0.278531 -0.064176 \n", + "per_hisp 0.116418 -0.173355 1.000000 0.403386 0.099982 \n", + "older_pop 0.150510 0.278531 0.403386 1.000000 0.023183 \n", + "average_income 0.595083 -0.064176 0.099982 0.023183 1.000000 \n", + "romney_give 0.291997 0.111333 0.289653 0.237119 0.717860 \n", + "obama_give 0.669193 -0.280984 0.307853 -0.036660 0.704609 \n", + "educ_coll 0.494291 -0.110643 0.113554 -0.074438 0.888344 \n", + "educ_hs 0.225624 -0.497133 -0.564734 -0.478205 0.249691 \n", + "\n", + " romney_give obama_give educ_coll educ_hs \n", + "PVI 0.291997 0.669193 0.494291 0.225624 \n", + "per_black 0.111333 -0.280984 -0.110643 -0.497133 \n", + "per_hisp 0.289653 0.307853 0.113554 -0.564734 \n", + "older_pop 0.237119 -0.036660 -0.074438 -0.478205 \n", + "average_income 0.717860 0.704609 0.888344 0.249691 \n", + "romney_give 1.000000 0.554900 0.630611 -0.024673 \n", + "obama_give 0.554900 1.000000 0.835424 0.084808 \n", + "educ_coll 0.630611 0.835424 1.000000 0.272766 \n", + "educ_hs -0.024673 0.084808 0.272766 1.000000 " + ] + }, + "execution_count": 136, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_regression_data[[\"PVI\", \"per_black\", \"per_hisp\", \"older_pop\", \"average_income\", \n", + " \"romney_give\", \"obama_give\", \"educ_coll\", \"educ_hs\"]].corr()" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 199 days\n", + "1 101 days\n", + "2 6 days\n", + "3 549 days\n", + "4 457 days\n", + "5 143 days\n", + "6 43 days\n", + "7 8 days\n", + "8 382 days\n", + "9 44 days\n", + "10 570 days\n", + "11 500 days\n", + "12 353 days\n", + "13 332 days\n", + "14 247 days\n", + "15 150 days\n", + "16 101 days\n", + "17 24 days\n", + "18 3 days\n", + "19 445 days\n", + "20 375 days\n", + "21 348 days\n", + "22 333 days\n", + "23 305 days\n", + "24 263 days\n", + "25 235 days\n", + "26 193 days\n", + "27 157 days\n", + "28 150 days\n", + "29 102 days\n", + " ... \n", + "291 56 days\n", + "292 40 days\n", + "293 19 days\n", + "294 507 days\n", + "295 227 days\n", + "296 108 days\n", + "297 315 days\n", + "298 146 days\n", + "299 61 days\n", + "300 24 days\n", + "301 254 days\n", + "302 29 days\n", + "303 1 days\n", + "304 584 days\n", + "305 500 days\n", + "306 409 days\n", + "307 220 days\n", + "308 87 days\n", + "309 13 days\n", + "310 342 days\n", + "311 218 days\n", + "312 189 days\n", + "313 146 days\n", + "314 112 days\n", + "315 69 days\n", + "316 15 days\n", + "317 211 days\n", + "318 139 days\n", + "319 327 days\n", + "320 317 days\n", + "Name: poll_date, dtype: timedelta64[ns]" + ] + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(today - m_regression_data[\"poll_date\"].astype('O'))" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "time_weights = (today - m_regression_data[\"poll_date\"].astype('O')).apply(exp_decay)" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
WLS Regression Results
Dep. Variable: m R-squared: 0.705
Model: WLS Adj. R-squared: 0.700
Method: Least Squares F-statistic: 150.4
Date: Tue, 24 May 2016 Prob (F-statistic): 3.09e-81
Time: 22:44:53 Log-Likelihood: -1457.5
No. Observations: 321 AIC: 2927.
Df Residuals: 315 BIC: 2950.
Df Model: 5
Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err t P>|t| [95.0% Conf. Int.]
Intercept 4.4405 2.504 1.773 0.077 -0.486 9.367
PVI 1.5550 0.076 20.571 0.000 1.406 1.704
per_hisp 0.1687 0.023 7.422 0.000 0.124 0.213
per_black 0.1975 0.040 4.958 0.000 0.119 0.276
average_income -0.0003 0.000 -1.807 0.072 -0.001 2.64e-05
educ_coll 0.0594 0.121 0.491 0.624 -0.179 0.298
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Omnibus: 110.772 Durbin-Watson: 1.687
Prob(Omnibus): 0.000 Jarque-Bera (JB): 1222.490
Skew: -1.077 Prob(JB): 3.47e-266
Kurtosis: 12.315 Cond. No. 2.71e+05
" + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " WLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: m R-squared: 0.705\n", + "Model: WLS Adj. R-squared: 0.700\n", + "Method: Least Squares F-statistic: 150.4\n", + "Date: Tue, 24 May 2016 Prob (F-statistic): 3.09e-81\n", + "Time: 22:44:53 Log-Likelihood: -1457.5\n", + "No. Observations: 321 AIC: 2927.\n", + "Df Residuals: 315 BIC: 2950.\n", + "Df Model: 5 \n", + "Covariance Type: nonrobust \n", + "==================================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "----------------------------------------------------------------------------------\n", + "Intercept 4.4405 2.504 1.773 0.077 -0.486 9.367\n", + "PVI 1.5550 0.076 20.571 0.000 1.406 1.704\n", + "per_hisp 0.1687 0.023 7.422 0.000 0.124 0.213\n", + "per_black 0.1975 0.040 4.958 0.000 0.119 0.276\n", + "average_income -0.0003 0.000 -1.807 0.072 -0.001 2.64e-05\n", + "educ_coll 0.0594 0.121 0.491 0.624 -0.179 0.298\n", + "==============================================================================\n", + "Omnibus: 110.772 Durbin-Watson: 1.687\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 1222.490\n", + "Skew: -1.077 Prob(JB): 3.47e-266\n", + "Kurtosis: 12.315 Cond. No. 2.71e+05\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "[2] The condition number is large, 2.71e+05. This might indicate that there are\n", + "strong multicollinearity or other numerical problems.\n", + "\"\"\"" + ] + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_model = wls(\"m ~ PVI + per_hisp + per_black + average_income + educ_coll\", data=m_regression_data, weights=time_weights).fit()\n", + "m_model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_resid = pandas.DataFrame(zip(m_model.resid, m_regression_data.State), \n", + " columns=[\"resid\", \"State\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_resid_group = state_resid.groupby(\"State\")" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(figsize=(12,8), subplot_kw={\"ylabel\" : \"Residual\",\n", + " \"xlabel\" : \"State\"})\n", + "i = 0\n", + "for state, group in state_resid_group:\n", + " x = [i] * len(group)\n", + " axes.scatter(x, group[\"resid\"], s=91)\n", + " i += 1\n", + "states = m_regression_data.State.unique()\n", + "states.sort()\n", + "#axes.xaxis.get_major_locator().set_params(nbins=len(states))\n", + "axes.margins(.05, .05)\n", + "axes.xaxis.set_ticks(range(31))\n", + "axes.xaxis.set_ticklabels(states);\n", + "for label in axes.xaxis.get_ticklabels():\n", + " label.set_rotation(90)\n", + " label.set_fontsize('large')" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "demo_data = demo_data.drop(demo_data.index[demo_data['State'] == 'District of Columbia'])\n", + "demo_data.reset_index(drop=True, inplace=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/anaconda/envs/pydata/lib/python2.7/site-packages/ipykernel/__main__.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " from ipykernel import kernelapp as app\n" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\"Error analysis\"" + } + ], + "source": [ + "exog = demo_data[[\"PVI\", \"per_hisp\", \"per_black\", \"average_income\", \"educ_coll\"]]\n", + "exog[\"const\"] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_m = m_model.predict(exog)" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-15.4217, -21.6313, -5.0082, -10.561 , 16.1516, 1.9687,\n", + " 10.9842, 14.074 , 2.0836, -4.6565, 18.1919, -25.1584,\n", + " 15.7641, -7.8211, 1.3951, -17.1674, -14.4888, -9.6044,\n", + " 6.7223, 17.5189, 18.47 , 8.243 , 2.4987, -8.0447,\n", + " -3.1677, -11.2639, -19.1112, 5.3443, 0.8928, 8.2712,\n", + " 10.5977, 19.1728, -1.8028, -16.6034, -0.1732, -24.4563,\n", + " 6.9845, 4.29 , 18.3768, -7.1117, -14.4658, -11.14 ,\n", + " -8.1462, -29.3198, 18.9368, -0.9413, 7.9092, -12.3842,\n", + " 3.4667, -31.8014])" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_m" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "unit_m = (state_m - state_m.min())/(state_m.max() - state_m.min())" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "unit_m *= 2" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "m_correction = zip(demo_data.State, unit_m)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nTozxEytud8o5aR1zyjmp85x+TOriKedCCJtCCCG9/lySJP4TNR4maZ1xsn2p85x+TKqupT3NIYTf\nA14ADJMUS70SyADEGH8thPB/AT8MfA74LPDjMca/KvM89jRLfcLert7madAl9bJqPc2eEVCStGb5\nfJ6pqWnOnj1Tpi72mEcKJPUEk2ZJUstYky5pvTBpliS1zOTkIWZmNlaZ/eQwExPznDr1eJsjk6TG\nmDRLklqiUCgwOrqFhYVrVD6r4xyDgw8yN3fdGmdJXa1rZ8+QJPU2T4MuqV+YNEuSJEk1WJ4hSVo1\nyzMkrSeWZ0iSWmL5NOiZzLGKbTwN+vpVKBSYnZ1ldnaWYrHY6XCklrKnWZK0Jk4513+cl1vrlT3N\nkqSW8TTo/WX5R9LMzEYWFq5RLF6iWLzEwsI1Tp++l507d5PP5zsdptR09jRLkprG06Cvf87LrfXM\neZolSdKaOfBT653lGZIkac2cl1v9zKRZkiRJqsHyDEmSVBfLM9SIQqFALpcDemeMg+UZkiRpzZyX\nW/XI5/NMTh5idHQLY2PTjI1NMzKymYMHH+rpmVXsaZYkSXVzXm5V0+vrhz3NkiSpKZyXW9VMTU2n\nCfNJbi/h2cTS0knm5vZx5MjRToW3JvY0S5KkVXFebpVaDzXv1XqaN7Q7GEmStD5ks1n27NnT6TDU\nJZanJFxYqG9Kwl5bdyzPkCRJkmqwPEOSWqAXp1qSpLVY7+UZ9jRLUhOt16mWJKmW9T4loT3NktQk\nvT7VkiStVa9vB+1plqQ2WM9TLUlSPdbzlIT2NKvrWRuqXrAeavkkqZl6cUpCp5xTXbotOc3n80xN\nTXP27BkGBrYBsLh4lfHxA5w4caxnf6lqfVrvUy1JUqPW25SElmeoKwcuLddEzcxsZGHhGsXiJYrF\nSywsXOP06XvZuXO3g6okSVLbWJ7R57q1YH9y8hAzMxvT2tA7ZTKHmZiY59Spx9sal1SJ5RmS1Puq\nlWeYNPe5bkxOTT7Uq7rx+yRJqp9Js8rq1uR0dnaWsbFpisVLVdtls7s4d+74uqqXWotuq0nvR916\n5EaSVB+nnFNZywOXKifMUDpwSd2pG2vS+9V6nmpJkvqds2eo62zfvp3FxavADar1gC8uXmXHjh1t\njKz73N6zea1k5oYbnD59jLe8ZbeJWpsNDw9z6tTjPPbYq3tuqiVJUmWWZ/Sxbi3PAGtD6+X7JElS\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(figsize=(12,8), subplot_kw={\"ylabel\" : \"Time Uncertainty\",\n", + " \"xlabel\" : \"State\"})\n", + "\n", + "axes.scatter(range(len(unit_m)), unit_m, s=91)\n", + "\n", + "axes.margins(.05, .05)\n", + "axes.xaxis.set_ticks(range(len(unit_m)))\n", + "axes.xaxis.set_ticklabels(demo_data.State);\n", + "for label in axes.xaxis.get_ticklabels():\n", + " label.set_rotation(90)\n", + " label.set_fontsize('large')" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Alabama', 0.64266809431773342),\n", + " ('Alaska', 0.39903009038644149),\n", + " ('Arizona', 1.0512469226033543),\n", + " ('Arkansas', 0.83337963581140184),\n", + " ('California', 1.8814623532136792),\n", + " ('Colorado', 1.3249882703341103),\n", + " ('Connecticut', 1.6787175119991453),\n", + " ('Delaware', 1.7999466163747961),\n", + " ('Florida', 1.3294994223426786),\n", + " ('Georgia', 1.0650469049673186),\n", + " ('Hawaii', 1.9615175450935425),\n", + " ('Idaho', 0.26064183981632583),\n", + " ('Illinois', 1.8662598338917504),\n", + " ('Indiana', 0.94088023761210882),\n", + " ('Iowa', 1.3024853082050096),\n", + " ('Kansas', 0.57417594043008591),\n", + " ('Kentucky', 0.67927212280314431),\n", + " ('Louisiana', 0.87091088640011094),\n", + " ('Maine', 1.5115003017124353),\n", + " ('Maryland', 1.9351096983106113),\n", + " ('Massachusetts', 1.9724278597735232),\n", + " ('Michigan', 1.5711658872393777),\n", + " ('Minnesota', 1.3457855871862934),\n", + " ('Mississippi', 0.93210857837487238),\n", + " ('Missouri', 1.1234597785092251),\n", + " ('Montana', 0.80580138724825001),\n", + " ('Nebraska', 0.49790708186787702),\n", + " ('Nevada', 1.4574319092076853),\n", + " ('New Hampshire', 1.282774139646089),\n", + " ('New Jersey', 1.5722723314665354),\n", + " ('New Mexico', 1.6635531253593678),\n", + " ('New York', 2.0),\n", + " ('North Carolina', 1.1770116288991364),\n", + " ('North Dakota', 0.59630134352742381),\n", + " ('Ohio', 1.2409505020643312),\n", + " ('Oklahoma', 0.28819001562207225),\n", + " ('Oregon', 1.5217875821850322),\n", + " ('Pennsylvania', 1.4160660286631392),\n", + " ('Rhode Island', 1.9687713407242826),\n", + " ('South Carolina', 0.96871534442526586),\n", + " ('South Dakota', 0.68017110979694684),\n", + " ('Tennessee', 0.810661554798627),\n", + " ('Texas', 0.92812466205019539),\n", + " ('Utah', 0.097369058861893648),\n", + " ('Vermont', 1.9907421659897),\n", + " ('Virginia', 1.2108135939642675),\n", + " ('Washington', 1.5580686388761644),\n", + " ('West Virginia', 0.76184689415056239),\n", + " ('Wisconsin', 1.3837649018595504),\n", + " ('Wyoming', 0.0)]" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m_correction" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "trends = pandas.DataFrame(trends, columns=[\"State\", \"trend\"])\n", + "m_correction = pandas.DataFrame(m_correction, columns=[\"State\", \"m_correction\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "trends = trends.merge(m_correction, on=\"State\")" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "trends.set_index(\"State\", inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "trends = trends.product(axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Snapshot: Combine Trend Estimates and State Polls" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "State Pollster \n", + "AZ Public Policy Polling (PPP) -9.168494\n", + " Rasmussen -10.209446\n", + "CA Field Poll (CA) 23.343924\n", + " Public Policy Polling (PPP) 20.999075\n", + " Rasmussen 22.000000\n", + " SurveyUSA 22.123414\n", + "CO American Research Group 2.000000\n", + " Public Policy Polling (PPP) 5.469907\n", + " Rasmussen -1.573788\n", + "CT Public Policy Polling (PPP) 12.757757\n", + " Quinnipiac 7.293983\n", + " Rasmussen 8.000000\n", + "FL American Research Group 5.000000\n", + " Mason-Dixon -3.543178\n", + " Public Policy Polling (PPP) 3.125154\n", + " Quinnipiac 3.075653\n", + " Rasmussen 0.882884\n", + " Suffolk (NH/MA) -0.003377\n", + " SurveyUSA 4.168952\n", + "GA Insider Advantage -19.174054\n", + " Mason-Dixon -17.000000\n", + " Public Policy Polling (PPP) -3.000000\n", + " SurveyUSA -7.983856\n", + "HI Public Policy Polling (PPP) 27.000000\n", + "IA American Research Group 7.000000\n", + " Mason-Dixon -3.000000\n", + " Public Policy Polling (PPP) 5.878693\n", + " Rasmussen -2.749416\n", + "IL Chicago Trib. / MarketShares 21.000000\n", + "IN Rasmussen -16.000000\n", + " ... \n", + "OH Ohio Poll 3.000406\n", + " Public Policy Polling (PPP) 4.141640\n", + " Quinnipiac 7.729397\n", + " Rasmussen 0.865613\n", + "OR Public Policy Polling (PPP) 9.130153\n", + " SurveyUSA 8.675504\n", + "PA Public Policy Polling (PPP) 6.160027\n", + " Quinnipiac 6.047221\n", + " Rasmussen 10.874768\n", + " SurveyUSA 0.000000\n", + "RI Public Policy Polling (PPP) 17.000000\n", + "SC Public Policy Polling (PPP) -14.558484\n", + "SD Public Policy Polling (PPP) -6.000000\n", + "TN Public Policy Polling (PPP) -7.000000\n", + "TX Public Policy Polling (PPP) -6.998595\n", + "UT Mason-Dixon -51.000000\n", + " Public Policy Polling (PPP) -32.000000\n", + "VA American Research Group 2.000000\n", + " Mason-Dixon 1.000000\n", + " Public Policy Polling (PPP) 5.095802\n", + " Quinnipiac 0.578138\n", + " Rasmussen 0.891780\n", + "VT Public Policy Polling (PPP) 20.000000\n", + "WA Public Policy Polling (PPP) 13.050886\n", + " Rasmussen 11.000000\n", + " SurveyUSA 15.310208\n", + "WI CNN / Opinion Research 4.000000\n", + " Public Policy Polling (PPP) 5.392554\n", + " Rasmussen 2.116005\n", + "WV Public Policy Polling (PPP) -19.756631\n", + "Name: poll, dtype: float64" + ] + }, + "execution_count": 156, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_polls.name = \"poll\"\n", + "state_polls" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "state_polls = state_polls.reset_index()\n", + "state_polls.State = state_polls.State.replace(states_abbrev_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "State\n", + "Washington 7.030956\n", + "New Hampshire 5.788660\n", + "New Jersey 7.095052\n", + "Nevada 6.576822\n", + "Colorado 5.979155\n", + "Connecticut 7.575398\n", + "Virginia 5.463930\n", + "Massachusetts 8.900798\n", + "Rhode Island 8.884297\n", + "Hawaii 8.851564\n", + "Vermont 8.983443\n", + "Maryland 8.732396\n", + "Minnesota 6.073006\n", + "Illinois 8.421703\n", + "North Carolina 3.519400\n", + "Georgia 3.184612\n", + "West Virginia 2.278010\n", + "South Carolina 2.896570\n", + "Tennessee 2.423971\n", + "Mississippi 2.787112\n", + "Wisconsin 7.872436\n", + "New Mexico 9.464191\n", + "North Dakota 3.392443\n", + "Nebraska 2.832664\n", + "Ohio 7.059944\n", + "Pennsylvania 8.056202\n", + "Indiana 5.352802\n", + "Iowa 7.410025\n", + "Arizona 5.980694\n", + "Maine 8.599141\n", + "Missouri 6.391523\n", + "Michigan 8.938587\n", + "Montana 4.584319\n", + "Kansas 3.266569\n", + "Oregon 8.657667\n", + "South Dakota 3.869590\n", + "Utah 0.553946\n", + "Florida 4.503946\n", + "California 6.373831\n", + "New York 6.775401\n", + "Texas 3.144208\n", + "Name: poll, dtype: float64" + ] + }, + "execution_count": 158, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trends.name = \"poll\"\n", + "trends" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "trends = trends.reset_index()\n", + "trends[\"Pollster\"] = \"National\"" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StatepollPollster
0Washington7.030956National
1New Hampshire5.788660National
2New Jersey7.095052National
3Nevada6.576822National
4Colorado5.979155National
\n", + "
" + ], + "text/plain": [ + " State poll Pollster\n", + "0 Washington 7.030956 National\n", + "1 New Hampshire 5.788660 National\n", + "2 New Jersey 7.095052 National\n", + "3 Nevada 6.576822 National\n", + "4 Colorado 5.979155 National" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trends.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "polls = pandas.concat((state_polls, trends))" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PollsterWeightPIE
0ABC / Washington Post0.951.41
1American Research Group0.651.76
2CBS / New York Times0.661.84
3Chicago Trib. / MarketShares1.161.13
4CNN / Opinion Research0.771.59
5Columbus Dispatch (OH)0.506.76
6EPIC-MRA0.751.65
7Fairleigh-Dickinson (NJ)0.711.72
8Field Poll (CA)1.330.88
9Fox / Opinion Dynamics0.791.60
\n", + "
" + ], + "text/plain": [ + " Pollster Weight PIE\n", + "0 ABC / Washington Post 0.95 1.41\n", + "1 American Research Group 0.65 1.76\n", + "2 CBS / New York Times 0.66 1.84\n", + "3 Chicago Trib. / MarketShares 1.16 1.13\n", + "4 CNN / Opinion Research 0.77 1.59\n", + "5 Columbus Dispatch (OH) 0.50 6.76\n", + "6 EPIC-MRA 0.75 1.65\n", + "7 Fairleigh-Dickinson (NJ) 0.71 1.72\n", + "8 Field Poll (CA) 1.33 0.88\n", + "9 Fox / Opinion Dynamics 0.79 1.60" + ] + }, + "execution_count": 207, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weights.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "natl_weight = pandas.DataFrame([[\"National\", weights.Weight.mean(), weights.PIE.mean()]],\n", + " columns=[\"Pollster\", \"Weight\", \"PIE\"])\n", + "weights = pandas.concat((weights, natl_weight)).reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "polls = polls.merge(weights, on=\"Pollster\", how=\"left\")" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "polls = polls.sort(\"State\")" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def weighted_mean(group):\n", + " return (group[\"poll\"] * group[\"Weight\"] / group[\"Weight\"].sum()).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
residState
3045.224651Wisconsin
3057.432851Wisconsin
3060.277203Wisconsin
30710.002459Wisconsin
3080.728450Wisconsin
3092.679444Wisconsin
310-0.268988Wisconsin
3110.890637Wisconsin
3127.240347Wisconsin
313-0.644929Wisconsin
314-5.380660Wisconsin
315-1.534117Wisconsin
316-1.534117Wisconsin
\n", + "
" + ], + "text/plain": [ + " resid State\n", + "304 5.224651 Wisconsin\n", + "305 7.432851 Wisconsin\n", + "306 0.277203 Wisconsin\n", + "307 10.002459 Wisconsin\n", + "308 0.728450 Wisconsin\n", + "309 2.679444 Wisconsin\n", + "310 -0.268988 Wisconsin\n", + "311 0.890637 Wisconsin\n", + "312 7.240347 Wisconsin\n", + "313 -0.644929 Wisconsin\n", + "314 -5.380660 Wisconsin\n", + "315 -1.534117 Wisconsin\n", + "316 -1.534117 Wisconsin" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "group" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "results = polls.groupby(\"State\").aggregate(weighted_mean)[\"poll\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "State\n", + "Arizona -5.362448\n", + "California 19.966475\n", + "Colorado 2.667843\n", + "Connecticut 8.936227\n", + "Florida 2.170963\n", + "Georgia -8.858592\n", + "Hawaii 18.584803\n", + "Illinois 15.477867\n", + "Indiana -7.220115\n", + "Iowa 2.111760\n", + "Kansas -9.708495\n", + "Maine 12.353797\n", + "Maryland 16.384295\n", + "Massachusetts 14.174631\n", + "Michigan 8.393170\n", + "Minnesota 6.749915\n", + "Mississippi -8.346582\n", + "Missouri -2.152930\n", + "Montana -7.188138\n", + "Nebraska -8.789196\n", + "Nevada 5.093130\n", + "New Hampshire -1.547056\n", + "New Jersey 10.641219\n", + "New Mexico 10.709465\n", + "New York 23.473550\n", + "North Carolina -0.466602\n", + "North Dakota -9.287194\n", + "Ohio 4.229394\n", + "Oregon 8.794742\n", + "Pennsylvania 5.502556\n", + "Rhode Island 13.236853\n", + "South Carolina -6.464800\n", + "South Dakota -1.423598\n", + "Tennessee -2.630226\n", + "Texas -2.295507\n", + "Utah -29.170239\n", + "Vermont 14.891764\n", + "Virginia 2.420244\n", + "Washington 12.312505\n", + "West Virginia -9.539451\n", + "Wisconsin 4.627744\n", + "Name: poll, dtype: float64" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "results = results.reset_index()\n", + "results[\"obama\"] = 0\n", + "results[\"romney\"] = 0\n", + "results.ix[results[\"poll\"] > 0, [\"obama\"]] = 1\n", + "results.ix[results[\"poll\"] < 0, [\"romney\"]] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "results[[\"State\", \"poll\"]].to_csv(\"./data/2012-predicted.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "electoral_votes = pandas.read_csv(\"./data/electoral_votes.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "electoral_votes.sort(\"State\", inplace=True)\n", + "electoral_votes.reset_index(drop=True, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "results = electoral_votes.merge(results, on=\"State\", how=\"left\")" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "results = results.set_index(\"State\")\n", + "red_states = [\"Alabama\", \"Alaska\", \"Arkansas\", \"Idaho\", \"Kentucky\", \"Louisiana\",\n", + " \"Oklahoma\", \"Wyoming\"]\n", + "blue_states = [\"Delaware\", \"District of Columbia\"]\n", + "results.ix[red_states, [\"romney\"]] = 1\n", + "results.ix[red_states, [\"obama\"]] = 0\n", + "results.ix[blue_states, [\"obama\"]] = 1\n", + "results.ix[blue_states, [\"romney\"]] = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Votespollobamaromney
State
Alabama9NaN01
Alaska3NaN01
Arizona11-5.36244801
Arkansas6NaN01
California5519.96647510
Colorado92.66784310
Connecticut78.93622710
Delaware3NaN10
District of Columbia3NaN10
Florida292.17096310
Georgia16-8.85859201
Hawaii418.58480310
Idaho4NaN01
Illinois2015.47786710
Indiana11-7.22011501
Iowa62.11176010
Kansas6-9.70849501
Kentucky8NaN01
Louisiana8NaN01
Maine412.35379710
Maryland1016.38429510
Massachusetts1114.17463110
Michigan168.39317010
Minnesota106.74991510
Mississippi6-8.34658201
Missouri10-2.15293001
Montana3-7.18813801
Nebraska5-8.78919601
Nevada65.09313010
New Hampshire4-1.54705601
New Jersey1410.64121910
New Mexico510.70946510
New York2923.47355010
North Carolina15-0.46660201
North Dakota3-9.28719401
Ohio184.22939410
Oklahoma7NaN01
Oregon78.79474210
Pennsylvania205.50255610
Rhode Island413.23685310
South Carolina9-6.46480001
South Dakota3-1.42359801
Tennessee11-2.63022601
Texas38-2.29550701
Utah6-29.17023901
Vermont314.89176410
Virginia132.42024410
Washington1212.31250510
West Virginia5-9.53945101
Wisconsin104.62774410
Wyoming3NaN01
\n", + "
" + ], + "text/plain": [ + " Votes poll obama romney\n", + "State \n", + "Alabama 9 NaN 0 1\n", + "Alaska 3 NaN 0 1\n", + "Arizona 11 -5.362448 0 1\n", + "Arkansas 6 NaN 0 1\n", + "California 55 19.966475 1 0\n", + "Colorado 9 2.667843 1 0\n", + "Connecticut 7 8.936227 1 0\n", + "Delaware 3 NaN 1 0\n", + "District of Columbia 3 NaN 1 0\n", + "Florida 29 2.170963 1 0\n", + "Georgia 16 -8.858592 0 1\n", + "Hawaii 4 18.584803 1 0\n", + "Idaho 4 NaN 0 1\n", + "Illinois 20 15.477867 1 0\n", + "Indiana 11 -7.220115 0 1\n", + "Iowa 6 2.111760 1 0\n", + "Kansas 6 -9.708495 0 1\n", + "Kentucky 8 NaN 0 1\n", + "Louisiana 8 NaN 0 1\n", + "Maine 4 12.353797 1 0\n", + "Maryland 10 16.384295 1 0\n", + "Massachusetts 11 14.174631 1 0\n", + "Michigan 16 8.393170 1 0\n", + "Minnesota 10 6.749915 1 0\n", + "Mississippi 6 -8.346582 0 1\n", + "Missouri 10 -2.152930 0 1\n", + "Montana 3 -7.188138 0 1\n", + "Nebraska 5 -8.789196 0 1\n", + "Nevada 6 5.093130 1 0\n", + "New Hampshire 4 -1.547056 0 1\n", + "New Jersey 14 10.641219 1 0\n", + "New Mexico 5 10.709465 1 0\n", + "New York 29 23.473550 1 0\n", + "North Carolina 15 -0.466602 0 1\n", + "North Dakota 3 -9.287194 0 1\n", + "Ohio 18 4.229394 1 0\n", + "Oklahoma 7 NaN 0 1\n", + "Oregon 7 8.794742 1 0\n", + "Pennsylvania 20 5.502556 1 0\n", + "Rhode Island 4 13.236853 1 0\n", + "South Carolina 9 -6.464800 0 1\n", + "South Dakota 3 -1.423598 0 1\n", + "Tennessee 11 -2.630226 0 1\n", + "Texas 38 -2.295507 0 1\n", + "Utah 6 -29.170239 0 1\n", + "Vermont 3 14.891764 1 0\n", + "Virginia 13 2.420244 1 0\n", + "Washington 12 12.312505 1 0\n", + "West Virginia 5 -9.539451 0 1\n", + "Wisconsin 10 4.627744 1 0\n", + "Wyoming 3 NaN 0 1" + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "328.0" + ] + }, + "execution_count": 177, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[\"Votes\"].mul(results[\"obama\"]).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "210.0" + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[\"Votes\"].mul(results[\"romney\"]).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Votespollobamaromney
State
Alabama9NaN01
Alaska3NaN01
Arizona11-5.36244801
Arkansas6NaN01
California5519.96647510
Colorado92.66784310
Connecticut78.93622710
Delaware3NaN10
District of Columbia3NaN10
Florida292.17096310
Georgia16-8.85859201
Hawaii418.58480310
Idaho4NaN01
Illinois2015.47786710
Indiana11-7.22011501
Iowa62.11176010
Kansas6-9.70849501
Kentucky8NaN01
Louisiana8NaN01
Maine412.35379710
Maryland1016.38429510
Massachusetts1114.17463110
Michigan168.39317010
Minnesota106.74991510
Mississippi6-8.34658201
Missouri10-2.15293001
Montana3-7.18813801
Nebraska5-8.78919601
Nevada65.09313010
New Hampshire4-1.54705601
New Jersey1410.64121910
New Mexico510.70946510
New York2923.47355010
North Carolina15-0.46660201
North Dakota3-9.28719401
Ohio184.22939410
Oklahoma7NaN01
Oregon78.79474210
Pennsylvania205.50255610
Rhode Island413.23685310
South Carolina9-6.46480001
South Dakota3-1.42359801
Tennessee11-2.63022601
Texas38-2.29550701
Utah6-29.17023901
Vermont314.89176410
Virginia132.42024410
Washington1212.31250510
West Virginia5-9.53945101
Wisconsin104.62774410
Wyoming3NaN01
\n", + "
" + ], + "text/plain": [ + " Votes poll obama romney\n", + "State \n", + "Alabama 9 NaN 0 1\n", + "Alaska 3 NaN 0 1\n", + "Arizona 11 -5.362448 0 1\n", + "Arkansas 6 NaN 0 1\n", + "California 55 19.966475 1 0\n", + "Colorado 9 2.667843 1 0\n", + "Connecticut 7 8.936227 1 0\n", + "Delaware 3 NaN 1 0\n", + "District of Columbia 3 NaN 1 0\n", + "Florida 29 2.170963 1 0\n", + "Georgia 16 -8.858592 0 1\n", + "Hawaii 4 18.584803 1 0\n", + "Idaho 4 NaN 0 1\n", + "Illinois 20 15.477867 1 0\n", + "Indiana 11 -7.220115 0 1\n", + "Iowa 6 2.111760 1 0\n", + "Kansas 6 -9.708495 0 1\n", + "Kentucky 8 NaN 0 1\n", + "Louisiana 8 NaN 0 1\n", + "Maine 4 12.353797 1 0\n", + "Maryland 10 16.384295 1 0\n", + "Massachusetts 11 14.174631 1 0\n", + "Michigan 16 8.393170 1 0\n", + "Minnesota 10 6.749915 1 0\n", + "Mississippi 6 -8.346582 0 1\n", + "Missouri 10 -2.152930 0 1\n", + "Montana 3 -7.188138 0 1\n", + "Nebraska 5 -8.789196 0 1\n", + "Nevada 6 5.093130 1 0\n", + "New Hampshire 4 -1.547056 0 1\n", + "New Jersey 14 10.641219 1 0\n", + "New Mexico 5 10.709465 1 0\n", + "New York 29 23.473550 1 0\n", + "North Carolina 15 -0.466602 0 1\n", + "North Dakota 3 -9.287194 0 1\n", + "Ohio 18 4.229394 1 0\n", + "Oklahoma 7 NaN 0 1\n", + "Oregon 7 8.794742 1 0\n", + "Pennsylvania 20 5.502556 1 0\n", + "Rhode Island 4 13.236853 1 0\n", + "South Carolina 9 -6.464800 0 1\n", + "South Dakota 3 -1.423598 0 1\n", + "Tennessee 11 -2.630226 0 1\n", + "Texas 38 -2.295507 0 1\n", + "Utah 6 -29.170239 0 1\n", + "Vermont 3 14.891764 1 0\n", + "Virginia 13 2.420244 1 0\n", + "Washington 12 12.312505 1 0\n", + "West Virginia 5 -9.539451 0 1\n", + "Wisconsin 10 4.627744 1 0\n", + "Wyoming 3 NaN 0 1" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "TODO:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Divide undecided voters probabilistically." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do historical adjustments based on how polls changed in the past conditional on \"election environment\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Error analysis\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Error Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Polling errors are from sample variance and other ambiguities inherent to polling\n", + "\n", + "Model the Polling error, based on these factors:\n", + "\n", + "* The error is higher in races with fewer polls\n", + "* The error is higher in races where the polls disagree with one another.\n", + "* The error is higher when there are a larger number of undecided voters.\n", + "* The error is higher when the margin between the two candidates is lopsided.\n", + "* The error is higher the further one is from Election Day.\n", + "\n", + "We don't have the data to model this but we will guestimate so we can show you the full process.\n", + "\n", + "We need error estimates for each state (local error) and for the generic ballot (national error). These are combined to get the total error for each state.\n", + "\n", + "The national error creates correlation between the state results.\n", + "\n", + "$$\n", + "LocalError = \\sqrt{TotalError^{2} + NationalError^{2}}\n", + "$$\n", + "\n", + "\n", + "\n", + "Source: http://fivethirtyeight.blogs.nytimes.com/methodology/?_r=0" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Colorado 3\n", + "Florida 3\n", + "Iowa 3\n", + "New Hampshire 3\n", + "Nevada 3\n", + "Ohio 3\n", + "Virginia 3\n", + "Wisconsin 3\n", + "dtype: float64" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "national_margin_of_error = 3.0\n", + "local_margin_of_error = Series(np.array([3.0] * 8), index=tossup)\n", + "local_margin_of_error" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.random.seed(1)\n", + "N = 10000\n", + "local_error_sim = DataFrame(np.random.randn(N, len(tossup)), columns=tossup).multiply(local_margin_of_error)\n", + "national_error_sim = Series(np.random.randn(N) * national_margin_of_error)" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ColoradoFloridaIowaNew HampshireNevadaOhioVirginiaWisconsin
04.873036-1.835269-1.584515-3.2189062.596223-6.9046165.234435-2.283621
10.957117-0.7481114.386324-6.180422-0.967252-1.1521633.401308-3.299674
2-0.517285-2.6335750.1266411.748446-3.3018583.4341712.7047721.507483
32.702568-2.051184-0.368671-2.807308-0.8036641.591066-2.074982-1.190261
4-2.061518-2.535617-2.013738-0.037994-3.3519310.7032474.9794072.226132
5-0.575507-2.662887-2.2414755.0773640.152423-1.9109870.5727466.300765
60.3604771.8516090.900511-1.056750-3.427555-1.048028-0.6266831.759870
72.5169502.7933060.8567622.655423-2.2631943.7586041.538789-0.894279
81.465554-0.2267153.3948884.5594506.556726-4.189489-4.332341-1.513398
90.4801112.6285070.946905-6.066604-0.9186122.4839240.6902842.286034
\n", + "
" + ], + "text/plain": [ + " Colorado Florida Iowa New Hampshire Nevada Ohio Virginia \\\n", + "0 4.873036 -1.835269 -1.584515 -3.218906 2.596223 -6.904616 5.234435 \n", + "1 0.957117 -0.748111 4.386324 -6.180422 -0.967252 -1.152163 3.401308 \n", + "2 -0.517285 -2.633575 0.126641 1.748446 -3.301858 3.434171 2.704772 \n", + "3 2.702568 -2.051184 -0.368671 -2.807308 -0.803664 1.591066 -2.074982 \n", + "4 -2.061518 -2.535617 -2.013738 -0.037994 -3.351931 0.703247 4.979407 \n", + "5 -0.575507 -2.662887 -2.241475 5.077364 0.152423 -1.910987 0.572746 \n", + "6 0.360477 1.851609 0.900511 -1.056750 -3.427555 -1.048028 -0.626683 \n", + "7 2.516950 2.793306 0.856762 2.655423 -2.263194 3.758604 1.538789 \n", + "8 1.465554 -0.226715 3.394888 4.559450 6.556726 -4.189489 -4.332341 \n", + "9 0.480111 2.628507 0.946905 -6.066604 -0.918612 2.483924 0.690284 \n", + "\n", + " Wisconsin \n", + "0 -2.283621 \n", + "1 -3.299674 \n", + "2 1.507483 \n", + "3 -1.190261 \n", + "4 2.226132 \n", + "5 6.300765 \n", + "6 1.759870 \n", + "7 -0.894279 \n", + "8 -1.513398 \n", + "9 2.286034 " + ] + }, + "execution_count": 182, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# local error deviations\n", + "local_error_sim.iloc[:10,]" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ColoradoFloridaIowaNew HampshireNevadaOhioVirginiaWisconsin
08.7100562.0017512.2525050.6181146.433243-3.0675969.0714561.553400
10.472249-1.2329793.901456-6.665290-1.452120-1.6370312.916440-3.784542
2-2.403524-4.519815-1.759598-0.137794-5.1880971.5479320.818533-0.378756
3-1.191917-5.945668-4.263155-6.701793-4.698149-2.303418-5.969467-5.084745
41.7939511.3198521.8417303.8174750.5035384.5587168.8348756.081601
5-2.572048-4.659428-4.2380163.080822-1.844118-3.907528-1.4237954.304224
6-0.1587401.3323930.381295-1.575966-3.946771-1.567245-1.1458991.240653
72.7451833.0215391.0849942.883656-2.0349613.9868371.767022-0.666046
81.9630820.2708123.8924165.0569787.054254-3.691961-3.834814-1.015870
9-3.459845-1.311450-2.993052-10.006560-4.858569-1.456033-3.249672-1.653923
\n", + "
" + ], + "text/plain": [ + " Colorado Florida Iowa New Hampshire Nevada Ohio Virginia \\\n", + "0 8.710056 2.001751 2.252505 0.618114 6.433243 -3.067596 9.071456 \n", + "1 0.472249 -1.232979 3.901456 -6.665290 -1.452120 -1.637031 2.916440 \n", + "2 -2.403524 -4.519815 -1.759598 -0.137794 -5.188097 1.547932 0.818533 \n", + "3 -1.191917 -5.945668 -4.263155 -6.701793 -4.698149 -2.303418 -5.969467 \n", + "4 1.793951 1.319852 1.841730 3.817475 0.503538 4.558716 8.834875 \n", + "5 -2.572048 -4.659428 -4.238016 3.080822 -1.844118 -3.907528 -1.423795 \n", + "6 -0.158740 1.332393 0.381295 -1.575966 -3.946771 -1.567245 -1.145899 \n", + "7 2.745183 3.021539 1.084994 2.883656 -2.034961 3.986837 1.767022 \n", + "8 1.963082 0.270812 3.892416 5.056978 7.054254 -3.691961 -3.834814 \n", + "9 -3.459845 -1.311450 -2.993052 -10.006560 -4.858569 -1.456033 -3.249672 \n", + "\n", + " Wisconsin \n", + "0 1.553400 \n", + "1 -3.784542 \n", + "2 -0.378756 \n", + "3 -5.084745 \n", + "4 6.081601 \n", + "5 4.304224 \n", + "6 1.240653 \n", + "7 -0.666046 \n", + "8 -1.015870 \n", + "9 -1.653923 " + ] + }, + "execution_count": 183, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# total error deviations\n", + "total_error_sim = local_error_sim.add(national_error_sim, axis='rows')\n", + "total_error_sim.iloc[:10,]" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ColoradoFloridaIowaNew HampshireNevadaOhioVirginiaWisconsin
011.3779004.1727144.364265-0.92894211.5263731.16179911.4917006.181143
13.1400930.9379846.013216-8.2123463.6410102.5923635.3366850.843202
20.264319-2.3488520.352162-1.684850-0.0949675.7773263.2387774.248987
31.475926-3.774705-2.151395-8.2488490.3949811.925976-3.549223-0.457002
44.4617943.4908153.9534912.2704195.5966688.78811011.25511910.709345
50.095795-2.488465-2.1262561.5337663.2490120.3218660.9964498.931968
62.5091043.5033562.493055-3.1230221.1463592.6621501.2743455.868397
75.4130265.1925023.1967551.3366003.0581698.2162314.1872663.961697
84.6309252.4417756.0041763.50992212.1473840.537433-1.4145703.611874
9-0.7920020.859513-0.881291-11.5536160.2345612.773362-0.8294282.973821
\n", + "
" + ], + "text/plain": [ + " Colorado Florida Iowa New Hampshire Nevada Ohio \\\n", + "0 11.377900 4.172714 4.364265 -0.928942 11.526373 1.161799 \n", + "1 3.140093 0.937984 6.013216 -8.212346 3.641010 2.592363 \n", + "2 0.264319 -2.348852 0.352162 -1.684850 -0.094967 5.777326 \n", + "3 1.475926 -3.774705 -2.151395 -8.248849 0.394981 1.925976 \n", + "4 4.461794 3.490815 3.953491 2.270419 5.596668 8.788110 \n", + "5 0.095795 -2.488465 -2.126256 1.533766 3.249012 0.321866 \n", + "6 2.509104 3.503356 2.493055 -3.123022 1.146359 2.662150 \n", + "7 5.413026 5.192502 3.196755 1.336600 3.058169 8.216231 \n", + "8 4.630925 2.441775 6.004176 3.509922 12.147384 0.537433 \n", + "9 -0.792002 0.859513 -0.881291 -11.553616 0.234561 2.773362 \n", + "\n", + " Virginia Wisconsin \n", + "0 11.491700 6.181143 \n", + "1 5.336685 0.843202 \n", + "2 3.238777 4.248987 \n", + "3 -3.549223 -0.457002 \n", + "4 11.255119 10.709345 \n", + "5 0.996449 8.931968 \n", + "6 1.274345 5.868397 \n", + "7 4.187266 3.961697 \n", + "8 -1.414570 3.611874 \n", + "9 -0.829428 2.973821 " + ] + }, + "execution_count": 184, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# to that we add the model predictions for each state\n", + "simulated_poll_predictions = total_error_sim.add(results.ix[tossup, 'poll'])\n", + "simulated_poll_predictions.iloc[:10,]" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ColoradoFloridaIowaNew HampshireNevadaOhioVirginiaWisconsin
Colorado1.0000000.4959280.4935050.5034380.5008320.5051760.4992510.502516
Florida0.4959281.0000000.5048590.4845770.4957630.4946720.4939930.501656
Iowa0.4935050.5048591.0000000.4932130.4896250.5029770.4966650.505508
New Hampshire0.5034380.4845770.4932131.0000000.5054070.5002510.5056160.506102
Nevada0.5008320.4957630.4896250.5054071.0000000.4975300.4918020.504529
Ohio0.5051760.4946720.5029770.5002510.4975301.0000000.4914980.493094
Virginia0.4992510.4939930.4966650.5056160.4918020.4914981.0000000.499111
Wisconsin0.5025160.5016560.5055080.5061020.5045290.4930940.4991111.000000
\n", + "
" + ], + "text/plain": [ + " Colorado Florida Iowa New Hampshire Nevada \\\n", + "Colorado 1.000000 0.495928 0.493505 0.503438 0.500832 \n", + "Florida 0.495928 1.000000 0.504859 0.484577 0.495763 \n", + "Iowa 0.493505 0.504859 1.000000 0.493213 0.489625 \n", + "New Hampshire 0.503438 0.484577 0.493213 1.000000 0.505407 \n", + "Nevada 0.500832 0.495763 0.489625 0.505407 1.000000 \n", + "Ohio 0.505176 0.494672 0.502977 0.500251 0.497530 \n", + "Virginia 0.499251 0.493993 0.496665 0.505616 0.491802 \n", + "Wisconsin 0.502516 0.501656 0.505508 0.506102 0.504529 \n", + "\n", + " Ohio Virginia Wisconsin \n", + "Colorado 0.505176 0.499251 0.502516 \n", + "Florida 0.494672 0.493993 0.501656 \n", + "Iowa 0.502977 0.496665 0.505508 \n", + "New Hampshire 0.500251 0.505616 0.506102 \n", + "Nevada 0.497530 0.491802 0.504529 \n", + "Ohio 1.000000 0.491498 0.493094 \n", + "Virginia 0.491498 1.000000 0.499111 \n", + "Wisconsin 0.493094 0.499111 1.000000 " + ] + }, + "execution_count": 185, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "simulated_poll_predictions.corr()" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DemWinPctRepWinPct
Colorado0.74530.2547
Florida0.69370.3063
Iowa0.69370.3063
New Hampshire0.35410.6459
Nevada0.88710.1129
Ohio0.83730.1627
Virginia0.72350.2765
Wisconsin0.87170.1283
\n", + "
" + ], + "text/plain": [ + " DemWinPct RepWinPct\n", + "Colorado 0.7453 0.2547\n", + "Florida 0.6937 0.3063\n", + "Iowa 0.6937 0.3063\n", + "New Hampshire 0.3541 0.6459\n", + "Nevada 0.8871 0.1129\n", + "Ohio 0.8373 0.1627\n", + "Virginia 0.7235 0.2765\n", + "Wisconsin 0.8717 0.1283" + ] + }, + "execution_count": 186, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wins = DataFrame([sum(simulated_poll_predictions[s] > 0) / float(N) for s in tossup], index=tossup, columns=[\"DemWinPct\"])\n", + "wins['RepWinPct'] = 1 - wins['DemWinPct']\n", + "wins" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "bins = np.arange(-10, 10, 0.2)\n", + "histograms = {s: np.histogram(simulated_poll_predictions[s], bins=bins, density=True)[0] for s in tossup}" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nBNZZazdZa/3AW8D51QtYa7+31haGducBSQ2tKyIiIiIiIlJdfUFqNyCz2v7W0GcHMhX470HWFRER\nOaYZY/bZREREZH++eo43eByuMWYccD0wtrF1RURERERERKD+IHUb0L3afnfcHtF9hJIlPQdMtNYW\nNKYuwLRp0/a8T0lJISUlpZ5miYiIiIiISEuUmppKamrqQdevL3GSDzf50XggC5jP/omTegD/A35q\nrf2hMXVD5ZQ4SUREWoWaQ3z1/BMRkdagsYmT6uxJtdYGjDG3ADMBL/CCtXalMeam0PEZwANAHPBM\n6OHrt9aOPFDdg7orERERERERaRXq7Ek9Ig1QT6qIiLQS6kkVEZHWqKmXoBERERERERE5YhSkioiI\niIiISIuhIFVERERERERaDAWpIiIiIiIi0mIoSBUREREREZEWQ0GqiIiIiIiItBj1BqnGmInGmFXG\nmLXGmLtqOT7QGPO9MabCGHNHjWObjDHpxpjFxpj5TdlwEREREREROfb46jpojPECTwFnAtuABcaY\nj6y1K6sVywNuBS6o5RQWSLHW5jdRe0VEREREROQYVl9P6khgnbV2k7XWD7wFnF+9gLV2p7V2IeA/\nwDkavGiriIiIiIiItG71BandgMxq+1tDnzWUBb40xiw0xtzY2MaJiIiIiIhI61LncF/cIPNQjLXW\nZhtj4oFZxphV1trZh3hOEREREREROUbVF6RuA7pX2++O25vaINba7NDrTmPMf3CHD+8XpE6bNm3P\n+5SUFFJSUhp6CREREREREWlBUlNTSU1NPej6xtoDd5YaY3zAamA8kAXMBy6vkThpd9lpQLG19s+h\n/SjAa60tNsZEA18AD1lrv6hRz9bVBhERkWOFMfumadDzT0REWgNjDNbaBucqqrMn1VobMMbcAswE\nvMAL1tqVxpibQsdnGGO6AAuAtoBjjPkVkAwkAO+HHsg+4PWaAaqIiIiIiIhIdXX2pB6RBqgnVURE\nWgn1pIqISGvU2J7U+rL7ioiIiIgc9XJycggEAs3dDBFpAAWpIiIiInJMu+eee0hM7EViQi+ysrKa\nuzkiUg8FqSIiIiJyTMrNzWVA38H88bF/AV9QUJBC757JfPfdd83dNBGpg4JUERERETnmvPvuu3Tt\n0of16wdgWQ38iCCv4g/8jh+dNoFnnnmmuZsoIgegxEkiIiJHiBIniRx+juNw8UVT+ODDL4CngGuA\n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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(len(tossup), 1, sharex=True, figsize=(16, 12))\n", + "\n", + "for state, ax in zip(tossup, axes):\n", + " ax.fill_between(bins[1:], 0, histograms[state], facecolor='red')\n", + " ax.fill_between(bins[50:], 0, histograms[state][49:], facecolor='blue')\n", + " ax.set_title(state)\n", + " ax.plot([0.0, 0.0], [0, 0.2], color='k', linewidth=4) " + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Solid Obama Electorial College Votes 237.0\n", + "Solid Romney Electorial College Votes 206.0\n" ] } ], - "metadata": {} + "source": [ + "# electorial votes for the non-tossup states\n", + "solid = set(results.index).difference(tossup)\n", + "solid_obama = results[\"Votes\"].mul(results[\"obama\"])[solid].sum()\n", + "solid_romney = results[\"Votes\"].mul(results[\"romney\"])[solid].sum()\n", + "\n", + "print \"Solid Obama Electorial College Votes\", solid_obama\n", + "print \"Solid Romney Electorial College Votes\", solid_romney" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# electorial college votes for the tossup states, from the simulation\n", + "tossup_electoral_votes = electoral_votes.set_index('State').ix[tossup, 'Votes']\n", + "\n", + "obama_simulated_electorial_college = (simulated_poll_predictions > 0).multiply(tossup_electoral_votes)\n", + "obama_simulated_electorial_college['Solid States'] = solid_obama\n", + "obama_simulated_electorial_college['Total'] = obama_simulated_electorial_college.sum(axis=1)\n", + "\n", + "romney_simulated_electorial_college = (simulated_poll_predictions < 0).multiply(tossup_electoral_votes)\n", + "romney_simulated_electorial_college['Solid States'] = solid_romney\n", + "romney_simulated_electorial_college['Total'] = romney_simulated_electorial_college.sum(axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ColoradoFloridaIowaNew HampshireNevadaOhioVirginiaWisconsinSolid StatesTotal
0929606181310237328
1929606181310237328
290600181310237293
3900061800237270
4929646181310237332
590046181310237297
6929606181310237328
7929646181310237332
892964618010237319
902900618010237300
\n", + "
" + ], + "text/plain": [ + " Colorado Florida Iowa New Hampshire Nevada Ohio Virginia Wisconsin \\\n", + "0 9 29 6 0 6 18 13 10 \n", + "1 9 29 6 0 6 18 13 10 \n", + "2 9 0 6 0 0 18 13 10 \n", + "3 9 0 0 0 6 18 0 0 \n", + "4 9 29 6 4 6 18 13 10 \n", + "5 9 0 0 4 6 18 13 10 \n", + "6 9 29 6 0 6 18 13 10 \n", + "7 9 29 6 4 6 18 13 10 \n", + "8 9 29 6 4 6 18 0 10 \n", + "9 0 29 0 0 6 18 0 10 \n", + "\n", + " Solid States Total \n", + "0 237 328 \n", + "1 237 328 \n", + "2 237 293 \n", + "3 237 270 \n", + "4 237 332 \n", + "5 237 297 \n", + "6 237 328 \n", + "7 237 332 \n", + "8 237 319 \n", + "9 237 300 " + ] + }, + "execution_count": 191, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "obama_simulated_electorial_college.iloc[:10,]" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ColoradoFloridaIowaNew HampshireNevadaOhioVirginiaWisconsinSolid StatesTotal
000040000206210
100040000206210
2029046000206245
302964001310206268
400000000206206
5029600000206241
600040000206210
700000000206206
8000000130206219
9906400130206238
\n", + "
" + ], + "text/plain": [ + " Colorado Florida Iowa New Hampshire Nevada Ohio Virginia Wisconsin \\\n", + "0 0 0 0 4 0 0 0 0 \n", + "1 0 0 0 4 0 0 0 0 \n", + "2 0 29 0 4 6 0 0 0 \n", + "3 0 29 6 4 0 0 13 10 \n", + "4 0 0 0 0 0 0 0 0 \n", + "5 0 29 6 0 0 0 0 0 \n", + "6 0 0 0 4 0 0 0 0 \n", + "7 0 0 0 0 0 0 0 0 \n", + "8 0 0 0 0 0 0 13 0 \n", + "9 9 0 6 4 0 0 13 0 \n", + "\n", + " Solid States Total \n", + "0 206 210 \n", + "1 206 210 \n", + "2 206 245 \n", + "3 206 268 \n", + "4 206 206 \n", + "5 206 241 \n", + "6 206 210 \n", + "7 206 206 \n", + "8 206 219 \n", + "9 206 238 " + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "romney_simulated_electorial_college.iloc[:10,]" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 193, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ndfefTzefmuQp2fwcmR9Mcuu0/NZs/qMkkSnOYYs8PeL4nL3YKlPTeMjx+Tw/B/ZRVXUwyQuz+Qcx\n67VJ7pxuPyfJiZn7TmTzTR++wWymquqaJCe6+zNnrCZT7NgZr1OXJ3npNOXzaFV997SaTLFjM5n6\nRJLrk/x8Vf3vJD+f5MZpNZninKrqSVV1PMmDSe7u7mNJLuzuB6dVHkxy4XRbptjWFnn6nTNWcXzO\nE7JVpkYen8+9gJ2mUP1qNk8lf31m+b9L8hfdfds2m7viFN9gNlPZ/A/Pm5LcNLvKNpvLFN/gjNep\nr2Xziu3P7O7vSfJvk9yxzeYyxTfY4r3v2iTXd/e3JXljkvdus7lM8Tjd/Uh3H8rmWbGrquq7zri/\ns31uZIpHbZGn7zx9n+NzdmOLTL0gA4/P51rAVtVTkvxakl/q7g/MLD+S5AeS/POZ1U8muXRm/Nw8\nNsUKkmyZqb+Z5GCST1fVl7KZm09W1YWRKXbgLK9TJ5L8epJM/5l+pKqeHZliB86SqR/t7t+Ybv9q\nHpsuJVPsWHf/nyQfT/IPkjw49Vynqi5O8pVpNZliR2bydHXi+Jy9m8nUNRl4fD7PqxBXkvckua+7\nb5lZfnU2z2hc093/b2aTDyb5oap6alU9L8llSY7Na39ZfFtlqrs/290Xdvfzuvt52Sw8/vY0rUqm\n2NbZXqeSfCDJ907rXJ7kqd391cgU57BNpv6wql423f7eJJ+fbssU26qqZ5++wnBVPS3J389mb/UH\nk7xmWu012XzdSmSKbZwtT47P2a2zZOp/jDw+v+D8PoXHeUmSH07ymar61LTsTUnemc0G33s23+fz\n37v72u6+r6ruSHJfkoeTXNs+tJbH2zJT3f3hmXUezYxMsQNbZerGbE7vfG9VfTbJXyT50USm2JGz\nvff9WJJ3TFdo/L9J/mUiU+zIxUluraonZ/NExK90951V9Ykkd1TV65JsJHllIlOc09ny9IU4Pmd3\ntszUGevs6fh8bh+jAwAAAHuxL1chBgAAgCdKAQsAAMBSUMACAACwFBSwAAAALAUFLAAAAEtBAQsA\nAMBSUMACAACwFBSwAAAALIX/D/dvF9MfOHjgAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "obama_simulated_electorial_college['Total'].hist(bins=300, figsize=(16, 4))" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 194, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nRpMpFs1upxC/KMlPJ/lCVX1uMu/6JG9NcktVvTbJZpJXJEl3311VtyS5O8m3k1wzdUj1miTvS3JB\nkg93920DnwcAAAArbtdTiPeTU4gBAABW156eQgwAAACLQgHLStO3wWgyxWgyxUjyxGgyxaJRwAIA\nALAU9MDOQQ8sAADA7PTAAgAAsBYUsKw0fRuMJlOMJlOMJE+MJlMsGgUsAAAAS0EP7Bz0wAIAAMxO\nDywAAABrQQHLStO3wWgyxWgyxUjyxGgyxaJRwAIAALAU9MDOQQ8sAADA7PTAAgAAsBYUsKw0fRuM\nJlOMJlOMJE+MJlMsGgUsAAAAS0EP7Bz0wAIAAMxODywAAABrQQHLStO3wWgyxWgyxUjyxGgyxaJR\nwAIAALAU9MDOQQ8sAADA7PTAAgAAsBYUsKw0fRuMJlOMJlOMJE+MJlMsGgUsAAAAS0EP7Bz0wAIA\nAMxODywAAABrQQHLStO3wWgyxWgyxUjyxGgyxaJRwAIAALAU9MDOQQ8sAADA7PTAAgAAsBYUsKw0\nfRuMJlOMJlOMJE+MJlMsGgUsAAAAS0EP7BwOoge26tHTxZfpdwUAAKAHdi0pXAEAgPWjgGWl6dtg\nNJliNJliJHliNJli0ShgAQAAWAq7FrBV9d6qur+q7pyad0NVnaiqz01+rpq67fqqureq7qmqK6bm\nP6+q7pzc9vbxTwUe6+jRowe9CawYmWI0mWIkeWI0mWLRzHIE9reTXHnGvE7ytu5+7uTnI0lSVZcl\neWWSyybrvLMeverQu5K8trsvTXJpVZ15nwAAAHBWuxaw3f3HSf56m5u2u3LU1Ulu7u6HunszyX1J\nLq+qi5I8ubuPT5Z7f5KXn9smw+z0bTCaTDGaTDGSPDGaTLFo5umBfX1Vfb6q3lNVhybznpHkxNQy\nJ5I8c5v5JyfzAQAAYCbnWsC+K8klSY4k+VqS3xq2RTCQvg1GkylGkylGkidGkykWzfnnslJ3P3B6\nuqreneRDk+HJJBdPLfqsbB15PTmZnp5/crv7PnbsWA4fPpwkOXToUI4cOfLIP87pUxgWZfzggw8k\nuSvJ8/f18U876OdvbGxsbGxsbGxsbGy803hjYyOnTp1KkmxubmZe1d27L1R1OMmHuvs5k/FF3f21\nyfQvJXlBd/+ryUWcPpDkhdk6RfjjSX6gu7uqPpPkDUmOJ/mjJO/o7tvOeJyeZXsWxVVXvTK33faT\n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\n/iTJG5P8y9g/5xydJVP/IIP2z/ftCGx3f727NybT30rypWxt5MuS3DRZ7KZsvQgnydVJbu7uh7p7\nM8l9SV64X9vL4jtLpp7R3bdPhf4z2SpoE5liF2fL1OTmtyX55TNWkSl2tMN73y8k+bXufmhy2zcm\nq8gUO9ohUw8nOX1E41CSk5NpmWJH3f23k8knJXlitr4nyP4552ybTD08cv983wrYaVV1OMlzs7Xx\nF3b3/ZOb7k9y4WT6GUlOTK12Ilsv0PAYZ2Rq2s8m+fBkWqaY2XSmqurqJCe6+wtnLCZTzOyM16ln\nJ3nx5JTPO6rq+ZPFZIqZTWXq00muTfKbVfW/k/xmkusni8kUO6qqJ1TVRrb2wz/W3cdj/5w5bJOp\nPz1jkbn2z/e9gJ2c7vL7Sd7Y3d+cvq23zmfe6ZxmV5ziMSaZ+r1sZepbU/P/Q5K/6+4P7LC6TPEY\n05nK1lGNNyV58/QiO6wuUzzGGa9T38zWtwB8T3f/aJJ/n+SWHVaXKR5jm/e+a5Jc293fl+SXkrx3\nh9Vlikd098PdfSRbR8Qur6ofOeN2++c8Lttk6odP3zZi/3xfC9iqemK2itff6e4PTmbfP+nnSFVd\nlOSByfyTSS6eWv1ZefR0GEjyHZn63alMpaqOJfmJJP96anGZYlfbZOofJTmc5PNV9ZVs5eazVXVh\nZIoZnOV16kSSP0iSySfTD1fVUyNTzOAsmXp1d//hZPr38ugpeDLFTLr7/yT5ZJJ/HvvnDDCVqSuT\ncfvn+3kV4kryniR3d/eNUzfdmuQ1k+nXJPng1PyfqqonVdUlSS5Ncny/tpfFd7ZMVdWV2TqicXV3\n/7+pVWSKHW2Xqe6+s7sv7O5LuvuSbBUe/2RyapVMsaMd3vs+mOTHJss8O8mTuvsvI1PsYodM/UVV\nvWQy/WNJvjyZlinOqqqeevoKw1V1QZJ/lq2+avvnnJOzZWrk/vn5e7Pp23pRkp9O8oWq+txk3vVJ\n3prklqp6bZLNJK9Iku6+u6puSXJ3km8nuaZ9aS3fabtMvSnJO7LVNH771vt8/md3XyNTzGDbTHX3\nR6aWeSQzMsUMzvbe994k762qO5P8XZJXJzLFTM723ve6JG+fXPXz/yb5uUSm2NVFSW6qqvOydWDr\nv3X3h6vq07F/zrk5W6buzaD98337Gh0AAACYx4FchRgAAAAeLwUsAAAAS0EBCwAAwFJQwAIAALAU\nFLAAAAAsBQUsAAAAS0EBCwAAwFJQwAIAALAU/j+gEJ6FQqlMKAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "romney_simulated_electorial_college['Total'].hist(bins=300, figsize=(16, 4))" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.89610000000000001" + ] + }, + "execution_count": 195, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(obama_simulated_electorial_college['Total'] > romney_simulated_electorial_college['Total']) / float(N)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" } - ] -} \ No newline at end of file + }, + "nbformat": 4, + "nbformat_minor": 0 +}