├── .gitignore ├── 2012-predicted.csv ├── README.md ├── campaign_finance.py ├── data ├── 2004-pres-polls.csv ├── 2004_poll_data.csv ├── 2008-pres-polls.csv ├── 2012_poll_data.csv ├── 2012_poll_data_states.csv ├── census_data_2000.csv ├── census_demographics.csv ├── electoral_votes.csv ├── gallup_electorate.csv ├── obama_indiv_state.csv ├── partisan_voting.csv ├── pollster_map.pkl ├── pollster_weights.csv ├── romney_indiv_state.csv └── wsj_forecast.csv ├── get_census_data.py ├── get_poll_data.py ├── historical_adjustment.ipynb ├── historical_adjustment.py ├── pollster_map.py ├── silver_model.ipynb └── silver_model.py /.gitignore: -------------------------------------------------------------------------------- 1 | au_abstract.txt 2 | todo.txt 3 | 4 | .*py[oc] 5 | .*.sw[nop] 6 | .sw[nop] 7 | *.tmp 8 | *.tgz 9 | *.diff 10 | *.tar.gz 11 | *.zip 12 | -------------------------------------------------------------------------------- /2012-predicted.csv: -------------------------------------------------------------------------------- 1 | State,poll 2 | Arizona,-6.35103758203 3 | California,19.7939605433 4 | Colorado,6.94680413392 5 | Connecticut,13.9673695823 6 | Florida,2.07942320278 7 | Georgia,-8.9685783511 8 | Hawaii,31.2329731476 9 | Illinois,26.8689454989 10 | Indiana,-6.87022364116 11 | Iowa,2.32494127675 12 | Kansas,-9.54075722393 13 | Maine,12.7344881691 14 | Maryland,28.8556122688 15 | Massachusetts,21.8158972511 16 | Michigan,8.56148458235 17 | Minnesota,8.04648458474 18 | Mississippi,-8.63666431435 19 | Missouri,-1.97440258249 20 | Montana,-7.03529525259 21 | Nebraska,-8.66305659485 22 | Nevada,9.02203805722 23 | New Hampshire,-1.13269055622 24 | New Jersey,13.5452010098 25 | New Mexico,9.14499594544 26 | New York,23.2067488327 27 | North Carolina,-0.590242725331 28 | North Dakota,-9.13833707796 29 | Ohio,4.38365889772 30 | Oregon,9.11669401207 31 | Pennsylvania,5.69195264214 32 | Rhode Island,25.9308025562 33 | South Carolina,-6.76679008144 34 | South Dakota,-1.13647592348 35 | Tennessee,-2.88284606462 36 | Texas,-2.57819116911 37 | Utah,-29.142100213 38 | Vermont,16.8113052033 39 | Virginia,4.9851756192 40 | Washington,16.1182074603 41 | West Virginia,-9.77644909265 42 | Wisconsin,4.90894385251 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a Python script that replicates some features of Nate Silver's 538 Election Forecasting Model. It was constructed from reading the methodology posts on the [old site](http://www.fivethirtyeight.com/2008/03/frequently-asked-questions-last-revised.html) and the new one at the [New York Times](http://fivethirtyeight.blogs.nytimes.com/). This is my interpretation of these posts. Any and all errors are, of course, mine. Furthermore, this code should be considered as more of an example of how to conduct data analysis in Python using pandas and statsmodels rather than a "real" model. You can consider it a starting point for doing more complex analyses with Python rather than a real forecasting model. Or better yet, consider a fun way to learn some Python data tricks. 2 | 3 | The polling data is up to date as of 10/2/2012. It is all publicly available from [Real Clear Politics](http://www.realclearpolitics.com/). For some reason Real Clear Politics stopped allowing directory access to their servers, so if you want to update the polling data, you'll have to update the script to walk the links on their site or do it by hand. This should be trivial, I just don't have the time. Historical polling data was obtained from [Electoral Vote](electoral-vote.com). 4 | 5 | The pollster reliability/weighting data is also very out of date, and I did not attempt to replicate the calculation of these. I simply used old weights. 6 | 7 | Pull requests are welcome. Suggestions and comments on anything from the programming to the modeling are also welcome. 8 | 9 | The third-party packages used are 10 | 11 | * [matplotlib](http://matplotlib.org/) 12 | * [numpy](http://numpy.org/) 13 | * [pandas](http://pandas.pydata.org/) 14 | * [scikit-learn](http://scikit-learn.org/stable/) 15 | * [scipy](http://www.scipy.org/) 16 | * [statsmodels](http://statsmodels.sourceforge.net/) 17 | 18 | and, of course, [IPython](http://ipython.org/) is used for the notebooks. 19 | -------------------------------------------------------------------------------- /campaign_finance.py: -------------------------------------------------------------------------------- 1 | """ 2 | Aggregate contributions 3 | """ 4 | import zipfile 5 | 6 | import pandas 7 | 8 | fin = zipfile.ZipFile("/home/skipper/school/seaboldgit/talks/pydata/data/fec_obama_itemized_indiv.zip") 9 | fin = fin.open(fin.filelist[0].filename) 10 | 11 | obama = pandas.read_csv(fin, skiprows=7) 12 | obama = obama[["State", "Amount", "City", "Zip"]] 13 | obama.Amount = obama.Amount.str.replace("\$", "").astype(float) 14 | obama.State = obama.State.replace({"PE" : "PA"}) # typo 15 | 16 | #AE, AA, AP, ZZ are armed forces or canada, etc. 17 | #AB is Canada 18 | state_contrib = obama.groupby("State")["Amount"].sum() 19 | state_contrib = state_contrib.drop(["AE", "AA", "AP", "AB", 20 | "AS", # American Samoa 21 | "BC", 22 | "BR", 23 | "FM", # Micronesia 24 | "GU", #Guam 25 | "MP", #Marianas Islands 26 | "NO", 27 | "ON", 28 | "PR", 29 | "QU", 30 | "SA", 31 | "ZZ", 32 | "VI", 33 | ]) 34 | 35 | state_contrib.to_csv("data/obama_indiv_state.csv") 36 | 37 | fin = zipfile.ZipFile("/home/skipper/school/seaboldgit/talks/pydata/data/fec_romney_itemized_indiv.zip") 38 | fin = fin.open(fin.filelist[0].filename) 39 | 40 | romney = pandas.read_csv(fin, skiprows=7) 41 | romney = romney[["State", "Amount", "City", "Zip"]] 42 | romney.Amount = romney.Amount.str.replace("\$", "").astype(float) 43 | romney.State = romney.State.replace({"TE" : "PN", "GE" : "GA", 44 | "PN" : "TN", "HA" : "HI"}) # typo or outdated 45 | 46 | state_contrib = romney.groupby("State")["Amount"].sum() 47 | state_contrib = state_contrib.drop(["AE", "AA", "AP", 48 | "AS", # American Samoa 49 | "GU", #Guam 50 | "MP", #Marianas Islands 51 | "PR", 52 | "VI", 53 | "XX", 54 | "FF" 55 | ]) 56 | 57 | state_contrib.to_csv("data/romney_indiv_state.csv") 58 | -------------------------------------------------------------------------------- /data/2004-pres-polls.csv: -------------------------------------------------------------------------------- 1 | State,Kerry,Bush,Date,Pollster 2 | AL,39,57,Oct 25,SurveyUSA 3 | AL,32,56,Oct 12,Capital Survey 4 | AL,34,62,Oct 01,SurveyUSA 5 | AL,40,54,Sep 14,ARG 6 | AL,42,53,Sep 06,Rasmussen 7 | AL,37,58,Aug 23,Survey USA 8 | AL,34,51,Aug 12,Capital Survey 9 | AL,34,56,Jul 28,Capital Survey 10 | AL,38,52,Jun 30,Rasmussen 11 | AL,35,54,May 27,Capital Survey 12 | AK,30,57,Sep 09,ARG 13 | AK,33,56,Jun 30,Dittman Research 14 | AZ,41,56,Oct 28,SurveyUSA 15 | AZ,45,50,Oct 19,Arizona State Univ. 16 | AZ,40,47,Oct 18,Market Solutions 17 | AZ,43,54,Oct 17,SurveyUSA 18 | AZ,47,50,Oct 15,Zogby 19 | AZ,44,49,Oct 09,Northern Arizona Univ. 20 | AZ,41,55,Oct 05,Survey 21 | AZ,38,48,Oct 02,Arizona State Univ. 22 | AZ,47,50,Oct 02,Zogby 23 | AZ,44,53,Sep 27,SurveyUSA 24 | AZ,38,49,Sep 24,Arizona State Univ. 25 | AZ,43,54,Sep 21,SurveyUSA 26 | AZ,48,49,Sep 14,Zogby 27 | AZ,39,50,Sep 13,Mason-Dixon 28 | AZ,43,49,Sep 12,ARG 29 | AZ,45,48,Aug 01,Market Solutions 30 | AZ,36,48,Jul 14,Survey USA 31 | AZ,41,44,Jun 19,Market Solutions 32 | AZ,37,45,May 05,Rocky Mountain 33 | AR,46,51,Nov 00,SurveyUSA 34 | AR,43,51,Oct 27,Mason-Dixon 35 | AR,45,51,Oct 23,SurveyUSA 36 | AR,48,48,Oct 18,Opinion Research 37 | AR,46,51,Oct 15,SurveyUSA 38 | AR,48,50,Oct 15,Zogby 39 | AR,45,46,Oct 10,Zogby 40 | AR,43,52,Oct 04,Opinion Research 41 | AR,47,47,Oct 02,Zogby 42 | AR,44,53,Oct 01,SurveyUSA 43 | AR,44,53,Sep 27,SurveyUSA 44 | AR,44,51,Sep 18,Rasmussen 45 | AR,45,48,Sep 15,ARG 46 | AR,47,47,Sep 14,Zogby 47 | AR,47,48,Aug 22,Survey USA 48 | AR,46,48,Jul 30,Zogby 49 | AR,45,47,Jul 23,Zogby 50 | AR,45,47,Jul 10,Zogby 51 | AR,47,45,Jun 20,Zogby 52 | AR,43,51,Jun 06,Zogby 53 | AR,45,49,May 23,Zogby 54 | CA,54,43,Oct 29,SurveyUSA 55 | CA,49,42,Oct 23,Field Poll 56 | CA,53,44,Oct 22,SurveyUSA 57 | CA,57,39,Oct 15,LA Times 58 | CA,51,43,Oct 02,SurveyUSA 59 | CA,49,40,Oct 01,Field Poll 60 | CA,53,42,Sep 30,Rasmussen 61 | CA,53,40,Sep 18,Los Angeles Times 62 | CA,51,39,Sep 15,Public Policy Institute 63 | CA,55,39,Sep 12,Rasmussen 64 | CA,52,41,Sep 11,ARG 65 | CA,52,42,Sep 06,SurveyUSA 66 | CA,51,42,Aug 26,Rasmussen 67 | CA,49,46,Aug 18,Survey USA 68 | CA,51,40,Aug 04,Field Poll 69 | CA,49,38,Jul 25,Survey USA 70 | CA,49,38,Jul 14,Public Policy Institute 71 | CA,52,38,Jun 30,Rasmussen 72 | CA,51,39,May 24,Field Poll 73 | CO,47,50,Oct 31,SurveyUSA 74 | CO,47,49,Oct 30,Zogby 75 | CO,46,52,Oct 28,SurveyUSA 76 | CO,43,50,Oct 27,Mason-Dixon 77 | CO,49,47,Oct 24,Zogby 78 | CO,45,52,Oct 18,SurveyUSA 79 | CO,42,48,Oct 16,Ciruli 80 | CO,47,49,Oct 15,Gallup 81 | CO,48,49,Oct 15,Zogby 82 | CO,43,49,Oct 14,Mason-Dixon 83 | CO,44,52,Oct 05,SurveyUSA 84 | CO,41,50,Oct 04,Mason-Dixon 85 | CO,48,48,Oct 04,Gallup 86 | CO,49,48,Oct 02,Zogby 87 | CO,44,52,Sep 21,SurveyUSA 88 | CO,39,51,Sep 15,Ciruli Associates 89 | CO,45,46,Sep 15,Rasmussen 90 | CO,48,49,Sep 14,Zogby 91 | CO,45,46,Sep 11,ARG 92 | CO,47,47,Aug 19,Rasmussen 93 | CO,47,47,Aug 16,Survey USA 94 | CO,43,48,Jun 18,Mason-Dixon 95 | CO,44,49,Apr 14,Rasmussen 96 | CO,40,49,Apr 01,Public Opinion Strat. 97 | CT,47,38,Sep 26,Quinnipiac Univ. 98 | CT,54,39,Sep 12,ARG 99 | CT,45,38,Aug 17,Quinnipiac Univ. 100 | CT,50,32,Jun 28,Quinnipiac Univ. 101 | CT,46,36,Jun 01,Quinnipiac Univ. 102 | CT,51,33,Apr 27,Univ. of Connecticut 103 | DE,45,38,Sep 23,West Chester Univ. 104 | DE,50,41,Sep 13,ARG 105 | DC,78,11,Sep 11,ARG 106 | FL,50,48,Oct 31,ARG 107 | FL,48,48,Oct 30,Zogby 108 | FL,49,44,Oct 30,Opinion Dynamics 109 | FL,48,49,Oct 29,SurveyUSA 110 | FL,43,51,Oct 28,Quinnipiac Univ. 111 | FL,49,45,Oct 28,Gallup 112 | FL,45,49,Oct 27,Mason-Dixon 113 | FL,45,49,Oct 24,Zogby 114 | FL,48,47,Oct 24,Florida Poll 115 | FL,48,47,Oct 24,NY Times 116 | FL,41,49,Oct 23,LA Times 117 | FL,44,44,Oct 23,Quinnipiac Univ. 118 | FL,49,46,Oct 23,ARG 119 | FL,42,51,Oct 22,Gallup 120 | FL,46,46,Oct 22,Insider Advantage 121 | FL,50,48,Oct 22,SurveyUSA 122 | FL,46,46,Oct 19,Insider Advantage 123 | FL,46,46,Oct 19,Schroth 124 | FL,43,45,Oct 16,Quinnipiac 125 | FL,49,50,Oct 15,Zogby 126 | FL,50,49,Oct 15,SurveyUSA 127 | FL,45,48,Oct 14,Mason-Dixon 128 | FL,45,43,Oct 12,Univ. of Northern Florida 129 | FL,46,47,Oct 12,Rasmussen 130 | FL,48,44,Oct 12,Insider Advantage 131 | FL,46,48,Oct 10,Rasmussen 132 | FL,47,47,Oct 06,WA Post 133 | FL,44,48,Oct 04,Mason-Dixon 134 | FL,47,45,Oct 03,American Res.Group 135 | FL,47,45,Oct 03,ARG 136 | FL,42,46,Oct 02,Quinnipiac Univ. 137 | FL,49,47,Oct 02,Hamilton Beattie 138 | FL,50,49,Oct 02,Zogby 139 | FL,46,51,Oct 01,SurveyUSA 140 | FL,45,51,Sep 30,Rasmussen 141 | FL,44,49,Sep 25,Gallup 142 | FL,41,49,Sep 19,Quinnipiac Univ. 143 | FL,45,47,Sep 19,Gallup 144 | FL,46,45,Sep 18,ARG 145 | FL,48,48,Sep 14,Zogby 146 | FL,45,51,Sep 12,SurveyUSA 147 | FL,47,48,Sep 12,Rasmussen 148 | FL,47,48,Sep 07,Rasmussen 149 | FL,47,49,Aug 24,Rasmussen 150 | FL,46,48,Aug 22,Gallup 151 | FL,50,49,Aug 21,Zogby 152 | FL,47,41,Aug 10,Quinnipiac Univ. 153 | FL,50,43,Aug 05,ARG 154 | FL,50,47,Jul 30,Zogby 155 | FL,48,49,Jul 23,Zogby 156 | FL,46,50,Jul 22,Gallup 157 | FL,44,45,Jul 21,LA Times 158 | FL,45,46,Jul 21,LA Times&Mason-Dix 159 | FL,47,44,Jul 15,ARG 160 | FL,47,44,Jul 11,Survey USA 161 | FL,48,43,Jun 30,Rasmussen 162 | FL,48,40,Jun 29,Rasmussen 163 | FL,43,43,Jun 27,Quinnipiac Univ. 164 | FL,47,46,Jun 23,ARG 165 | FL,48,42,Jun 22,Rasmussen 166 | FL,46,50,Jun 20,Zogby 167 | FL,48,44,Jun 17,Rasmussen 168 | FL,43,50,Jun 14,Survey USA 169 | FL,50,48,Jun 06,Zogby 170 | FL,49,48,May 23,Zogby 171 | GA,43,55,Oct 28,SurveyUSA 172 | GA,40,57,Oct 18,SurveyUSA 173 | GA,41,51,Oct 13,Atlanta Journal 174 | GA,41,51,Oct 13,Zogby 175 | GA,39,58,Oct 05,SurveyUSA 176 | GA,38,58,Sep 13,SurveyUSA 177 | GA,42,53,Sep 11,ARG 178 | GA,41,52,Jun 30,Rasmussen 179 | GA,32,49,Jun 02,Inside Advantage 180 | GA,39,51,May 31,Rasmussen 181 | GA,44,47,Feb 09,Shapiro Res. Group 182 | HI,45,46,Oct 18,SMS Research 183 | HI,43,43,Oct 15,Ward Research 184 | HI,51,41,Sep 08,ARG 185 | HI,48,41,Aug 03,SMS Research 186 | ID,30,59,Sep 08,ARG 187 | ID,25,55,Jun 14,Greg Smith 188 | IL,54,42,Oct 27,SurveyUSA 189 | IL,50,42,Oct 17,Market Shares 190 | IL,55,39,Oct 04,SurveyUSA 191 | IL,49,40,Sep 18,Market Shares 192 | IL,51,42,Sep 15,Rasmussen 193 | IL,49,43,Sep 14,ARG 194 | IL,49,45,Sep 12,SurveyUSA 195 | IL,52,38,Aug 21,Market Shares 196 | IL,54,39,Jul 30,Rasmussen 197 | IL,53,37,Jun 30,Rasmussen 198 | IL,52,39,Jun 09,Survey USA 199 | IL,54,38,May 24,Survey USA 200 | IN,37,57,Oct 27,Selzer 201 | IN,39,58,Oct 27,SurveyUSA 202 | IN,39,58,Oct 03,SurveyUSA 203 | IN,33,61,Oct 00,Selzer 204 | IN,39,54,Sep 17,ARG 205 | IN,36,60,Sep 07,SurveyUSA 206 | IN,40,52,Aug 18,Bellwether Research 207 | IN,27,46,Jul 12,Market Research Inf. 208 | IN,36,52,Jun 24,Bellwether 209 | IN,33,54,May 19,Selzer & Co. 210 | IA,50,47,Nov 00,SurveyUSA 211 | IA,44,48,Oct 30,Opinion Dynamics 212 | IA,50,45,Oct 30,Zogby 213 | IA,45,47,Oct 28,Gallup 214 | IA,49,49,Oct 28,SurveyUSA 215 | IA,44,49,Oct 27,Selzer 216 | IA,48,45,Oct 26,Selzer 217 | IA,47,48,Oct 25,ARG 218 | IA,45,45,Oct 24,Zogby 219 | IA,48,47,Oct 23,Gallup 220 | IA,45,51,Oct 18,SurveyUSA 221 | IA,43,49,Oct 16,Mason-Dixon 222 | IA,46,45,Oct 16,Central Surveys 223 | IA,51,48,Oct 15,Zogby 224 | IA,47,47,Oct 10,ARG 225 | IA,45,47,Oct 09,Market Shares 226 | IA,48,47,Oct 04,SurveyUSA 227 | IA,43,46,Oct 03,Harstad 228 | IA,51,45,Oct 02,Zogby 229 | IA,48,47,Sep 30,Univ. of MN 230 | IA,45,48,Sep 21,Opinion Dynamics 231 | IA,43,48,Sep 17,Gallup 232 | IA,45,48,Sep 15,Rasmussen 233 | IA,42,48,Sep 14,Mason-Dixon 234 | IA,49,47,Sep 14,Zogby 235 | IA,46,48,Sep 12,ARG 236 | IA,51,45,Aug 26,Gallup 237 | IA,52,45,Aug 21,Zogby 238 | IA,50,46,Jul 30,Zogby 239 | IA,46,46,Jul 28,ARG 240 | IA,49,48,Jul 23,Zogby 241 | IA,48,44,Jul 12,Hubert Humphrey Inst 242 | IA,48,47,Jul 10,Zogby 243 | IA,48,44,Jun 30,Rasmussen 244 | IA,49,47,Jun 20,Zogby 245 | IA,49,48,Jun 06,Zogby 246 | IA,46,42,May 25,Zogby 247 | IA,45,50,May 23,Zogby 248 | IA,47,46,Apr 21,ARG 249 | KS,37,60,Oct 25,SurveyUSA 250 | KS,30,59,Oct 23,Market Research 251 | KS,38,57,Oct 09,SurveyUSA 252 | KS,35,57,Sep 16,ARG 253 | KS,35,60,Sep 07,SurveyUSA 254 | KS,36,56,Jun 30,Survey USA 255 | KS,39,57,Mar 04,Survey USA 256 | KY,38,59,Oct 28,SurveyUSA 257 | KY,39,56,Oct 18,Bluegrass Poll 258 | KY,37,59,Oct 17,SurveyUSA 259 | KY,38,57,Oct 04,SurveyUSA 260 | KY,38,53,Sep 12,Bluegrass Poll 261 | KY,39,57,Sep 09,ARG 262 | KY,39,56,Sep 07,SurveyUSA 263 | KY,39,56,Aug 15,Survey USA 264 | KY,42,52,Jul 26,Survey USA 265 | KY,39,52,Jun 08,Survey USA 266 | LA,32,58,Oct 19,Southeastern La. Univ. 267 | LA,37,52,Oct 17,Market Research 268 | LA,40,48,Oct 16,Univ. of New Orleans 269 | LA,32,50,Oct 12,SMOR 270 | LA,36,51,Oct 05,Marketing Research 271 | LA,42,50,Sep 18,ARG 272 | LA,36,52,Jul 20,Market Research 273 | LA,42,48,May 26,Market Research 274 | LA,29,48,May 25,Market Research 275 | LA,29,48,May 25,Multi-Quest 276 | LA,38,52,Mar 29,Harris Deville 277 | ME,52,44,Oct 28,SurveyUSA 278 | ME,50,39,Oct 20,Zogby 279 | ME,51,45,Oct 17,SurveyUSA 280 | ME,49,47,Oct 03,SurveyUSA 281 | ME,46,47,Sep 20,SurveyUSA 282 | ME,45,42,Sep 16,Critical Insights 283 | ME,43,43,Sep 08,Zogby 284 | ME,48,44,Sep 08,ARG 285 | ME,49,44,Aug 24,Survey USA 286 | ME,48,44,Jul 31,Rasmussen 287 | ME,46,45,Jun 30,Rasmussen 288 | ME,54,35,May 31,Rasmussen 289 | ME,49,39,May 20,Critical Insight 290 | ME,51,38,Mar 03,Other 291 | MD,54,43,Oct 27,SurveyUSA 292 | MD,56,39,Oct 25,Ipsos 293 | MD,56,41,Oct 05,SurveyUSA 294 | MD,52,42,Oct 02,Gonzales Res. 295 | MD,48,48,Sep 17,SurveyUSA 296 | MD,52,43,Sep 07,ARG 297 | MD,53,42,Aug 25,Survey USA 298 | MD,53,40,Aug 15,Gonzales Res. 299 | MD,53,39,Jun 30,Rasmussen 300 | MD,52,38,Jun 09,Gonzales Res. 301 | MD,48,43,Mar 24,Gonzales Res. 302 | MA,50,36,Sep 30,Merrimack Coll. 303 | MA,64,27,Sep 11,ARG 304 | MA,56,30,Jul 28,Center for Public Opin. 305 | MA,59,30,Jul 18,Suffolk University 306 | MA,60,31,Jun 30,Rasmussen 307 | MA,54,30,May 06,Univ. of Mass. 308 | MI,52,46,Oct 30,Zogby 309 | MI,50,47,Oct 28,SurveyUSA 310 | MI,47,45,Oct 27,Mason-Dixon 311 | MI,43,41,Oct 26,Mitchell Research 312 | MI,49,44,Oct 24,Zogby 313 | MI,45,44,Oct 22,Mitchell Research 314 | MI,42,47,Oct 19,Mitchell Research 315 | MI,49,43,Oct 19,EPIC-MRA 316 | MI,43,47,Oct 18,Mitchell Research 317 | MI,51,44,Oct 18,SurveyUSA 318 | MI,47,46,Oct 16,Mason-Dixon 319 | MI,53,46,Oct 15,Zogby 320 | MI,49,45,Oct 12,Rasmussen 321 | MI,47,45,Oct 10,Rasmussen 322 | MI,52,42,Oct 04,SurveyUSA 323 | MI,54,44,Oct 02,Zogby 324 | MI,47,47,Sep 30,Rasmussen 325 | MI,48,46,Sep 24,Detroit Free Press 326 | MI,45,43,Sep 21,Marketing Resource Grp. 327 | MI,46,44,Sep 21,Opinion Dynamics 328 | MI,49,44,Sep 19,Rasmussen 329 | MI,48,40,Sep 18,ARG 330 | MI,48,44,Sep 16,EPIC-MRA 331 | MI,47,41,Sep 14,Mason-Dixon 332 | MI,48,46,Sep 12,Rasmussen 333 | MI,50,44,Sep 11,Gallup 334 | MI,50,45,Sep 07,Rasmussen 335 | MI,48,45,Sep 05,Rasmussen 336 | MI,48,45,Aug 24,Survey USA 337 | MI,51,45,Aug 21,Zogby 338 | MI,48,45,Aug 19,ARG 339 | MI,49,42,Aug 10,EPIC/MRA 340 | MI,52,41,Aug 04,Survey USA 341 | MI,52,45,Jul 30,Zogby 342 | MI,53,44,Jul 23,Zogby 343 | MI,50,44,Jul 10,Zogby 344 | MI,49,44,Jul 08,American Res&EPIC 345 | MI,47,43,Jun 30,SurveyUSA&Mitchell 346 | MI,51,41,Jun 30,Survey USA 347 | MI,40,42,Jun 23,Fox/Opinion Dyn. 348 | MI,46,47,Jun 20,Zogby 349 | MI,42,44,Jun 08,LA Times 350 | MI,45,43,Jun 06,EPIC/MRA 351 | MI,47,43,Jun 02,Survey USA 352 | MI,50,41,May 23,Zogby 353 | MN,51,45,Oct 30,Zogby 354 | MN,51,43,Oct 29,Gallup 355 | MN,51,43,Oct 28,Gallup 356 | MN,47,48,Oct 27,Mason-Dixon 357 | MN,49,41,Oct 27,Star-Tribune 358 | MN,46,44,Oct 24,Zogby 359 | MN,44,47,Oct 23,Univ. of Minnesota 360 | MN,46,42,Oct 21,St. Cloud State Univ. 361 | MN,45,47,Oct 16,Mason-Dixon 362 | MN,54,43,Oct 15,Zogby 363 | MN,47,47,Oct 12,Rasmussen 364 | MN,49,45,Oct 10,Rasmussen 365 | MN,45,43,Oct 09,Market Shares 366 | MN,48,43,Oct 09,Star Tribune 367 | MN,52,44,Oct 02,Zogby 368 | MN,48,45,Sep 30,Rasmussen 369 | MN,46,46,Sep 19,Rasmussen 370 | MN,46,46,Sep 18,Rasmussen 371 | MN,52,42,Sep 14,Zogby 372 | MN,45,45,Sep 12,Gallup 373 | MN,45,46,Sep 12,Mason-Dixon 374 | MN,47,45,Sep 10,ARG 375 | MN,50,41,Sep 09,Market Solutions 376 | MN,50,45,Aug 21,Zogby 377 | MN,52,44,Jul 30,Zogby 378 | MN,46,44,Jul 14,Mason-Dixon 379 | MN,47,44,Jul 12,Hubert Humphrey Inst 380 | MN,49,44,Jul 10,Zogby 381 | MN,50,45,Jun 20,Zogby 382 | MN,51,44,Jun 06,Zogby 383 | MN,44,41,May 26,Zogby 384 | MN,51,42,May 23,Zogby 385 | MS,42,51,Sep 15,ARG 386 | MO,47,52,Oct 29,Survey 387 | MO,44,49,Oct 27,Mason-Dixon 388 | MO,45,49,Oct 23,Market Research 389 | MO,45,52,Oct 23,SurveyUSA 390 | MO,45,51,Oct 16,SurveyUSA 391 | MO,48,51,Oct 15,Zogby 392 | MO,44,49,Oct 14,Mason-Dixon 393 | MO,47,49,Oct 02,SurveyUSA 394 | MO,48,50,Oct 02,Zogby 395 | MO,44,50,Sep 17,ARG 396 | MO,41,48,Sep 14,Mason-Dixon 397 | MO,46,51,Sep 14,Zogby 398 | MO,46,48,Sep 07,SurveyUSA 399 | MO,41,55,Sep 04,Gallup 400 | MO,44,46,Aug 24,LA Times 401 | MO,49,49,Aug 21,Zogby 402 | MO,47,48,Aug 17,Survey USA 403 | MO,49,48,Jul 30,Zogby 404 | MO,49,48,Jul 23,Zogby 405 | MO,46,44,Jul 20,Market Research Inst. 406 | MO,50,47,Jul 10,Zogby 407 | MO,46,48,Jul 08,Survey USA 408 | MO,44,48,Jun 30,Rasmussen 409 | MO,48,49,Jun 20,Zogby 410 | MO,37,48,Jun 08,LA Times 411 | MO,47,44,May 23,Zogby 412 | MT,36,57,Oct 18,Mason-Dixon 413 | MT,34,55,Oct 08,Montana State Univ. 414 | MT,36,54,Sep 20,Mason-Dixon 415 | MT,32,60,Sep 07,ARG 416 | MT,33,53,May 26,Mason-Dixon 417 | NE,32,61,Oct 17,RKM Research 418 | NE,30,61,Sep 10,ARG 419 | NV,45,53,Oct 31,SurveyUSA 420 | NV,45,50,Oct 30,Zogby 421 | NV,49,49,Oct 28,SurveyUSA 422 | NV,44,50,Oct 27,Mason-Dixon 423 | NV,46,49,Oct 24,Zogby 424 | NV,41,45,Oct 17,Belden Russenello 425 | NV,45,52,Oct 16,SurveyUSA 426 | NV,46,50,Oct 15,Zogby 427 | NV,42,52,Oct 14,Mason-Dixon 428 | NV,48,47,Oct 02,Zogby 429 | NV,46,50,Oct 01,SurveyUSA 430 | NV,44,48,Sep 23,Belden Russenello 431 | NV,46,48,Sep 19,Gallup 432 | NV,47,49,Sep 14,Zogby 433 | NV,45,47,Sep 13,Rasmussen 434 | NV,45,50,Sep 13,Mason-Dixon 435 | NV,45,47,Sep 12,ARG 436 | NV,47,51,Sep 11,SurveyUSA 437 | NV,48,46,Aug 21,Zogby 438 | NV,46,47,Aug 16,Rasmussen 439 | NV,46,49,Aug 16,Survey USA 440 | NV,45,46,Jul 30,Zogby 441 | NV,47,46,Jul 23,Zogby 442 | NV,49,45,Jul 22,Survey USA 443 | NV,43,45,Jul 10,Zogby 444 | NV,47,44,Jun 23,Zogby 445 | NV,45,47,Jun 20,Zogby 446 | NV,47,44,Jun 06,Zogby 447 | NV,47,44,May 23,Zogby 448 | NH,48,49,Oct 31,ARG 449 | NH,49,48,Oct 29,Univ. of New Hampshire 450 | NH,47,47,Oct 28,ARG 451 | NH,47,46,Oct 27,Mason-Dixon 452 | NH,50,46,Oct 26,Univ. of New Hampshire 453 | NH,50,43,Oct 25,Franklin Pierce Coll. 454 | NH,50,41,Oct 19,Franklin Pierce Coll. 455 | NH,46,47,Oct 16,ARG 456 | NH,46,41,Oct 15,Suffolk Univ. 457 | NH,51,46,Oct 15,Zogby 458 | NH,45,48,Oct 14,Mason-Dixon 459 | NH,47,47,Oct 03,American Research Group 460 | NH,47,47,Oct 03,ARG 461 | NH,49,43,Oct 03,Franklin Pierce Coll. 462 | NH,51,44,Oct 02,Zogby 463 | NH,49,43,Oct 01,Becker Institute 464 | NH,45,47,Sep 15,ARG 465 | NH,48,45,Sep 14,Zogby 466 | NH,40,49,Sep 13,Mason-Dixon 467 | NH,51,43,Aug 21,Zogby 468 | NH,49,42,Aug 05,ARG 469 | NH,51,42,Jul 30,Zogby 470 | NH,47,42,Jul 23,Zogby 471 | NH,47,45,Jul 21,ARG 472 | NH,47,43,Jul 20,Univ. of New Hampsh. 473 | NH,49,40,Jul 10,Zogby 474 | NH,46,43,Jun 20,Zogby 475 | NH,46,46,Jun 09,ARG 476 | NH,50,40,May 23,Zogby 477 | NJ,48,43,Oct 28,Quinnipiac Univ 478 | NJ,45,41,Oct 27,Eagleton-Rutgers 479 | NJ,54,42,Oct 27,SurveyUSA 480 | NJ,47,40,Oct 24,Fairleigh Dickinson Univ. 481 | NJ,45,41,Oct 22,Quinnipiac Univ. 482 | NJ,49,41,Oct 16,Fairleigh-Dickinson Univ. 483 | NJ,41,43,Oct 15,Eagleton-Rutgers 484 | NJ,49,45,Oct 15,Quinnipiac Univ. 485 | NJ,51,38,Oct 15,Eagleton-Rutgers 486 | NJ,44,42,Oct 10,Fairleigh Dickinson Univ. 487 | NJ,48,43,Oct 09,Fairleigh Dickinson Univ. 488 | NJ,47,40,Oct 03,Eagleton-Rutgers 489 | NJ,49,41,Oct 03,Fairleigh Dickinson Univ. 490 | NJ,49,46,Oct 02,Quinnipiac 491 | NJ,50,45,Oct 01,SurveyUSA 492 | NJ,50,46,Sep 30,Rasmussen 493 | NJ,45,44,Sep 25,Fairleigh Dickinson 494 | NJ,47,43,Sep 17,Quinnipiac Univ. 495 | NJ,50,42,Sep 14,ARG 496 | NJ,45,49,Sep 12,SurveyUSA 497 | NJ,43,39,Sep 04,Eagleton-Rutgers 498 | NJ,49,39,Aug 23,Quinnipiac Univ. 499 | NJ,53,33,Aug 04,Eagleton-Rutgers 500 | NJ,49,36,Aug 02,Quinnipiac Univ. 501 | NJ,42,41,Jul 26,Fairleigh Dickinson U. 502 | NJ,51,41,Jun 30,Rasmussen 503 | NJ,46,40,Jun 20,Quinnipiac Univ. 504 | NJ,46,43,May 16,Quinnipiac Univ. 505 | NM,51,48,Oct 30,Zogby 506 | NM,48,47,Oct 28,ARG 507 | NM,44,47,Oct 27,Research and Polling 508 | NM,45,49,Oct 27,Mason-Dixon 509 | NM,43,48,Oct 24,Zogby 510 | NM,44,49,Oct 16,Mason-Dixon 511 | NM,48,46,Oct 16,ARG 512 | NM,54,44,Oct 15,Zogby 513 | NM,46,47,Oct 04,Gallup 514 | NM,46,43,Oct 02,Research and Polling 515 | NM,54,43,Oct 02,Zogby 516 | NM,43,47,Sep 15,Mason-Dixon 517 | NM,49,44,Sep 14,ARG 518 | NM,54,42,Sep 14,Zogby 519 | NM,50,44,Aug 21,Zogby 520 | NM,49,42,Aug 19,ARG 521 | NM,46,46,Aug 15,Rasmussen 522 | NM,50,43,Aug 04,Rasmussen 523 | NM,49,48,Jul 30,Zogby 524 | NM,52,42,Jul 23,Zogby 525 | NM,49,42,Jul 10,Zogby 526 | NM,49,42,Jul 08,American Research 527 | NM,50,43,Jun 20,Zogby 528 | NM,47,48,Jun 06,Zogby 529 | NM,48,43,May 23,Zogby 530 | NY,52,37,Oct 26,Siena Coll. 531 | NY,57,39,Oct 26,SurveyUSA 532 | NY,54,38,Oct 25,Marist Coll. 533 | NY,58,35,Oct 09,SurveyUSA 534 | NY,51,31,Sep 21,Siena College 535 | NY,55,39,Sep 18,SurveyUSA 536 | NY,49,44,Sep 14,Rasmussen 537 | NY,52,40,Sep 14,ARG 538 | NY,48,40,Sep 13,Marist College 539 | NY,47,41,Sep 09,Quinnipiac Univ. 540 | NY,56,37,Aug 26,Rasmussen 541 | NY,53,35,Aug 09,Quinnipiac Univ. 542 | NY,51,29,Jul 15,Siena Coll. Res. Inst. 543 | NY,58,30,Jun 30,Rasmussen 544 | NY,55,36,Jun 14,Quinnipiac Univ. 545 | NY,57,34,May 31,Rasmussen 546 | NY,51,32,Apr 22,Siena Coll. Res. Inst. 547 | NC,45,53,Oct 29,SurveyUSA 548 | NC,43,52,Oct 25,Mason-Dixon 549 | NC,44,54,Oct 22,SurveyUSA 550 | NC,43,51,Oct 18,Mason-Dixon 551 | NC,47,50,Oct 15,SurveyUSA 552 | NC,47,51,Oct 15,Zogby 553 | NC,45,52,Oct 02,SurveyUSA 554 | NC,47,50,Oct 02,Zogby 555 | NC,43,52,Sep 26,Mason-Dixon 556 | NC,44,49,Sep 14,ARG 557 | NC,47,52,Sep 14,Zogby 558 | NC,42,54,Sep 12,Rasmussen 559 | NC,41,54,Sep 10,Rasmussen 560 | NC,43,53,Sep 09,Rasmussen 561 | NC,43,53,Sep 08,Rasmussen 562 | NC,44,53,Sep 06,Rasmussen 563 | NC,46,50,Sep 06,SurveyUSA 564 | NC,42,55,Sep 05,Rasmussen 565 | NC,45,51,Aug 15,Survey USA 566 | NC,44,51,Jul 26,Survey USA 567 | NC,45,48,Jul 13,Mason-Dixon 568 | NC,41,56,Jul 11,Gallup 569 | NC,42,49,Jun 30,Rasmussen 570 | NC,41,48,May 17,Mason-Dixon 571 | ND,35,55,Oct 18,MN State Univ. 572 | ND,33,62,Sep 08,ARG 573 | OH,43,49,Oct 30,Zogby 574 | OH,47,50,Oct 30,Opinion Dynamics 575 | OH,47,49,Oct 29,SurveyUSA 576 | OH,51,44,Oct 29,Gallup 577 | OH,49,50,Oct 28,Univ. of Cincinnati 578 | OH,45,48,Oct 26,Mason-Dixon 579 | OH,44,46,Oct 24,Zogby 580 | OH,50,50,Oct 24,Columbus Dispatch 581 | OH,49,45,Oct 23,LA Times 582 | OH,49,47,Oct 23,ARG 583 | OH,50,47,Oct 23,SurveyUSA 584 | OH,49,43,Oct 18,Ohio Univ. 585 | OH,50,44,Oct 18,Gallup 586 | OH,45,47,Oct 17,Opinion Dynamics 587 | OH,49,47,Oct 16,SurveyUSA 588 | OH,48,51,Oct 15,Zogby 589 | OH,50,47,Oct 15,ABC News 590 | OH,45,46,Oct 14,Mason-Dixon 591 | OH,48,46,Oct 13,Univ. of Cincinnati 592 | OH,47,49,Oct 12,Rasmussen 593 | OH,46,49,Oct 10,Rasmussen 594 | OH,49,45,Oct 09,Market Shares 595 | OH,48,47,Oct 04,ARG 596 | OH,49,48,Oct 02,SurveyUSA 597 | OH,49,49,Oct 02,Zogby 598 | OH,46,48,Sep 30,Rasmussen 599 | OH,49,46,Sep 26,Gallup 600 | OH,44,48,Sep 21,Opinion Dynamics 601 | OH,45,48,Sep 19,Rasmussen 602 | OH,46,48,Sep 18,ARG 603 | OH,42,49,Sep 14,Mason-Dixon 604 | OH,43,54,Sep 14,Univ. of Cincinnati 605 | OH,47,50,Sep 14,Zogby 606 | OH,42,50,Sep 11,Mason-Dixon 607 | OH,47,50,Sep 06,SurveyUSA 608 | OH,43,52,Sep 05,Gallup 609 | OH,44,49,Aug 24,LA Times 610 | OH,46,51,Aug 21,Zogby 611 | OH,47,48,Aug 17,U. Cinci & Strat. Vision 612 | OH,48,46,Aug 17,Univ. of Cincinnati 613 | OH,47,45,Aug 15,Gallup 614 | OH,48,45,Aug 11,ARG 615 | OH,46,51,Jul 30,Zogby 616 | OH,44,47,Jul 23,Columbus Dispatch 617 | OH,47,48,Jul 23,Zogby 618 | OH,47,45,Jul 22,ARG 619 | OH,49,48,Jul 10,Zogby 620 | OH,44,48,Jun 30,Rasmussen 621 | OH,45,44,Jun 23,American Res.&Fox 622 | OH,49,43,Jun 23,ARG 623 | OH,45,51,Jun 20,Zogby 624 | OH,45,42,Jun 08,LA Times 625 | OH,44,46,May 31,Rasmussen 626 | OH,41,47,May 25,LA Times 627 | OH,49,45,May 23,Zogby 628 | OK,34,64,Oct 28,SurveyUSA 629 | OK,34,64,Oct 18,SurveyUSA 630 | OK,30,64,Oct 10,Cole Hargrave 631 | OK,33,63,Oct 04,SurveyUSA 632 | OK,33,64,Sep 20,SurveyUSA 633 | OK,38,55,Sep 17,ARG 634 | OK,38,57,Aug 18,Survey USA 635 | OK,36,56,Jul 29,Basswood Research 636 | OK,35,59,Jul 12,Consumer Logic 637 | OK,31,63,Jun 30,Rasmussen 638 | OK,34,53,May 19,Wilson Research 639 | OR,50,44,Oct 27,Mason-Dixon 640 | OR,49,43,Oct 25,Davis Hibbitts 641 | OR,50,46,Oct 25,ARG 642 | OR,50,47,Oct 25,SurveyUSA 643 | OR,47,46,Oct 16,Mason-Dixon 644 | OR,52,45,Oct 16,Gallup 645 | OR,56,43,Oct 15,Zogby 646 | OR,52,45,Oct 12,Rasmussen 647 | OR,43,48,Oct 10,Riley Research 648 | OR,49,44,Oct 10,ARG 649 | OR,53,44,Oct 09,SurveyUSA 650 | OR,54,44,Oct 02,Zogby 651 | OR,47,45,Sep 25,Davis Hibbits 652 | OR,47,48,Sep 19,SurveyUSA 653 | OR,43,47,Sep 14,Mason-Dixon 654 | OR,54,42,Sep 14,Zogby 655 | OR,47,45,Sep 11,ARG 656 | OR,53,43,Sep 01,Zogby 657 | OR,54,43,Aug 21,Zogby 658 | OR,50,46,Jul 30,Zogby 659 | OR,52,43,Jul 23,Zogby 660 | OR,50,42,Jul 22,ARG 661 | OR,52,42,Jul 10,Zogby 662 | OR,51,44,Jun 20,Zogby 663 | OR,44,39,Jun 01,Moore Information 664 | OR,50,44,May 23,Zogby 665 | PA,49,48,Nov 00,SurveyUSA 666 | PA,50,46,Oct 30,Zogby 667 | PA,47,47,Oct 29,Quinnipiac Univ. 668 | PA,49,47,Oct 29,Gallup 669 | PA,48,46,Oct 27,Mason-Dixon 670 | PA,50,45,Oct 25,West Chester Univ. 671 | PA,48,47,Oct 24,Temple Univ. 672 | PA,49,45,Oct 24,Zogby 673 | PA,49,46,Oct 24,Gallup 674 | PA,45,44,Oct 23,Quinnipiac Univ. 675 | PA,48,45,Oct 23,LA Times 676 | PA,50,47,Oct 23,ARG 677 | PA,53,45,Oct 23,SurveyUSA 678 | PA,49,44,Oct 20,Keystone Poll 679 | PA,48,46,Oct 19,Muhlenberg Coll. 680 | PA,47,41,Oct 17,Quinnipiac 681 | PA,46,45,Oct 16,Mason-Dixon 682 | PA,51,45,Oct 15,SurveyUSA 683 | PA,52,46,Oct 15,Zogby 684 | PA,49,45,Oct 12,Rasmussen 685 | PA,48,45,Oct 10,Rasmussen 686 | PA,46,43,Oct 09,Quinnipiac Univ. 687 | PA,48,46,Oct 04,ARG 688 | PA,49,47,Oct 03,SurveyUSA 689 | PA,50,43,Oct 02,West Chester Univ. 690 | PA,52,46,Oct 02,Zogby 691 | PA,48,41,Oct 01,Franklin and Marshall Coll. 692 | PA,47,48,Sep 30,Rasmussen 693 | PA,45,44,Sep 27,Mason-Dixon 694 | PA,46,48,Sep 26,Gallup 695 | PA,46,42,Sep 23,Quinnipiac Univ. 696 | PA,48,45,Sep 21,Opinion Dynamics 697 | PA,49,47,Sep 20,Temple Univ. 698 | PA,46,47,Sep 19,Rasmussen 699 | PA,47,46,Sep 16,ARG 700 | PA,45,44,Sep 14,Mason-Dixon 701 | PA,51,48,Sep 14,Zogby 702 | PA,42,46,Sep 12,Quinnipiac Univ. 703 | PA,48,46,Sep 12,Rasmussen 704 | PA,49,49,Sep 11,Franklin and Marshall Coll. 705 | PA,47,47,Sep 10,ABC News 706 | PA,48,49,Sep 08,Rasmussen 707 | PA,49,47,Sep 07,SurveyUSA 708 | PA,47,48,Sep 05,Gallup 709 | PA,47,47,Aug 26,Gallup 710 | PA,48,45,Aug 21,Zogby & Pew 711 | PA,52,44,Aug 21,Zogby 712 | PA,47,42,Aug 16,Quinnipiac Univ. 713 | PA,53,41,Aug 02,Survey USA 714 | PA,53,45,Jul 30,Zogby 715 | PA,52,45,Jul 23,Zogby 716 | PA,48,38,Jul 21,LA Times 717 | PA,52,45,Jul 10,Zogby 718 | PA,48,43,Jun 30,Rasmussen 719 | PA,43,45,Jun 23,Quinnipiac & Fox 720 | PA,48,43,Jun 23,Rasmussen 721 | PA,49,43,Jun 22,Quinnipiac Univ. 722 | PA,52,45,Jun 20,Zogby 723 | PA,47,46,Jun 09,Survey USA 724 | PA,44,41,May 25,Survey USA 725 | PA,51,43,May 23,Zogby 726 | RI,54,41,Oct 25,SurveyUSA 727 | RI,56,36,Oct 09,SurveyUSA 728 | RI,55,37,Sep 18,SurveyUSA 729 | RI,58,30,Sep 11,ARG 730 | RI,49,25,Jun 14,Brown Univ. 731 | RI,53,31,Feb 04,Rhode Island College 732 | SC,43,54,Oct 29,SurveyUSA 733 | SC,39,57,Oct 22,SurveyUSA 734 | SC,40,53,Oct 19,Mason-Dixon 735 | SC,42,55,Oct 10,SurveyUSA 736 | SC,38,58,Sep 19,SurveyUSA 737 | SC,42,51,Sep 19,Rasmussen 738 | SC,40,52,Sep 14,ARG 739 | SC,44,50,Sep 12,Rasmussen 740 | SC,42,53,Aug 18,Survey USA 741 | SC,44,51,Jul 12,Survey USA 742 | SC,40,55,Jun 29,Public Opin. Strat. 743 | SC,39,49,May 31,Rasmussen 744 | SD,36,55,Oct 19,Mason-Dixon 745 | SD,42,52,Oct 11,Rasmussen 746 | SD,29,57,Sep 25,Zogby 747 | SD,37,50,Sep 20,Mason-Dixon 748 | SD,39,58,Sep 09,ARG 749 | SD,41,54,Sep 07,Rasmussen 750 | SD,35,51,May 21,Zogby 751 | TN,40,58,Oct 28,SurveyUSA 752 | TN,41,53,Oct 19,Mason-Dixon 753 | TN,38,60,Oct 17,SurveyUSA 754 | TN,48,50,Oct 15,Zogby 755 | TN,37,54,Oct 12,Univ. of Tennessee 756 | TN,39,50,Oct 09,Middle Tenn. State Univ. 757 | TN,39,58,Oct 03,SurveyUSA 758 | TN,48,49,Oct 02,Zogby 759 | TN,41,55,Sep 20,SurveyUSA 760 | TN,43,50,Sep 16,ARG 761 | TN,46,51,Sep 14,Zogby 762 | TN,37,53,Sep 12,Mason-Dixon 763 | TN,50,48,Aug 21,Zogby 764 | TN,46,48,Aug 02,Survey USA 765 | TN,49,48,Jul 30,Zogby 766 | TN,49,47,Jul 23,Zogby 767 | TN,48,48,Jul 10,Zogby 768 | TN,39,57,Jun 20,Zogby 769 | TN,41,49,Jun 16,Rasmussen 770 | TN,43,54,Jun 06,Zogby 771 | TN,47,49,May 23,Zogby 772 | TX,37,59,Oct 26,SurveyUSA 773 | TX,32,58,Oct 19,Sripps Research 774 | TX,37,60,Oct 09,SurveyUSA 775 | TX,37,58,Sep 19,SurveyUSA 776 | TX,36,58,Sep 17,ARG 777 | TX,37,58,Aug 22,Survey USA 778 | TX,37,55,Jun 30,Rasmussen 779 | TX,38,58,May 31,Rasmussen 780 | TX,29,58,May 15,Rasmussen 781 | UT,24,69,Oct 24,Dan Jones 782 | UT,23,68,Oct 23,Valley Research 783 | UT,27,64,Sep 11,ARG 784 | UT,25,65,Sep 07,Dan Jones 785 | UT,22,67,May 13,Dan Jones 786 | VT,53,40,Oct 10,Rsearch 787 | VT,50,40,Sep 10,ARG 788 | VA,33,51,Nov 03,Rasmussen 789 | VA,47,51,Oct 27,SurveyUSA 790 | VA,44,50,Oct 23,Mason-Dixon 791 | VA,40,49,Oct 22,Times-Dispatch 792 | VA,47,50,Oct 15,Zogby 793 | VA,47,50,Oct 02,Zogby 794 | VA,43,49,Sep 25,Mason-Dixon 795 | VA,42,53,Sep 21,SurveyUSA 796 | VA,47,50,Sep 14,Zogby 797 | VA,43,49,Sep 12,ARG 798 | VA,45,49,Aug 22,Survey USA 799 | VA,45,48,Jul 31,Rasmussen 800 | VA,45,50,Jul 08,Survey USA 801 | VA,45,47,May 31,Rasmussen 802 | WA,51,47,Oct 29,SurveyUSA 803 | WA,50,45,Oct 25,Mason-Dixon 804 | WA,52,45,Oct 15,SurveyUSA 805 | WA,54,44,Oct 15,Zogby 806 | WA,50,44,Oct 14,Elway Poll 807 | WA,54,44,Oct 02,Zogby 808 | WA,51,46,Sep 19,SurveyUSA 809 | WA,51,42,Sep 18,IPSOS 810 | WA,52,38,Sep 17,Elway Poll 811 | WA,50,43,Sep 16,Rasmussen 812 | WA,51,44,Sep 10,ARG 813 | WA,52,44,Sep 05,Gallup 814 | WA,53,45,Aug 21,Zogby 815 | WA,51,43,Aug 17,Survey USA 816 | WA,51,43,Aug 02,Survey USA 817 | WA,53,45,Jul 30,Zogby 818 | WA,52,44,Jul 23,Zogby 819 | WA,53,44,Jul 10,Zogby 820 | WA,49,41,Jun 28,Fairbank-Maslin 821 | WA,43,43,Jun 24,Moore Information 822 | WA,52,45,Jun 20,Zogby 823 | WA,46,42,Jun 11,Mason-Dixon 824 | WA,46,45,Jun 11,Moore Information 825 | WA,49,44,Jun 03,Survey USA 826 | WA,53,44,May 23,Zogby 827 | WV,43,51,Oct 27,Mason-Dixon 828 | WV,46,49,Oct 15,Zogby 829 | WV,44,49,Oct 14,Mason-Dixon 830 | WV,44,50,Oct 02,Zogby 831 | WV,42,51,Sep 18,Gallup 832 | WV,44,50,Sep 15,Rasmussen 833 | WV,39,51,Sep 14,Zogby 834 | WV,46,46,Sep 14,ARG 835 | WV,44,45,Sep 13,Mason-Dixon 836 | WV,42,49,Aug 21,Zogby 837 | WV,48,44,Jul 30,Zogby 838 | WV,47,44,Jul 28,ARG 839 | WV,44,48,Jul 23,Zogby 840 | WV,43,51,Jul 10,Zogby 841 | WV,43,49,Jun 20,ARG 842 | WV,43,49,Jun 20,Zogby 843 | WV,47,44,Jun 17,ARG 844 | WV,47,41,May 28,Mason-Dixon 845 | WV,46,48,May 23,Zogby 846 | WI,45,48,Oct 30,Opinion Dynamics 847 | WI,45,49,Oct 28,Gallup 848 | WI,48,46,Oct 27,Mason-Dixon 849 | WI,48,47,Oct 25,ARG 850 | WI,45,48,Oct 24,Badger Poll 851 | WI,48,46,Oct 24,Zogby 852 | WI,43,51,Oct 17,Gallup 853 | WI,47,47,Oct 17,ARG 854 | WI,45,45,Oct 16,Mason-Dixon 855 | WI,47,48,Oct 16,Univ. of MN 856 | WI,51,48,Oct 15,Zogby 857 | WI,47,43,Oct 09,Market Shares 858 | WI,48,43,Oct 08,St. Norbert Coll 859 | WI,45,48,Oct 03,Gallup 860 | WI,51,48,Oct 02,Zogby 861 | WI,40,50,Sep 23,Harris 862 | WI,45,51,Sep 20,IPSOS 863 | WI,38,52,Sep 17,Badger Poll 864 | WI,44,50,Sep 17,ABC News 865 | WI,44,46,Sep 14,Mason-Dixon 866 | WI,50,48,Sep 14,Zogby 867 | WI,46,46,Sep 13,ARG 868 | WI,44,52,Sep 10,Gallup 869 | WI,44,48,Aug 24,LA Times 870 | WI,51,46,Aug 21,Zogby 871 | WI,50,48,Jul 30,Zogby 872 | WI,50,46,Jul 23,Zogby 873 | WI,48,42,Jul 15,ARG 874 | WI,45,46,Jul 12,Hubert Humphrey Inst 875 | WI,53,44,Jul 10,Zogby 876 | WI,42,46,Jun 23,Badger 877 | WI,51,46,Jun 20,Zogby 878 | WI,42,44,Jun 08,LA Times 879 | WI,52,44,May 23,Zogby 880 | WY,29,65,Sep 09,ARG 881 | -------------------------------------------------------------------------------- /data/2004_poll_data.csv: -------------------------------------------------------------------------------- 1 | Poll Date Sample Bush (R) Kerry (D) Spread 2 | Final Results -- -- 50.7 48.3 Bush +2.4 3 | RCP Average 10/27 - 11/1 -- 48.9 47.4 Bush +1.5 4 | Marist 11/1 - 11/1 -- 49 50 Kerry +1 5 | GW/Battleground 10/31 - 11/1 -- 50 46 Bush +4 6 | IBD/TIPP 10/30 - 11/1 -- 50.1 48 Bush +2.1 7 | CBS News 10/29 - 11/1 -- 49 47 Bush +2 8 | Harris 10/29 - 11/1 -- 49 48 Bush +1 9 | FOX News 10/30 - 10/31 -- 46 48 Kerry +2 10 | Reuters/Zogby 10/29 - 10/31 -- 48 47 Bush +1 11 | CNN/USA Today/Gallup 10/29 - 10/31 -- 49 49 Tie 12 | NBC/WSJ 10/29 - 10/31 -- 48 47 Bush +1 13 | ABC/Wash Post 10/28 - 10/31 -- 49 48 Bush +1 14 | ARG 10/28 - 10/30 -- 48 48 Tie 15 | CBS News/NY Times 10/28 - 10/30 -- 49 46 Bush +3 16 | Pew Research 10/27 - 10/30 -- 51 48 Bush +3 17 | Newsweek 10/27 - 10/29 -- 50 44 Bush +6 18 | GW/Battleground 10/25 - 10/28 -- 51 46 Bush +5 19 | ICR 10/22 - 10/26 -- 48 45 Bush +3 20 | CNN/USA Today/Gallup 10/22 - 10/24 -- 51 46 Bush +5 21 | LA Times 10/21 - 10/24 -- 48 48 Tie 22 | Newsweek 10/21 - 10/22 -- 48 46 Bush +2 23 | Time 10/19 - 10/21 -- 51 46 Bush +5 24 | GW/Battleground 10/18 - 10/21 -- 49 45 Bush +4 25 | AP-Ipsos 10/18 - 10/20 -- 46 49 Kerry +3 26 | Marist 10/17 - 10/19 -- 49 48 Bush +1 27 | FOX News 10/17 - 10/18 -- 49 42 Bush +7 28 | Pew Research 10/15 - 10/19 -- 47 47 Tie 29 | ABC/Wash Post 10/16 - 10/18 -- 51 46 Bush +5 30 | NBC/WSJ 10/16 - 10/18 -- 48 48 Tie 31 | Harris 10/14 - 10/17 -- 49.5 44.5 Bush +5 32 | CBS News/NY Times 10/14 - 10/17 -- 47 45 Bush +2 33 | CNN/USA Today/Gallup 10/14 - 10/16 -- 52 44 Bush +8 34 | Time 10/14 - 10/15 -- 48 47 Bush +1 35 | Newsweek 10/14 - 10/15 -- 50 44 Bush +6 36 | GW/Battleground 10/11 - 10/14 -- 49 46 Bush +3 37 | ABC/Wash Post 10/11 - 10/13 -- 48 48 Tie 38 | Zogby 10/9 - 10/11 -- 45 45 Tie 39 | CBS News 10/9 - 10/11 -- 48 45 Bush +3 40 | ICR 10/9 - 10/11 -- 48 43 Bush +5 41 | CNN/USA Today/Gallup 10/9 - 10/10 -- 48 49 Kerry +1 42 | Time 10/6 - 10/7 -- 46 45 Bush +1 43 | GW/Battleground 10/3 - 10/7 -- 49 46 Bush +3 44 | AP-Ipsos 10/4 - 10/6 -- 46 50 Kerry +4 45 | Marist 10/4 - 10/5 -- 49 46 Bush +3 46 | FOX News 10/3 - 10/4 -- 47 45 Bush +2 47 | ICR 10/1 - 10/5 -- 51 45 Bush +6 48 | ARG 10/2 - 10/4 -- 46 46 Tie 49 | ABC News/Wash Post 10/1 - 10/3 -- 51 46 Bush +5 50 | CBS News/NY Times 10/1 - 10/3 -- 47 47 Tie 51 | Zogby 10/1 - 10/3 -- 46 43 Bush +3 52 | Pew Research 10/1 - 10/3 -- 49 44 Bush +5 53 | CNN/USA Today/Gallup 10/1 - 10/3 -- 49 49 Tie 54 | Newsweek 9/30 - 10/2 -- 45 47 Kerry +2 55 | Sacred Heart Univ 9/27 - 10/2 -- 48 43 Bush +5 56 | Battleground 9/27 - 9/30 -- 51 44 Bush +7 57 | LA Times 9/25 - 9/28 -- 51 45 Bush +6 58 | CNN/USA Today/Gallup 9/24 - 9/26 -- 52 44 Bush +8 59 | IBD/TIPP 9/22 - 9/27 -- 45 45 Tie 60 | ABC News/Wash Post 9/23 - 9/26 -- 51 45 Bush +6 61 | Pew Research 9/22 - 9/26 -- 48 40 Bush +8 62 | Time 9/21 - 9/23 -- 48 42 Bush +6 63 | FOX News 9/21 - 9/22 -- 46 42 Bush +4 64 | Battleground 9/20 - 9/23 -- 50 45 Bush +5 65 | Marist 9/20 - 9/22 -- 50 44 Bush +6 66 | CBS News 9/20 - 9/22 -- 51 42 Bush +9 67 | AP-Ipsos 9/20 - 9/22 -- 52 45 Bush +7 68 | Pew Research 9/17 - 9/21 -- 45 42 Bush +3 69 | NBC/WSJ 9/17 - 9/19 -- 50 46 Bush +4 70 | Zogby 9/17 - 9/19 -- 46 43 Bush +3 71 | IBD/TIPP 9/14 - 9/18 -- 45 42 Bush +3 72 | ARG 9/7 - 9/21 -- 47 46 Bush +1 73 | CBS News 9/12 - 9/16 -- 50 41 Bush +9 74 | CNN/USA Today/Gallup 9/13 - 9/15 -- 54 40 Bush +14 75 | Battleground 9/12 - 9/15 -- 49 45 Bush +4 76 | Pew Research 9/11 - 9/14 -- 47 46 Bush +1 77 | Harris 9/9 - 9/13 -- 47 48 Kerry +1 78 | Newsweek 9/9 - 9/10 -- 49 43 Bush +6 79 | IBD/TIPP 9/7 - 9/12 -- 46 46 Tie 80 | Zogby 9/8 - 9/9 -- 46 42 Bush +4 81 | Time 9/7 - 9/9 -- 52 41 Bush +11 82 | AP-Ipsos 9/7 - 9/9 -- 51 46 Bush +5 83 | FOX News 9/7 - 9/8 -- 47 43 Bush +4 84 | ABC News/Wash Post 9/6 - 9/8 -- 52 43 Bush +9 85 | Pew Research 9/8 - 9/10 -- 54 38 Bush +16 86 | CBS News 9/6 - 9/8 -- 49 42 Bush +7 87 | CNN/USA Today/Gallup 9/3 - 9/5 -- 52 45 Bush +7 88 | Newsweek 9/2 - 9/3 -- 52 41 Bush +11 89 | Time 8/31 - 9/2 -- 52 41 Bush +11 90 | Zogby 8/30 - 9/2 -- 46 43 Bush +3 91 | ARG 8/30 - 9/1 -- 47 47 Tie 92 | ABC News/Wash Post 8/26 - 8/29 -- 48 48 Tie 93 | Time 8/24 - 8/26 -- 46 44 Bush +2 94 | FOX News 8/24 - 8/25 -- 43 44 Kerry +1 95 | CNN/USA Today/Gallup 8/23 - 8/25 -- 48 46 Bush +2 96 | NBC/WSJ 8/23 - 8/25 -- 47 45 Bush +2 97 | NPR - POS/GQR 8/21 - 8/24 -- 43 47 Kerry +4 98 | LA Times 8/21 - 8/24 -- 47 44 Bush +3 99 | IBD/TIPP 8/17 - 8/23 -- 43 43 Tie 100 | Battleground 8/15 - 8/17 -- 43 44 Kerry +1 101 | CBS News 8/15 - 8/18 -- 45 46 Kerry +1 102 | Harris 8/10 - 8/15 -- 47 47 Tie 103 | Zogby 8/12 - 8/14 -- 43 47 Kerry +4 104 | Gallup 8/9 - 8/11 -- 48 46 Bush +2 105 | Pew Research 8/5 - 8/10 -- 45 47 Kerry +2 106 | Time 8/3 - 8/5 -- 43 48 Kerry +5 107 | AP-Ipsos 8/3 - 8/5 -- 45 48 Kerry +3 108 | Democracy Corps (D) 8/2 - 8/5 -- 44 49 Kerry +5 109 | IBD/TIPP 8/2 - 8/5 -- 42 45 Kerry +3 110 | FOX News 8/3 - 8/4 -- 43 47 Kerry +4 111 | Marist 7/30 - 8/2 -- 47 47 Tie 112 | CBS News 7/31 - 8/1 -- 43 48 Kerry +5 113 | CNN/USA Today/Gallup 7/30 - 8/1 -- 51 45 Bush +6 114 | ABC News/Wash Post 7/30 - 8/1 -- 47 49 Kerry +2 115 | ARG 7/30 - 8/1 -- 45 49 Kerry +4 116 | Newsweek 7/29 - 7/30 -- 42 49 Kerry +7 117 | ABC News/Wash Post 7/22 - 7/25 -- 48 46 Bush +2 118 | IBD/TIPP 7/19 - 7/24 -- 42 44 Kerry +2 119 | Time 7/20 - 7/22 -- 43 46 Kerry +3 120 | Quinnipiac 7/18 - 7/22 -- 43 44 Kerry +1 121 | FOX News 7/20 - 7/21 -- 43 44 Kerry +1 122 | NBC/WSJ 7/19 - 7/21 -- 47 45 Bush +2 123 | CNN/USA Today/Gallup 7/19 - 7/21 -- 46 47 Kerry +1 124 | LA Times 7/17 - 7/21 -- 44 46 Kerry +2 125 | Pew Research 7/8 - 7/18 -- 44 46 Kerry +2 126 | IBD/TIPP 7/12 - 7/17 -- 40 42 Kerry +2 127 | Marist 7/12 - 7/15 -- 44 45 Kerry +1 128 | CBS News/NY Times 7/11 - 7/15 -- 42 45 Kerry +3 129 | Democracy Corps (D) 7/10 - 7/13 -- 45 48 Kerry +3 130 | ABC News/Wash Post 7/8 - 7/11 -- 46 46 Tie 131 | CNN/USA Today/Gallup 7/8 - 7/11 -- 45 50 Kerry +5 132 | IBD/TIPP 7/6 - 7/10 -- 43 47 Kerry +4 133 | Newsweek 7/8 - 7/9 -- 44 47 Kerry +3 134 | Time 7/6 - 7/8 -- 45 47 Kerry +2 135 | Zogby 7/6 - 7/7 -- 45 47 Kerry +2 136 | AP-Ipsos 7/5 - 7/7 -- 49 45 Bush +4 137 | NBC/WSJ 7/6 - 7/6 -- 41 49 Kerry +8 138 | ARG 7/1 - 7/3 -- 44 47 Kerry +3 139 | NBC/WSJ 6/25 - 6/28 -- 45 44 Bush +1 140 | CBS News/NY Times 6/23 - 6/27 -- 43 42 Bush +1 141 | FOX News 6/22 - 6/23 -- 47 40 Bush +7 142 | CNN/USA Today/Gallup 6/21 - 6/23 -- 48 47 Bush +1 143 | Battleground 6/20 - 6/23 -- 43 41 Bush +2 144 | Gallup 6/9 - 6/30 -- 45 44 Bush +1 145 | ABC News/Wash Post 6/17 - 6/20 -- 44 48 Kerry +4 146 | IBD/TIPP 6/14 - 6/19 -- 44 41 Bush +3 147 | Harris 6/8 - 6/15 -- 51 41 Bush +10 148 | IBD/TIPP 6/8 - 6/13 -- 43 40 Bush +3 149 | Pew Research 6/3 - 6/13 -- 46 42 Bush +4 150 | AP-Ipsos 6/7 - 6/9 -- 46 45 Bush +1 151 | FOX News 6/8 - 6/9 -- 42 42 Tie 152 | LA Times 6/5 - 6/8 -- 42 48 Kerry +6 153 | Gallup 6/3 - 6/6 -- 44 50 Kerry +6 154 | IBD/TIPP 6/1 - 6/6 -- 43 41 Bush +2 155 | Zogby 6/2 - 6/5 -- 42 44 Kerry +2 156 | ARG 6/1 - 6/3 -- 45 46 Kerry +1 157 | Quinnipiac 5/18 - 5/24 -- 43 42 Bush +1 158 | CNN/USA Today/Gallup 5/21 - 5/23 -- 46 47 Kerry +1 159 | InsiderAdvantage 5/21 - 5/22 -- 43 43 Tie 160 | ABC News/Wash Post 5/20 - 5/23 -- 46 46 Tie 161 | CBS News 5/20 - 5/23 -- 41 47 Kerry +6 162 | FOX News 5/18 - 5/19 -- 40 40 Tie 163 | IBD/TIPP 5/12 - 5/18 -- 42 41 Bush +1 164 | Newsweek 5/13 - 5/14 -- 42 43 Kerry +1 165 | Democracy Corps (D) 5/10 - 5/13 -- 45 46 Kerry +1 166 | Zogby 5/10 - 5/13 -- 42 47 Kerry +5 167 | CNN 5/12 - 5/13 -- 44 49 Kerry +5 168 | CNN/USA Today/Gallup 5/7 - 5/9 -- 47 45 Bush +2 169 | Pew Research 5/3 - 5/9 -- 43 46 Kerry +3 170 | Ayres McHenry 5/3 - 5/6 -- 45 41 Bush +4 171 | ARG 5/3 - 5/3 -- 44 45 Kerry +1 172 | IBD/TIPP 5/2 - 5/8 -- 46 41 Bush +5 173 | AP-Ipsos 5/3 - 5/5 -- 46 43 Bush +3 174 | CNN/USA Today/Gallup 5/2 - 5/4 -- 47 47 Tie 175 | NBC/WSJ 5/1 - 5/3 -- 46 42 Bush +4 176 | Quinnipiac 4/26 - 5/3 -- 43 40 Bush +3 177 | Sacred Heart Univ 4/26 - 5/1 -- 52 46 Bush +6 178 | CBS News/NY Times 4/23 - 4/27 -- 43 41 Bush +2 179 | Marist 4/20 - 4/23 -- 47 43 Bush +4 180 | FOX News 4/21 - 4/22 -- 42 40 Bush +2 181 | Democracy Corps (D) 4/19 - 4/22 -- 47 44 Bush +3 182 | IBD/TIPP 4/14 - 4/19 -- 44 40 Bush +4 183 | CNN/USA Today/Gallup 4/16 - 4/18 -- 50 44 Bush +6 184 | ABC News/Wash Post 4/15 - 4/18 -- 48 43 Bush +5 185 | Zogby 4/15 - 4/17 -- 44.7 45.3 Kerry +0.6 186 | Harris 4/8 - 4/15 -- 46 43 Bush +3 187 | InsiderAdvantage 4/12 - 4/14 -- 37 43 Kerry +6 188 | Newsweek 4/8 - 4/9 -- 42 46 Kerry +4 189 | ARG 4/6 - 4/9 -- 43 48 Kerry +5 190 | CNN/USA Today/Gallup 4/5 - 4/8 -- 47 43 Bush +4 191 | FOX News 4/6 - 4/7 -- 43 42 Bush +1 192 | AP-Ipsos 4/5 - 4/7 -- 45 44 Bush +1 193 | Zogby 4/1 - 4/4 -- 46 45 Bush +1 194 | CBS News 3/30 - 4/1 -- 43 48 Kerry +5 195 | IBD/TIPP 3/29 - 4/3 -- 43 45 Kerry +2 196 | Battleground 3/28 - 3/31 -- 43 39 Bush +4 197 | LA Times 3/27 - 3/30 -- 44 47 Kerry +3 198 | CNN/USA Today/Gallup 3/26 - 3/28 -- 49 45 Bush +4 199 | Pew Research 3/22 - 3/28 -- 44 43 Bush +1 200 | Newsweek 3/25 - 3/26 -- 45 43 Bush +2 201 | FOX News 3/23 - 3/24 -- 43 42 Bush +1 202 | Quinnipiac 3/16 - 3/22 -- 46 40 Bush +6 203 | AP-Ipsos 3/19 - 3/21 -- 46 43 Bush +3 204 | Democracy Corps (D) 3/16 - 3/21 -- 50 47 Bush +3 205 | InsiderAdvantage 3/18 - 3/19 -- 46 41 Bush +5 206 | Zogby 3/17 - 3/19 -- 46 46 Tie 207 | Newsweek 3/18 - 3/19 -- 45 43 Bush +2 208 | CBS News/NY Times 3/10 - 3/14 -- 46 38 Bush +8 209 | ARG 3/9 - 3/11 -- 42 48 Kerry +6 210 | IBD/TIPP 3/8 - 3/11 -- 45 40 Bush +5 211 | NBC/WSJ 3/6 - 3/8 -- 45 43 Bush +2 212 | CNN/USA Today/Gallup 3/5 - 3/7 -- 44 50 Kerry +6 213 | ABC News/Wash Post 3/4 - 3/7 -- 44 48 Kerry +4 214 | IBD/TIPP 3/1 - 3/7 -- 41 44 Kerry +3 215 | FOX News 3/3 - 3/4 -- 44 44 Tie 216 | AP-Ipsos 3/1 - 3/3 -- 46 45 Bush +1 217 | NPR 2/26 - 9/25 -- 47 45 Bush +2 218 | Pew Research 2/24 - 2/29 -- 44 48 Kerry +4 219 | CBS News 2/24 - 2/27 -- 46 47 Kerry +1 220 | Newsweek 2/19 - 2/20 -- 45 48 Kerry +3 221 | FOX News 2/18 - 2/19 -- 45 45 Tie 222 | ARG 2/17 - 2/19 -- 46 48 Kerry +2 223 | CNN/USA Today/Gallup 2/16 - 2/17 -- 43 55 Kerry +12 224 | Rasmussen 2/15 - 2/17 -- 48 43 Bush +5 225 | Univ. of Connecticut 2/12 - 2/16 -- 45 46 Kerry +1 226 | Pew Research 2/11 - 2/16 -- 47 47 Tie 227 | CBS News 2/12 - 2/15 -- 43 48 Kerry +5 228 | ABC News/Wash Post 2/10 - 2/11 -- 43 52 Kerry +9 229 | Rasmussen 2/8 - 2/10 -- 46 45 Bush +1 230 | CNN/USA Today/Gallup 2/6 - 2/8 -- 49 48 Bush +1 231 | Time 2/5 - 2/6 -- 50 48 Bush +2 232 | Newsweek 2/5 - 2/6 -- 45 50 Kerry +5 233 | FOX News 2/4 - 2/5 -- 47 43 Bush +4 234 | CNN/USA Today/Gallup 1/29 - 2/1 -- 46 53 Kerry +7 235 | Rasmussen 1/29 - 1/31 -- 43 46 Kerry +3 236 | Quinnipiac 1/28 - 1/31 -- 43 51 Kerry +8 237 | -------------------------------------------------------------------------------- /data/2008-pres-polls.csv: -------------------------------------------------------------------------------- 1 | State,Obama,McCain,Start,End,Pollster 2 | AL,36,61,Oct 27,Oct 28,SurveyUSA 3 | AL,34,54,Oct 15,Oct 16,Capital Survey 4 | AL,35,62,Oct 08,Oct 09,SurveyUSA 5 | AL,35,55,Oct 06,Oct 07,Capital Survey 6 | AL,39,60,Sep 22,Sep 22,Rasmussen 7 | AL,34,64,Sep 16,Sep 17,SurveyUSA 8 | AL,36,58,Sep 13,Sep 16,ARG 9 | AL,25,52,Sep 08,Sep 15,U. of South Alabama 10 | AL,35,55,Sep 03,Sep 09,Capital Survey 11 | AL,34,47,Jul 29,Aug 04,Capital Survey 12 | AL,37,55,Jul 31,Jul 31,Rasmussen 13 | AL,36,49,Jun 25,Jun 26,Capital Survey 14 | AL,36,51,Jun 26,Jun 26,Rasmussen 15 | AL,33,57,May 29,Jun 02,Capital Survey 16 | AL,32,60,May 27,May 27,Rasmussen 17 | AL,34,57,May 16,May 18,SurveyUSA 18 | AL,36,55,Apr 16,Apr 24,Capital Survey 19 | AL,32,64,Apr 11,Apr 13,SurveyUSA 20 | AL,37,55,Apr 02,Apr 02,Rasmussen 21 | AL,30,57,Mar 24,Mar 27,U. of South Alabama 22 | AL,35,62,Mar 14,Mar 16,SurveyUSA 23 | AL,40,54,Feb 26,Feb 28,SurveyUSA 24 | AL,29,63,Jan 16,Jan 17,SurveyUSA 25 | AK,41,57,Oct 28,Oct 28,Rasmussen 26 | AK,42,53,Oct 17,Oct 19,Ivan Moore Research 27 | AK,38,55,Oct 03,Oct 06,Ivan Moore Research 28 | AK,40,55,Oct 06,Oct 06,Rasmussen 29 | AK,37,55,Sep 17,Sep 21,Fairleigh Dickinson U. 30 | AK,39,55,Sep 09,Sep 11,ARG 31 | AK,33,64,Sep 09,Sep 09,Rasmussen 32 | AK,35,54,Aug 30,Sep 02,Ivan Moore Research 33 | AK,39,44,Jul 30,Jul 30,Rasmussen 34 | AK,40,45,Jul 17,Jul 17,Rasmussen 35 | AK,41,45,Jun 16,Jun 16,Rasmussen 36 | AK,41,50,May 14,May 14,Rasmussen 37 | AK,43,48,Apr 07,Apr 07,Rasmussen 38 | AK,43,48,Feb 26,Feb 28,SurveyUSA 39 | AZ,46,50,Oct 28,Oct 30,ARG 40 | AZ,44,48,Oct 27,Oct 28,Mason-Dixon 41 | AZ,46,53,Oct 23,Oct 28,Opinion Research 42 | AZ,41,49,Oct 18,Oct 27,Northern Arizona U. 43 | AZ,44,46,Oct 23,Oct 26,Arizona State U. 44 | AZ,46,51,Oct 26,Oct 26,Rasmussen 45 | AZ,42,44,Oct 16,Oct 19,Zimmerman 46 | AZ,38,59,Sep 29,Sep 29,Rasmussen 47 | AZ,38,45,Sep 25,Sep 28,Arizona State U. 48 | AZ,39,56,Sep 11,Sep 14,ARG 49 | AZ,30,40,Aug 14,Aug 16,Arizona State U. 50 | AZ,41,47,Aug 13,Aug 15,Mason-Dixon 51 | AZ,36,52,Jul 30,Jul 30,Rasmussen 52 | AZ,40,49,Jun 25,Jun 25,Rasmussen 53 | AZ,28,38,Jun 20,Jun 21,Arizona State U. 54 | AZ,39,50,May 12,May 20,Rocky Mtn Poll 55 | AZ,38,47,Apr 24,Apr 27,Arizona State U. 56 | AZ,37,57,Apr 15,Apr 15,Rasmussen 57 | AZ,33,55,Mar 30,Apr 08,Northern Arizona U. 58 | AZ,39,51,Feb 26,Feb 28,SurveyUSA 59 | AZ,38,49,Feb 21,Feb 24,Arizona State U. 60 | AR,44,51,Oct 28,Oct 31,ARG 61 | AR,44,54,Oct 27,Oct 27,Rasmussen 62 | AR,36,51,Oct 01,Oct 21,U. of Arkansas 63 | AR,41,53,Sep 20,Sep 22,ARG 64 | AR,42,51,Sep 22,Sep 22,Rasmussen 65 | AR,37,47,Jul 14,Jul 14,Rasmussen 66 | AR,41,45,Jun 16,Jun 16,Rasmussen 67 | AR,39,48,Jun 12,Jun 12,Rasmussen 68 | AR,33,57,May 12,May 12,Rasmussen 69 | AR,30,59,Mar 18,Mar 18,Rasmussen 70 | AR,27,43,Mar 06,Mar 11,Opinion Res. 71 | AR,33,53,Feb 26,Feb 28,SurveyUSA 72 | CA,60,36,Oct 29,Oct 31,SurveyUSA 73 | CA,55,33,Oct 18,Oct 28,Field Poll 74 | CA,61,34,Oct 25,Oct 25,Rasmussen 75 | CA,56,33,Oct 12,Oct 19,Public Policy Inst. of Calif. 76 | CA,59,35,Oct 15,Oct 16,SurveyUSA 77 | CA,56,40,Oct 09,Oct 09,Rasmussen 78 | CA,55,39,Oct 04,Oct 05,SurveyUSA 79 | CA,53,43,Sep 23,Sep 24,SurveyUSA 80 | CA,56,39,Sep 22,Sep 22,Rasmussen 81 | CA,53,39,Sep 18,Sep 20,ARG 82 | CA,50,40,Sep 09,Sep 16,Public Policy Inst. of Calif. 83 | CA,52,36,Sep 05,Sep 14,Field Poll 84 | CA,51,37,Aug 20,Aug 20,Rasmussen 85 | CA,48,39,Aug 12,Aug 19,Pub. Policy Inst. of Calif. 86 | CA,50,38,Jul 24,Jul 24,Rasmussen 87 | CA,50,35,Jul 08,Jul 22,Pub. Policy Inst. of Calif. 88 | CA,54,30,Jul 08,Jul 14,Field Poll 89 | CA,58,30,Jun 23,Jun 23,Rasmussen 90 | CA,53,41,Jun 17,Jun 19,SurveyUSA 91 | CA,52,35,May 16,May 27,Field Poll 92 | CA,47,40,May 20,May 21,LA Times 93 | CA,52,38,May 20,May 20,Rasmussen 94 | CA,49,41,May 16,May 18,SurveyUSA 95 | CA,50,43,Apr 16,Apr 16,Rasmussen 96 | CA,50,43,Apr 11,Apr 13,SurveyUSA 97 | CA,49,40,Mar 11,Mar 18,Public Policy Inst. of Calif. 98 | CA,54,40,Mar 14,Mar 16,SurveyUSA 99 | CA,53,38,Mar 12,Mar 12,Rasmussen 100 | CA,51,40,Feb 26,Feb 28,SurveyUSA 101 | CA,61,34,Feb 15,Feb 17,SurveyUSA 102 | CO,52,45,Oct 28,Oct 30,ARG 103 | CO,49,44,Oct 28,Oct 29,Mason-Dixon 104 | CO,51,45,Oct 27,Oct 28,Marist Coll. 105 | CO,53,45,Oct 23,Oct 28,Opinion Research 106 | CO,48,44,Oct 23,Oct 27,Financial Dynamics 107 | CO,50,41,Oct 22,Oct 26,GfK Roper 108 | CO,50,46,Oct 26,Oct 26,Rasmussen 109 | CO,53,45,Oct 26,Oct 26,Insider Advantage 110 | CO,52,40,Oct 21,Oct 23,Public Opinion Strat. 111 | CO,51,46,Oct 20,Oct 20,Insider Advantage 112 | CO,51,46,Oct 19,Oct 19,Rasmussen 113 | CO,52,45,Oct 16,Oct 16,Rasmussen 114 | CO,51,47,Oct 11,Oct 14,Opinion Research 115 | CO,47,43,Oct 10,Oct 13,Suffolk U. 116 | CO,52,43,Oct 08,Oct 12,Quinnipiac U. 117 | CO,51,45,Oct 06,Oct 06,Insider Advantage 118 | CO,51,45,Oct 05,Oct 05,Rasmussen 119 | CO,44,44,Sep 29,Oct 01,Mason-Dixon 120 | CO,49,48,Sep 28,Sep 28,Rasmussen 121 | CO,45,48,Sep 23,Sep 25,ARG 122 | CO,44,43,Sep 19,Sep 23,Ciruli Assoc. 123 | CO,50,41,Sep 23,Sep 23,Insider Advantage 124 | CO,50,47,Sep 23,Sep 23,Rasmussen 125 | CO,51,47,Sep 21,Sep 23,Opinion Research 126 | CO,49,45,Sep 14,Sep 21,Quinnipiac U. 127 | CO,51,41,Sep 17,Sep 17,Insider Advantage 128 | CO,45,44,Sep 11,Sep 15,Financial Dynamics 129 | CO,46,48,Sep 14,Sep 14,Rasmussen 130 | CO,44,46,Sep 10,Sep 13,ARG 131 | CO,49,46,Sep 09,Sep 10,Insider Advantage 132 | CO,49,46,Sep 07,Sep 07,Rasmussen 133 | CO,46,47,Aug 24,Aug 26,Opinion Research 134 | CO,44,39,Aug 21,Aug 24,Suffolk U. 135 | CO,46,47,Aug 15,Aug 21,Quinnipiac U. 136 | CO,46,43,Aug 13,Aug 15,Mason-Dixon 137 | CO,41,44,Aug 11,Aug 13,Rocky Mtn Poll 138 | CO,45,47,Aug 13,Aug 13,Rasmussen 139 | CO,44,46,Jul 14,Jul 22,Quinnipiac U. 140 | CO,49,42,Jul 21,Jul 21,Rasmussen 141 | CO,49,44,Jun 17,Jun 24,Quinnipiac U. 142 | CO,43,41,Jun 17,Jun 17,Rasmussen 143 | CO,48,42,May 19,May 19,Rasmussen 144 | CO,46,43,Apr 16,Apr 16,Rasmussen 145 | CO,46,46,Mar 17,Mar 17,Rasmussen 146 | CO,50,41,Feb 26,Feb 28,SurveyUSA 147 | CT,56,31,Oct 18,Oct 22,U. of Connecticut 148 | CT,56,39,Oct 14,Oct 14,Rasmussen 149 | CT,54,38,Sep 24,Sep 25,SurveyUSA 150 | CT,49,35,Sep 19,Sep 23,Pulsar Research 151 | CT,54,39,Sep 17,Sep 19,ARG 152 | CT,53,41,Sep 16,Sep 16,Rasmussen 153 | CT,51,36,Jul 31,Jul 31,Rasmussen 154 | CT,52,35,Jun 30,Jun 30,Rasmussen 155 | CT,56,35,Jun 26,Jun 29,Quinnipiac U. 156 | CT,47,44,May 29,May 29,Rasmussen 157 | CT,52,35,Mar 19,Mar 24,Quinnipiac U. 158 | CT,50,38,Mar 11,Mar 11,Rasmussen 159 | CT,55,34,Feb 26,Feb 28,SurveyUSA 160 | DE,63,33,Oct 27,Oct 28,SurveyUSA 161 | DE,56,41,Oct 10,Oct 10,Rasmussen 162 | DE,56,38,Oct 06,Oct 08,West Chester U. 163 | DE,57,37,Sep 22,Sep 23,SurveyUSA 164 | DE,56,36,Sep 17,Sep 21,Fairleigh Dickinson U. 165 | DE,51,40,Sep 13,Sep 15,ARG 166 | DE,55,43,Sep 13,Sep 13,Rasmussen 167 | DE,50,41,Feb 26,Feb 28,SurveyUSA 168 | DC,82,13,Sep 11,Sep 13,ARG 169 | FL,48,46,Oct 30,Nov 02,Zogby 170 | FL,50,46,Oct 29,Oct 31,ARG 171 | FL,47,45,Oct 29,Oct 30,Mason-Dixon 172 | FL,47,47,Oct 29,Oct 30,Datamar 173 | FL,51,47,Oct 23,Oct 28,Opinion Research 174 | FL,45,44,Oct 23,Oct 27,Financial Dynamics 175 | FL,50,43,Oct 25,Oct 27,LA Times 176 | FL,45,43,Oct 22,Oct 26,GfK Roper 177 | FL,47,45,Oct 22,Oct 26,Quinnipiac U. 178 | FL,47,47,Oct 23,Oct 26,Zogby 179 | FL,49,44,Oct 23,Oct 26,Suffolk U. 180 | FL,49,44,Oct 25,Oct 26,Datamar 181 | FL,51,47,Oct 26,Oct 26,Rasmussen 182 | FL,48,47,Oct 22,Oct 22,Insider Advantage 183 | FL,49,42,Oct 20,Oct 22,Polling Company 184 | FL,45,46,Oct 20,Oct 21,Mason-Dixon 185 | FL,49,44,Oct 16,Oct 21,Quinnipiac U. 186 | FL,48,49,Oct 19,Oct 19,Rasmussen 187 | FL,47,49,Oct 16,Oct 17,SurveyUSA 188 | FL,51,46,Oct 11,Oct 14,Opinion Research 189 | FL,47,42,Oct 12,Oct 13,Datamar 190 | FL,48,44,Oct 13,Oct 13,Insider Advantage 191 | FL,51,46,Oct 12,Oct 12,Rasmussen 192 | FL,50,47,Oct 08,Oct 08,Rasmussen 193 | FL,48,46,Oct 04,Oct 06,Mason-Dixon 194 | FL,52,45,Oct 05,Oct 05,Rasmussen 195 | FL,46,42,Sep 27,Sep 30,Suffolk U. 196 | FL,49,46,Sep 30,Sep 30,Insider Advantage 197 | FL,51,47,Sep 28,Sep 30,Opinion Research 198 | FL,51,43,Sep 27,Sep 29,Quinnipiac U. 199 | FL,47,47,Sep 28,Sep 28,Rasmussen 200 | FL,47,48,Sep 27,Sep 28,SurveyUSA 201 | FL,47,46,Sep 23,Sep 25,ARG 202 | FL,47,48,Sep 24,Sep 24,Rasmussen 203 | FL,46,51,Sep 21,Sep 21,Rasmussen 204 | FL,47,45,Sep 16,Sep 18,Mason-Dixon 205 | FL,45,47,Sep 14,Sep 17,Schroth/Polling Co. 206 | FL,45,51,Sep 16,Sep 17,SurveyUSA 207 | FL,46,46,Sep 14,Sep 17,ARG 208 | FL,48,48,Sep 14,Sep 16,Opinion Research 209 | FL,44,44,Sep 11,Sep 15,Financial Dynamics 210 | FL,44,49,Sep 14,Sep 14,Rasmussen 211 | FL,42,50,Sep 09,Sep 10,Insider Advantage 212 | FL,43,50,Sep 05,Sep 09,Quinnipiac U. 213 | FL,48,48,Sep 07,Sep 07,Rasmussen 214 | FL,45,44,Aug 25,Aug 26,Mason-Dixon 215 | FL,43,47,Aug 17,Aug 24,Quinnipiac U. 216 | FL,46,47,Aug 18,Aug 20,ARG 217 | FL,43,46,Aug 18,Aug 18,Rasmussen 218 | FL,44,48,Aug 11,Aug 11,Insider Advantage 219 | FL,44,50,Aug 01,Aug 03,SurveyUSA 220 | FL,46,44,Jul 23,Jul 29,Quinnipiac U. 221 | FL,46,45,Jul 22,Jul 22,Rasmussen 222 | FL,45,47,Jul 19,Jul 21,ARG 223 | FL,41,48,Jun 26,Jun 26,Rasmussen 224 | FL,39,47,Jun 18,Jun 18,Rasmussen 225 | FL,49,44,Jun 13,Jun 17,ARG 226 | FL,47,43,Jun 09,Jun 16,Quinnipiac U. 227 | FL,41,45,May 13,May 20,Quinnipiac U. 228 | FL,40,50,May 19,May 19,Rasmussen 229 | FL,43,44,Apr 23,Apr 29,Quinnipiac U. 230 | FL,38,53,Apr 10,Apr 10,Rasmussen 231 | FL,37,46,Mar 24,Mar 31,Quinnipiac U. 232 | FL,43,47,Mar 12,Mar 12,Rasmussen 233 | FL,45,47,Feb 26,Feb 28,SurveyUSA 234 | FL,37,53,Feb 16,Feb 16,Rasmussen 235 | GA,47,52,Oct 30,Oct 30,Rasmussen 236 | GA,47,52,Oct 23,Oct 28,Opinion Research 237 | GA,47,48,Oct 27,Oct 27,Insider Advantage 238 | GA,43,49,Oct 22,Oct 23,Mason-Dixon 239 | GA,48,47,Oct 23,Oct 23,Insider Advantage 240 | GA,46,51,Oct 22,Oct 22,Rasmussen 241 | GA,45,53,Oct 11,Oct 14,Opinion Research 242 | GA,43,51,Oct 11,Oct 12,SurveyUSA 243 | GA,46,49,Oct 09,Oct 09,Insider Advantage 244 | GA,45,54,Oct 07,Oct 07,Rasmussen 245 | GA,44,50,Sep 30,Sep 30,Insider Advantage 246 | GA,44,52,Sep 28,Sep 29,SurveyUSA 247 | GA,39,57,Sep 18,Sep 21,ARG 248 | GA,43,51,Sep 17,Sep 17,Insider Advantage 249 | GA,41,57,Sep 14,Sep 16,SurveyUSA 250 | GA,43,54,Sep 16,Sep 16,Rasmussen 251 | GA,38,56,Sep 10,Sep 10,Insider Advantage 252 | GA,43,50,Aug 14,Aug 14,Rasmussen 253 | GA,39,48,Jul 17,Jul 17,Rasmussen 254 | GA,44,46,Jul 02,Jul 02,Insider Advantage 255 | GA,43,53,Jun 26,Jun 26,Rasmussen 256 | GA,43,44,Jun 18,Jun 18,Insider Advantage 257 | GA,41,51,Jun 04,Jun 04,Rasmussen 258 | GA,39,53,May 06,May 06,Rasmussen 259 | GA,40,53,Mar 20,Mar 20,Rasmussen 260 | GA,41,54,Feb 26,Feb 28,SurveyUSA 261 | HI,68,27,Sep 20,Sep 20,Rasmussen 262 | HI,63,32,Sep 07,Sep 12,ARG 263 | HI,61,31,Feb 26,Feb 28,SurveyUSA 264 | ID,25,68,Sep 08,Sep 10,ARG 265 | ID,29,68,Sep 09,Sep 09,Rasmussen 266 | ID,29,52,Aug 18,Aug 22,Greg Smith 267 | ID,39,52,Feb 26,Feb 28,SurveyUSA 268 | IL,60,38,Nov 01,Nov 01,Rasmussen 269 | IL,61,32,Oct 19,Oct 22,U. of Wisconsin 270 | IL,56,32,Oct 16,Oct 18,Market Shares 271 | IL,56,39,Oct 13,Oct 13,Rasmussen 272 | IL,53,37,Sep 14,Sep 17,U. of Wisconsin 273 | IL,56,40,Sep 17,Sep 17,Rasmussen 274 | IL,51,45,Sep 13,Sep 16,ARG 275 | IL,53,38,Aug 12,Aug 12,Rasmussen 276 | IL,50,37,Jul 08,Jul 08,Rasmussen 277 | IL,60,31,Feb 26,Feb 28,SurveyUSA 278 | IN,44,49,Oct 30,Nov 02,Zogby 279 | IN,48,48,Oct 28,Oct 31,ARG 280 | IN,47,47,Oct 27,Oct 30,SurveyUSA 281 | IN,46,49,Oct 28,Oct 29,Rasmussen 282 | IN,46,45,Oct 26,Oct 28,Selzer 283 | IN,44,50,Oct 23,Oct 26,Zogby 284 | IN,45,47,Oct 23,Oct 24,Howey-Gauge 285 | IN,49,45,Oct 21,Oct 22,SurveyUSA 286 | IN,51,41,Oct 19,Oct 22,U. of Wisconsin 287 | IN,43,50,Oct 07,Oct 07,Rasmussen 288 | IN,46,51,Oct 03,Oct 06,Opinion Research 289 | IN,45,48,Sep 28,Sep 29,SurveyUSA 290 | IN,44,47,Sep 15,Sep 18,ARG 291 | IN,47,49,Sep 17,Sep 18,Rasmussen 292 | IN,43,47,Sep 14,Sep 17,U. of Wisconsin 293 | IN,45,51,Sep 14,Sep 16,Opinion Research 294 | IN,47,44,Sep 14,Sep 16,Selzer 295 | IN,43,45,Aug 29,Aug 30,Howey-Gauge 296 | IN,42,46,Aug 19,Aug 21,Rasmussen 297 | IN,44,50,Aug 16,Aug 18,SurveyUSA 298 | IN,48,47,Jun 21,Jun 23,SurveyUSA 299 | IN,38,47,May 27,Jun 01,Ind. Legis. Insight 300 | IN,49,41,Apr 20,Apr 23,Selzer 301 | IN,44,51,Apr 14,Apr 16,IPFW U. 302 | IN,41,50,Feb 26,Feb 28,SurveyUSA 303 | IN,40,50,Feb 03,Feb 04,SurveyUSA 304 | IA,54,37,Oct 28,Oct 31,Selzer 305 | IA,55,40,Oct 28,Oct 29,SurveyUSA 306 | IA,52,42,Oct 23,Oct 24,Marist Coll. 307 | IA,51,40,Oct 22,Oct 23,Mason-Dixon 308 | IA,52,44,Oct 23,Oct 23,Rasmussen 309 | IA,52,39,Oct 19,Oct 22,U. of Wisconsin 310 | IA,54,41,Oct 08,Oct 09,SurveyUSA 311 | IA,51,43,Sep 25,Sep 25,Rasmussen 312 | IA,51,41,Sep 18,Sep 21,Marist Coll. 313 | IA,51,44,Sep 17,Sep 20,ARG 314 | IA,54,43,Sep 17,Sep 18,SurveyUSA 315 | IA,45,45,Sep 14,Sep 17,U. of Wisconsin 316 | IA,52,40,Sep 08,Sep 10,Selzer 317 | IA,55,40,Aug 31,Sep 02,Opinion Research 318 | IA,50,43,Aug 04,Aug 13,U. of Iowa 319 | IA,46,41,Aug 07,Aug 07,Rasmussen 320 | IA,51,41,Jul 10,Jul 10,Rasmussen 321 | IA,49,45,Jun 13,Jun 16,SurveyUSA 322 | IA,45,38,Jun 10,Jun 10,Rasmussen 323 | IA,47,38,May 21,May 22,SurveyUSA 324 | IA,44,42,May 13,May 13,Rasmussen 325 | IA,49,42,Apr 11,Apr 13,SurveyUSA 326 | IA,46,42,Mar 31,Mar 31,Rasmussen 327 | IA,50,44,Mar 14,Mar 16,SurveyUSA 328 | IA,50,41,Feb 26,Feb 28,SurveyUSA 329 | IA,44,41,Feb 18,Feb 18,Rasmussen 330 | IA,51,41,Feb 15,Feb 17,SurveyUSA 331 | KS,37,58,Oct 27,Oct 28,SurveyUSA 332 | KS,41,53,Oct 21,Oct 22,SurveyUSA 333 | KS,41,54,Oct 13,Oct 13,Rasmussen 334 | KS,41,53,Sep 21,Sep 22,SurveyUSA 335 | KS,38,58,Sep 18,Sep 18,Rasmussen 336 | KS,31,63,Sep 07,Sep 10,ARG 337 | KS,35,58,Aug 18,Aug 20,SurveyUSA 338 | KS,37,52,Aug 11,Aug 11,Rasmussen 339 | KS,32,52,Jul 14,Jul 14,Rasmussen 340 | KS,37,47,Jun 11,Jun 11,Rasmussen 341 | KS,39,49,May 16,May 18,SurveyUSA 342 | KS,34,55,May 13,May 13,Rasmussen 343 | KS,37,54,Apr 11,Apr 13,SurveyUSA 344 | KS,39,51,Mar 14,Mar 16,SurveyUSA 345 | KS,41,50,Feb 26,Feb 28,SurveyUSA 346 | KS,44,50,Feb 15,Feb 17,SurveyUSA 347 | KY,40,56,Oct 29,Nov 01,SurveyUSA 348 | KY,42,51,Oct 27,Oct 29,Mason-Dixon 349 | KY,43,55,Oct 29,Oct 29,Rasmussen 350 | KY,44,52,Oct 21,Oct 21,Rasmussen 351 | KY,41,54,Oct 18,Oct 20,SurveyUSA 352 | KY,42,52,Sep 30,Sep 30,Rasmussen 353 | KY,41,53,Sep 22,Sep 25,Mason-Dixon 354 | KY,38,57,Sep 21,Sep 22,SurveyUSA 355 | KY,37,57,Sep 08,Sep 12,ARG 356 | KY,37,55,Aug 09,Aug 11,SurveyUSA 357 | KY,39,49,Jul 20,Jul 29,Rasmussen 358 | KY,39,49,Jul 29,Jul 29,Rasmussen 359 | KY,35,51,Jun 25,Jun 25,Rasmussen 360 | KY,41,53,Jun 13,Jun 16,SurveyUSA 361 | KY,32,56,May 16,May 18,SurveyUSA 362 | KY,29,63,Apr 11,Apr 13,SurveyUSA 363 | KY,28,64,Mar 14,Mar 16,SurveyUSA 364 | KY,33,54,Feb 26,Feb 28,SurveyUSA 365 | KY,32,61,Feb 03,Feb 04,SurveyUSA 366 | LA,40,43,Oct 24,Oct 26,Loyola U. 367 | LA,38,51,Oct 20,Oct 23,Southeastern La. U. 368 | LA,41,57,Oct 21,Oct 21,Rasmussen 369 | LA,40,55,Sep 25,Sep 25,Rasmussen 370 | LA,43,50,Sep 09,Sep 12,ARG 371 | LA,38,55,Aug 17,Aug 17,Rasmussen 372 | LA,37,56,Jul 09,Jul 09,Rasmussen 373 | LA,36,52,Jun 26,Jun 28,Opinion Res. 374 | LA,41,50,May 28,May 28,Rasmussen 375 | LA,35,51,Mar 26,Apr 09,Opinion Res. 376 | LA,41,52,Apr 09,Apr 09,Rasmussen 377 | LA,39,54,Feb 26,Feb 28,SurveyUSA 378 | ME,56,43,Nov 01,Nov 01,Rasmussen 379 | ME,54,39,Oct 19,Oct 20,SurveyUSA 380 | ME,56,35,Oct 16,Oct 19,Critical Insights 381 | ME,51,39,Oct 13,Oct 16,Pan Atlantic SMS 382 | ME,51,46,Oct 02,Oct 02,Rasmussen 383 | ME,49,44,Sep 22,Sep 23,SurveyUSA 384 | ME,50,46,Sep 17,Sep 17,Rasmussen 385 | ME,51,41,Sep 08,Sep 10,ARG 386 | ME,49,36,Aug 12,Aug 12,Rasmussen 387 | ME,46,36,Jul 17,Jul 17,Rasmussen 388 | ME,51,31,Jun 01,Jun 27,Critical Insights 389 | ME,37,26,Jun 10,Jun 18,Pan Atlantic SMS 390 | ME,55,33,Jun 16,Jun 16,Rasmussen 391 | ME,51,38,May 14,May 14,Rasmussen 392 | ME,49,39,Apr 01,Apr 01,Rasmussen 393 | ME,53,39,Feb 26,Feb 28,SurveyUSA 394 | MD,60,37,Sep 20,Sep 20,Rasmussen 395 | MD,54,39,Sep 17,Sep 19,ARG 396 | MD,52,38,Aug 29,Sep 05,Gonzales Research 397 | MD,53,41,Aug 18,Aug 18,Rasmussen 398 | MD,51,37,Feb 23,Mar 01,Gonzales Res. 399 | MD,53,40,Feb 26,Feb 28,SurveyUSA 400 | MA,56,39,Oct 27,Oct 28,SurveyUSA 401 | MA,53,34,Oct 20,Oct 22,Suffolk U. 402 | MA,59,35,Oct 13,Oct 14,SurveyUSA 403 | MA,62,34,Oct 13,Oct 13,Rasmussen 404 | MA,55,39,Sep 22,Sep 23,SurveyUSA 405 | MA,58,38,Sep 23,Sep 23,Rasmussen 406 | MA,55,39,Sep 20,Sep 22,ARG 407 | MA,51,36,Aug 05,Aug 05,Rasmussen 408 | MA,47,38,Jul 31,Aug 03,Suffolk U. 409 | MA,53,33,Jun 30,Jun 30,Rasmussen 410 | MA,53,40,Jun 25,Jun 27,SurveyUSA 411 | MA,53,30,Jun 08,Jun 10,Suffolk U. 412 | MA,51,38,May 29,May 29,Rasmussen 413 | MA,46,41,May 16,May 18,SurveyUSA 414 | MA,51,39,Apr 23,Apr 23,Rasmussen 415 | MA,48,46,Apr 11,Apr 13,SurveyUSA 416 | MA,49,42,Mar 18,Mar 18,Rasmussen 417 | MA,47,47,Mar 14,Mar 16,SurveyUSA 418 | MA,49,42,Feb 26,Feb 28,SurveyUSA 419 | MA,48,46,Feb 15,Feb 17,SurveyUSA 420 | MI,53,37,Oct 28,Oct 31,Selzer 421 | MI,50,38,Oct 26,Oct 28,EPIC-MRA 422 | MI,53,43,Oct 28,Oct 28,Rasmussen 423 | MI,51,37,Oct 19,Oct 22,EPIC-MRA 424 | MI,58,36,Oct 19,Oct 22,U. of Wisconsin 425 | MI,54,38,Oct 08,Oct 12,Quinnipiac U. 426 | MI,56,40,Oct 08,Oct 08,Rasmussen 427 | MI,51,38,Sep 22,Sep 24,Selzer 428 | MI,46,46,Sep 18,Sep 23,Mason-Dixon 429 | MI,51,46,Sep 21,Sep 23,Opinion Research 430 | MI,47,39,Sep 18,Sep 22,Financial Dynamics 431 | MI,48,38,Sep 20,Sep 22,EPIC-MRA 432 | MI,48,44,Sep 14,Sep 21,Quinnipiac U. 433 | MI,51,44,Sep 21,Sep 21,Rasmussen 434 | MI,43,46,Sep 15,Sep 19,Marketing Resource Grp. 435 | MI,48,46,Sep 16,Sep 19,ARG 436 | MI,43,42,Sep 14,Sep 17,EPIC-MRA 437 | MI,48,44,Sep 14,Sep 17,U. of Wisconsin 438 | MI,52,43,Sep 16,Sep 17,Marist Coll. 439 | MI,44,45,Sep 09,Sep 10,Insider Advantage 440 | MI,51,46,Sep 10,Sep 10,Rasmussen 441 | MI,49,45,Sep 07,Sep 09,Opinion Research 442 | MI,43,41,Aug 18,Aug 21,EPIC-MRA 443 | MI,46,39,Aug 17,Aug 20,Selzer 444 | MI,47,40,Aug 07,Aug 07,Rasmussen 445 | MI,46,42,Jul 14,Jul 22,Quinnipiac U. 446 | MI,43,41,Jul 13,Jul 16,EPIC-MRA 447 | MI,50,42,Jul 10,Jul 10,Rasmussen 448 | MI,48,42,Jun 17,Jun 24,Quinnipiac U. 449 | MI,45,42,Jun 09,Jun 09,Rasmussen 450 | MI,37,41,May 27,May 28,SurveyUSA 451 | MI,40,44,May 19,May 22,EPIC-MRA 452 | MI,44,45,May 08,May 08,Rasmussen 453 | MI,44,45,May 07,May 07,Rasmussen 454 | MI,43,41,Apr 03,Apr 08,EPIC-MRA 455 | MI,42,43,Mar 25,Mar 25,Rasmussen 456 | MI,41,44,Mar 10,Mar 10,Rasmussen 457 | MI,46,45,Feb 26,Feb 28,SurveyUSA 458 | MN,49,46,Oct 30,Nov 01,SurveyUSA 459 | MN,53,42,Oct 29,Oct 31,Princeton Survey 460 | MN,48,40,Oct 27,Oct 28,Mason-Dixon 461 | MN,55,43,Oct 28,Oct 28,Rasmussen 462 | MN,56,37,Oct 24,Oct 28,U. of Minnesota 463 | MN,42,37,Oct 14,Oct 22,St. Cloud State U. 464 | MN,56,41,Oct 22,Oct 22,Rasmussen 465 | MN,57,38,Oct 19,Oct 22,U. of Wisconsin 466 | MN,50,40,Oct 16,Oct 20,Financial Dynamics 467 | MN,50,44,Oct 16,Oct 18,SurveyUSA 468 | MN,52,41,Oct 16,Oct 17,Princeton Survey 469 | MN,52,41,Oct 16,Oct 17,Star Tribune 470 | MN,51,40,Oct 08,Oct 12,Quinnipiac U. 471 | MN,47,46,Oct 04,Oct 07,ARG 472 | MN,49,47,Oct 06,Oct 07,SurveyUSA 473 | MN,52,45,Oct 07,Oct 07,Rasmussen 474 | MN,54,40,Oct 03,Oct 05,U. of Minnesota 475 | MN,55,37,Sep 30,Oct 02,Princeton Survey 476 | MN,46,47,Sep 30,Oct 01,SurveyUSA 477 | MN,54,43,Sep 28,Sep 30,Opinion Research 478 | MN,47,45,Sep 14,Sep 21,Quinnipiac U. 479 | MN,48,47,Sep 18,Sep 20,ARG 480 | MN,52,44,Sep 18,Sep 18,Rasmussen 481 | MN,47,45,Sep 14,Sep 17,U. of Wisconsin 482 | MN,45,45,Sep 10,Sep 12,Princeton Survey 483 | MN,49,47,Sep 10,Sep 11,SurveyUSA 484 | MN,53,41,Aug 31,Sep 02,Opinion Research 485 | MN,48,38,Aug 07,Aug 17,U. of Minnesota 486 | MN,47,45,Aug 13,Aug 14,SurveyUSA 487 | MN,46,42,Aug 13,Aug 13,Rasmussen 488 | MN,46,44,Jul 14,Jul 22,Quinnipiac U. 489 | MN,49,37,Jul 22,Jul 22,Rasmussen 490 | MN,52,34,Jul 10,Jul 10,Rasmussen 491 | MN,54,37,Jun 17,Jun 24,Quinnipiac U. 492 | MN,47,46,Jun 13,Jun 16,SurveyUSA 493 | MN,52,39,Jun 11,Jun 11,Rasmussen 494 | MN,53,38,May 22,May 22,Rasmussen 495 | MN,47,42,May 16,May 18,SurveyUSA 496 | MN,51,38,May 12,May 15,Star Tribune 497 | MN,52,38,Apr 22,Apr 22,Rasmussen 498 | MN,49,43,Apr 11,Apr 13,SurveyUSA 499 | MN,47,43,Mar 19,Mar 19,Rasmussen 500 | MN,46,47,Mar 14,Mar 16,SurveyUSA 501 | MN,49,42,Feb 26,Feb 28,SurveyUSA 502 | MN,55,40,Feb 15,Feb 17,SurveyUSA 503 | MN,53,38,Feb 16,Feb 16,Rasmussen 504 | MS,45,53,Oct 27,Oct 27,Rasmussen 505 | MS,33,46,Oct 13,Oct 23,U. of South Alabama 506 | MS,33,46,Oct 13,Oct 23,USA Polling Group 507 | MS,44,52,Sep 30,Sep 30,Rasmussen 508 | MS,39,55,Sep 13,Sep 16,ARG 509 | MS,41,54,Aug 21,Aug 21,Rasmussen 510 | MS,41,52,Jul 28,Jul 28,Rasmussen 511 | MS,44,50,Jun 24,Jun 24,Rasmussen 512 | MS,44,50,May 27,May 27,Rasmussen 513 | MS,41,54,Feb 26,Feb 28,SurveyUSA 514 | MO,47,46,Oct 30,Nov 02,Zogby 515 | MO,46,47,Oct 29,Oct 30,Mason-Dixon 516 | MO,48,48,Oct 28,Oct 30,ARG 517 | MO,47,50,Oct 29,Oct 29,Insider Advantage 518 | MO,48,50,Oct 23,Oct 28,Opinion Research 519 | MO,48,46,Oct 23,Oct 26,Zogby 520 | MO,48,47,Oct 26,Oct 26,Rasmussen 521 | MO,48,48,Oct 25,Oct 26,SurveyUSA 522 | MO,45,46,Oct 22,Oct 23,Mason-Dixon 523 | MO,44,45,Oct 17,Oct 19,Suffolk U. 524 | MO,49,44,Oct 19,Oct 19,Rasmussen 525 | MO,52,46,Oct 15,Oct 15,Rasmussen 526 | MO,48,49,Oct 11,Oct 14,Opinion Research 527 | MO,50,47,Oct 12,Oct 12,Rasmussen 528 | MO,51,43,Oct 11,Oct 12,SurveyUSA 529 | MO,46,49,Oct 04,Oct 06,ARG 530 | MO,50,47,Oct 05,Oct 05,Rasmussen 531 | MO,49,48,Sep 28,Sep 30,Opinion Research 532 | MO,46,48,Sep 23,Sep 24,SurveyUSA 533 | MO,45,50,Sep 11,Sep 15,ARG 534 | MO,46,51,Sep 11,Sep 11,Rasmussen 535 | MO,45,50,Sep 07,Sep 09,Opinion Research 536 | MO,41,48,Aug 07,Aug 07,Rasmussen 537 | MO,44,49,Jul 29,Jul 31,SurveyUSA 538 | MO,42,47,Jul 07,Jul 07,Rasmussen 539 | MO,43,50,Jun 20,Jun 22,SurveyUSA 540 | MO,43,42,Jun 03,Jun 03,Rasmussen 541 | MO,45,43,May 16,May 18,SurveyUSA 542 | MO,41,47,May 06,May 06,Rasmussen 543 | MO,42,50,Apr 11,Apr 13,SurveyUSA 544 | MO,38,53,Mar 24,Mar 24,Rasmussen 545 | MO,39,53,Mar 14,Mar 16,SurveyUSA 546 | MO,42,48,Feb 26,Feb 28,SurveyUSA 547 | MO,49,43,Feb 15,Feb 17,SurveyUSA 548 | MO,40,42,Feb 12,Feb 12,Rasmussen 549 | MT,46,49,Oct 28,Oct 30,ARG 550 | MT,46,50,Oct 29,Oct 29,Rasmussen 551 | MT,44,48,Oct 23,Oct 25,Mason-Dixon 552 | MT,44,40,Oct 16,Oct 20,Montana State U. 553 | MT,45,50,Oct 06,Oct 08,ARG 554 | MT,44,52,Oct 01,Oct 01,Rasmussen 555 | MT,43,54,Sep 21,Sep 23,Opinion Research 556 | MT,47,49,Sep 07,Sep 09,ARG 557 | MT,42,53,Sep 08,Sep 08,Rasmussen 558 | MT,44,45,Jul 29,Jul 29,Rasmussen 559 | MT,48,43,Jul 01,Jul 01,Rasmussen 560 | MT,39,47,May 19,May 21,Mason-Dixon 561 | MT,43,48,Apr 06,Apr 06,Rasmussen 562 | MT,39,47,Feb 26,Feb 28,SurveyUSA 563 | NE,37,56,Sep 30,Sep 30,Rasmussen 564 | NE,34,60,Sep 12,Sep 17,ARG 565 | NE,32,50,Jul 28,Jul 28,Rasmussen 566 | NE,36,52,Jun 23,Jun 23,Rasmussen 567 | NE,40,49,May 16,May 18,SurveyUSA 568 | NE,39,50,May 15,May 15,Rasmussen 569 | NE,42,45,Feb 26,Feb 28,SurveyUSA 570 | NV,51,43,Oct 30,Nov 02,Zogby 571 | NV,47,43,Oct 28,Oct 29,Mason-Dixon 572 | NV,52,45,Oct 23,Oct 28,Opinion Research 573 | NV,50,46,Oct 27,Oct 27,Rasmussen 574 | NV,48,44,Oct 23,Oct 26,Zogby 575 | NV,50,40,Oct 26,Oct 26,Suffolk U. 576 | NV,52,40,Oct 23,Oct 26,GfK Roper 577 | NV,51,46,Oct 19,Oct 21,Opinion Research 578 | NV,47,47,Oct 19,Oct 19,Insider Advantage 579 | NV,50,45,Oct 16,Oct 16,Rasmussen 580 | NV,49,46,Oct 13,Oct 13,Insider Advantage 581 | NV,47,45,Oct 08,Oct 09,Mason-Dixon 582 | NV,49,47,Oct 06,Oct 06,Insider Advantage 583 | NV,51,47,Oct 02,Oct 02,Rasmussen 584 | NV,48,47,Sep 30,Sep 30,Insider Advantage 585 | NV,51,47,Sep 28,Sep 30,Opinion Research 586 | NV,47,49,Sep 27,Sep 29,ARG 587 | NV,45,46,Sep 17,Sep 21,Suffolk U. 588 | NV,46,49,Sep 12,Sep 14,ARG 589 | NV,46,49,Sep 11,Sep 11,Rasmussen 590 | NV,45,46,Sep 09,Sep 10,Insider Advantage 591 | NV,49,44,Aug 24,Aug 26,Opinion Research 592 | NV,39,46,Aug 13,Aug 15,Mason-Dixon 593 | NV,42,45,Aug 11,Aug 11,Rasmussen 594 | NV,42,40,Jul 16,Jul 16,Rasmussen 595 | NV,42,45,Jun 18,Jun 18,Rasmussen 596 | NV,42,44,Jun 09,Jun 11,Mason-Dixon 597 | NV,40,46,May 20,May 20,Rasmussen 598 | NV,43,48,Apr 21,Apr 21,Rasmussen 599 | NV,45,41,Mar 19,Mar 19,Rasmussen 600 | NV,46,41,Feb 26,Feb 28,SurveyUSA 601 | NV,50,38,Feb 12,Feb 12,Rasmussen 602 | NH,50,46,Oct 30,Oct 30,Rasmussen 603 | NH,53,39,Oct 28,Oct 30,U. of New Hampshire 604 | NH,53,42,Oct 29,Oct 30,SurveyUSA 605 | NH,56,41,Oct 28,Oct 30,ARG 606 | NH,53,40,Oct 27,Oct 29,Suffolk U. 607 | NH,58,33,Oct 25,Oct 27,U. of New Hampshire 608 | NH,55,37,Oct 22,Oct 26,GfK Roper 609 | NH,50,39,Oct 23,Oct 25,Mason-Dixon 610 | NH,50,45,Oct 22,Oct 23,Marist Coll. 611 | NH,50,46,Oct 23,Oct 23,Rasmussen 612 | NH,54,39,Oct 18,Oct 22,U. of New Hampshire 613 | NH,52,43,Oct 06,Oct 08,ARG 614 | NH,53,45,Oct 03,Oct 06,Opinion Research 615 | NH,53,40,Oct 04,Oct 05,SurveyUSA 616 | NH,53,43,Oct 01,Oct 01,Rasmussen 617 | NH,49,37,Sep 25,Sep 30,Saint Anselm Coll. 618 | NH,46,45,Sep 20,Sep 24,Suffolk U. 619 | NH,47,49,Sep 23,Sep 23,Rasmussen 620 | NH,44,43,Sep 18,Sep 22,Financial Dynamics 621 | NH,45,47,Sep 14,Sep 21,U. of New Hampshire 622 | NH,51,45,Sep 17,Sep 21,Marist Coll. 623 | NH,45,48,Sep 13,Sep 15,ARG 624 | NH,51,45,Sep 07,Sep 09,Opinion Research 625 | NH,46,45,Aug 18,Aug 20,ARG 626 | NH,43,42,Aug 19,Aug 19,Rasmussen 627 | NH,47,41,Jul 23,Jul 23,Rasmussen 628 | NH,47,45,Jul 19,Jul 21,ARG 629 | NH,46,43,Jul 11,Jul 20,U. of New Hampshire 630 | NH,50,39,Jun 18,Jun 18,Rasmussen 631 | NH,51,39,Jun 13,Jun 17,ARG 632 | NH,48,43,May 21,May 21,Rasmussen 633 | NH,39,42,Apr 28,May 02,Dartmouth Coll. 634 | NH,41,51,Apr 30,Apr 30,Rasmussen 635 | NH,43,49,Apr 25,Apr 30,U. of New Hampshire 636 | NH,43,46,Mar 16,Mar 16,Rasmussen 637 | NH,46,44,Feb 26,Feb 28,SurveyUSA 638 | NH,49,36,Feb 11,Feb 11,Rasmussen 639 | NJ,52,42,Oct 29,Oct 30,SurveyUSA 640 | NJ,55,34,Oct 24,Oct 30,Monmouth U. 641 | NJ,53,35,Oct 23,Oct 29,Fairleigh Dickinson U. 642 | NJ,56,39,Oct 20,Oct 21,Marist Coll. 643 | NJ,59,36,Oct 16,Oct 19,Quinnipiac U. 644 | NJ,55,38,Oct 15,Oct 18,Monmouth U. 645 | NJ,55,40,Oct 11,Oct 12,SurveyUSA 646 | NJ,50,42,Oct 07,Oct 07,Rasmussen 647 | NJ,50,37,Sep 29,Oct 05,Fairleigh Dickinson U. 648 | NJ,52,42,Sep 27,Sep 28,SurveyUSA 649 | NJ,51,42,Sep 19,Sep 21,ARG 650 | NJ,55,42,Sep 16,Sep 16,Rasmussen 651 | NJ,48,45,Sep 10,Sep 14,Quinnipiac U. 652 | NJ,49,41,Sep 11,Sep 14,Monmouth U. 653 | NJ,48,45,Sep 05,Sep 08,Marist Coll. 654 | NJ,47,41,Sep 04,Sep 07,Fairleigh Dickinson U. 655 | NJ,51,41,Aug 04,Aug 10,Quinnipiac U. 656 | NJ,48,40,Aug 04,Aug 04,Rasmussen 657 | NJ,50,36,Jul 17,Jul 21,Monmouth U. 658 | NJ,44,39,Jun 07,Jul 07,Rasmussen 659 | NJ,49,33,Jun 17,Jun 23,Fairleigh Dickinson U. 660 | NJ,45,39,Jun 05,Jun 08,Quinnipiac U. 661 | NJ,48,39,Jun 04,Jun 04,Rasmussen 662 | NJ,56,32,Apr 24,Apr 28,Monmouth U. 663 | NJ,47,42,Mar 24,Mar 30,Fairleigh Dickinson U. 664 | NJ,45,46,Mar 27,Mar 27,Rasmussen 665 | NJ,43,43,Feb 26,Feb 28,SurveyUSA 666 | NJ,43,45,Feb 27,Feb 27,Rasmussen 667 | NJ,43,38,Feb 18,Feb 24,Fairleigh Dickinson U. 668 | NJ,46,39,Feb 13,Feb 18,Quinnipiac U. 669 | NM,52,45,Oct 29,Oct 31,SurveyUSA 670 | NM,51,43,Oct 28,Oct 30,Research and Polling 671 | NM,54,44,Oct 28,Oct 28,Rasmussen 672 | NM,52,45,Oct 12,Oct 13,SurveyUSA 673 | NM,55,42,Oct 13,Oct 13,Rasmussen 674 | NM,45,40,Sep 29,Oct 02,Research and Polling 675 | NM,49,44,Oct 01,Oct 01,Rasmussen 676 | NM,52,44,Sep 29,Sep 30,SurveyUSA 677 | NM,51,44,Sep 14,Sep 16,ARG 678 | NM,52,44,Sep 14,Sep 16,SurveyUSA 679 | NM,49,42,Sep 11,Sep 15,Financial Dynamics 680 | NM,47,49,Sep 08,Sep 08,Rasmussen 681 | NM,53,40,Aug 24,Aug 26,Opinion Research 682 | NM,47,41,Aug 20,Aug 20,Rasmussen 683 | NM,41,45,Aug 13,Aug 15,Mason-Dixon 684 | NM,46,41,Jul 24,Jul 24,Rasmussen 685 | NM,49,46,Jun 17,Jun 19,SurveyUSA 686 | NM,47,39,Jun 18,Jun 18,Rasmussen 687 | NM,44,44,May 16,May 18,SurveyUSA 688 | NM,50,41,May 14,May 14,Rasmussen 689 | NM,44,50,Apr 11,Apr 13,SurveyUSA 690 | NM,45,42,Apr 08,Apr 08,Rasmussen 691 | NM,51,45,Mar 14,Mar 16,SurveyUSA 692 | NM,50,43,Feb 26,Feb 28,SurveyUSA 693 | NM,44,44,Feb 17,Feb 18,Rasmussen 694 | NM,55,40,Feb 15,Feb 17,SurveyUSA 695 | NM,41,50,Jan 20,Jan 21,SurveyUSA 696 | NY,62,33,Oct 27,Oct 28,SurveyUSA 697 | NY,65,29,Oct 21,Oct 22,Marist Coll. 698 | NY,62,31,Oct 19,Oct 21,Siena Coll. 699 | NY,57,37,Oct 14,Oct 14,Rasmussen 700 | NY,64,31,Oct 11,Oct 12,SurveyUSA 701 | NY,58,36,Sep 28,Sep 30,Siena Coll. 702 | NY,57,38,Sep 23,Sep 24,SurveyUSA 703 | NY,55,38,Sep 14,Sep 16,ARG 704 | NY,55,42,Sep 15,Sep 15,Rasmussen 705 | NY,46,41,Sep 08,Sep 10,Siena Coll. 706 | NY,47,39,Aug 11,Aug 14,Siena Coll. 707 | NY,52,32,Aug 04,Aug 04,Rasmussen 708 | NY,57,36,Jul 31,Aug 04,Quinnipiac U. 709 | NY,44,26,Jul 17,Jul 29,Siena Coll. 710 | NY,50,37,Jul 07,Jul 10,Siena Coll. 711 | NY,60,29,Jun 30,Jun 30,Rasmussen 712 | NY,57,37,Jun 25,Jun 27,SurveyUSA 713 | NY,51,32,Jun 06,Jun 11,NY Times 714 | NY,51,33,Jun 09,Jun 11,Siena Coll. 715 | NY,50,36,Jun 03,Jun 08,Quinnipiac U. 716 | NY,52,33,May 28,May 28,Rasmussen 717 | NY,48,38,May 16,May 18,SurveyUSA 718 | NY,48,38,May 16,May 17,SurveyUSA 719 | NY,49,38,May 12,May 14,Siena Coll. 720 | NY,52,35,May 01,May 01,Rasmussen 721 | NY,45,40,Apr 13,Apr 16,Siena Coll. 722 | NY,47,39,Apr 14,Apr 15,Quinnipiac U. 723 | NY,52,43,Apr 11,Apr 13,SurveyUSA 724 | NY,46,48,Apr 03,Apr 08,Marist Coll. 725 | NY,49,38,Mar 16,Mar 18,Quinnipiac U. 726 | NY,52,44,Mar 14,Mar 16,SurveyUSA 727 | NY,51,38,Mar 11,Mar 11,Rasmussen 728 | NY,52,38,Feb 26,Feb 28,SurveyUSA 729 | NY,57,36,Feb 15,Feb 17,SurveyUSA 730 | NY,47,40,Feb 11,Feb 14,Siena Coll. 731 | NY,49,43,Jan 20,Jan 21,SurveyUSA 732 | NY,44,42,Jan 14,Jan 17,Siena Coll. 733 | NC,48,49,Oct 30,Nov 02,Zogby 734 | NC,45,38,Oct 27,Oct 30,Elon U. 735 | NC,46,49,Oct 29,Oct 30,Mason-Dixon 736 | NC,48,48,Oct 29,Oct 29,Insider Advantage 737 | NC,50,48,Oct 29,Oct 29,Rasmussen 738 | NC,52,46,Oct 23,Oct 28,Opinion Research 739 | NC,47,43,Oct 23,Oct 27,Financial Dynamics 740 | NC,48,46,Oct 22,Oct 26,GfK Roper 741 | NC,48,49,Oct 26,Oct 26,Rasmussen 742 | NC,50,46,Oct 23,Oct 26,Zogby 743 | NC,47,47,Oct 22,Oct 24,Mason-Dixon 744 | NC,48,50,Oct 23,Oct 23,Rasmussen 745 | NC,48,46,Oct 20,Oct 21,Marshall Marketing 746 | NC,51,47,Oct 19,Oct 21,Opinion Research 747 | NC,47,47,Oct 18,Oct 20,SurveyUSA 748 | NC,45,44,Sep 28,Oct 19,Winthrop U. 749 | NC,49,48,Oct 19,Oct 19,Insider Advantage 750 | NC,51,48,Oct 19,Oct 19,Rasmussen 751 | NC,48,46,Oct 13,Oct 13,Insider Advantage 752 | NC,48,48,Oct 12,Oct 12,Rasmussen 753 | NC,49,48,Oct 08,Oct 08,Rasmussen 754 | NC,46,48,Oct 06,Oct 07,Marshall Marketing 755 | NC,46,49,Oct 05,Oct 06,SurveyUSA 756 | NC,49,49,Oct 03,Oct 06,Opinion Research 757 | NC,50,47,Sep 30,Sep 30,Rasmussen 758 | NC,46,49,Sep 27,Sep 29,ARG 759 | NC,49,47,Sep 23,Sep 23,Rasmussen 760 | NC,35,41,Sep 15,Sep 18,Elon U. 761 | NC,47,50,Sep 18,Sep 18,Rasmussen 762 | NC,41,52,Sep 13,Sep 16,ARG 763 | NC,47,48,Sep 14,Sep 16,Opinion Research 764 | NC,38,58,Sep 06,Sep 08,SurveyUSA 765 | NC,43,45,Aug 19,Aug 19,Insider Advantage 766 | NC,42,46,Aug 13,Aug 13,Rasmussen 767 | NC,45,49,Aug 09,Aug 11,SurveyUSA 768 | NC,42,45,Jul 15,Jul 15,Rasmussen 769 | NC,45,50,Jul 12,Jul 14,SurveyUSA 770 | NC,43,45,Jun 10,Jun 10,Rasmussen 771 | NC,43,51,May 17,May 19,SurveyUSA 772 | NC,45,48,May 08,May 08,Rasmussen 773 | NC,39,48,Apr 09,Apr 10,Tel Opinion Research 774 | NC,47,47,Apr 10,Apr 10,Rasmussen 775 | NC,42,51,Mar 20,Mar 20,Rasmussen 776 | NC,45,47,Feb 26,Feb 28,SurveyUSA 777 | ND,45,43,Oct 06,Oct 08,Minnesota State U. 778 | ND,43,52,Sep 15,Sep 17,ARG 779 | ND,41,55,Sep 08,Sep 08,Rasmussen 780 | ND,43,40,Aug 23,Aug 27,DFM Research 781 | ND,43,43,Jul 08,Jul 08,Rasmussen 782 | ND,38,44,Mar 24,Apr 03,Dakota Wesleyan U. 783 | ND,46,42,Feb 26,Feb 28,SurveyUSA 784 | OH,50,44,Oct 30,Nov 02,Zogby 785 | OH,52,46,Oct 22,Oct 31,Columbus Dispatch 786 | OH,45,47,Oct 29,Oct 30,Mason-Dixon 787 | OH,51,47,Oct 23,Oct 28,Opinion Research 788 | OH,48,41,Oct 23,Oct 27,Financial Dynamics 789 | OH,49,40,Oct 25,Oct 27,LA Times 790 | OH,49,45,Oct 26,Oct 27,SurveyUSA 791 | OH,48,41,Oct 22,Oct 26,GfK Roper 792 | OH,48,45,Oct 24,Oct 26,Marist Coll. 793 | OH,49,45,Oct 26,Oct 26,Rasmussen 794 | OH,50,45,Oct 23,Oct 26,Zogby 795 | OH,51,42,Oct 22,Oct 26,Quinnipiac U. 796 | OH,57,41,Oct 12,Oct 23,Ohio U. 797 | OH,49,46,Oct 18,Oct 22,U. of Cincinnati 798 | OH,52,42,Oct 22,Oct 22,Insider Advantage 799 | OH,53,41,Oct 19,Oct 22,U. of Wisconsin 800 | OH,50,46,Oct 19,Oct 21,Opinion Research 801 | OH,52,38,Oct 16,Oct 21,Quinnipiac U. 802 | OH,47,49,Oct 19,Oct 19,Rasmussen 803 | OH,51,42,Oct 16,Oct 19,Suffolk U. 804 | OH,45,46,Oct 16,Oct 17,Mason-Dixon 805 | OH,45,41,Sep 24,Oct 15,U. of Akron 806 | OH,49,49,Oct 14,Oct 14,Rasmussen 807 | OH,50,45,Oct 12,Oct 13,SurveyUSA 808 | OH,49,47,Oct 12,Oct 12,Rasmussen 809 | OH,49,44,Oct 09,Oct 09,Insider Advantage 810 | OH,46,48,Oct 04,Oct 08,U. of Cincinnati 811 | OH,49,45,Oct 05,Oct 08,Marist Coll. 812 | OH,48,45,Oct 04,Oct 07,ARG 813 | OH,50,47,Oct 03,Oct 06,Opinion Research 814 | OH,47,48,Oct 05,Oct 05,Rasmussen 815 | OH,51,45,Oct 03,Oct 05,ABC News 816 | OH,51,45,Oct 03,Oct 05,Washington Post 817 | OH,49,42,Sep 24,Oct 03,Columbus Dispatch 818 | OH,47,45,Sep 29,Sep 29,Insider Advantage 819 | OH,48,49,Sep 28,Sep 29,SurveyUSA 820 | OH,50,42,Sep 27,Sep 29,Quinnipiac U. 821 | OH,47,48,Sep 28,Sep 28,Rasmussen 822 | OH,46,47,Sep 23,Sep 23,Rasmussen 823 | OH,46,46,Sep 22,Sep 22,Insider Advantage 824 | OH,46,50,Sep 21,Sep 21,Rasmussen 825 | OH,46,45,Sep 14,Sep 17,U. of Wisconsin 826 | OH,42,48,Sep 12,Sep 16,U. of Cincinnati 827 | OH,49,47,Sep 14,Sep 16,Opinion Research 828 | OH,41,42,Sep 11,Sep 15,Financial Dynamics 829 | OH,47,45,Sep 11,Sep 15,Marist Coll. 830 | OH,45,48,Sep 14,Sep 14,Rasmussen 831 | OH,45,49,Sep 12,Sep 14,SurveyUSA 832 | OH,42,46,Sep 10,Sep 13,Suffolk U. 833 | OH,44,50,Sep 10,Sep 13,ARG 834 | OH,44,48,Sep 05,Sep 10,U. of Cincinnati 835 | OH,47,48,Sep 09,Sep 10,Insider Advantage 836 | OH,49,44,Sep 05,Sep 09,Quinnipiac U. 837 | OH,44,51,Sep 07,Sep 07,Rasmussen 838 | OH,47,45,Aug 31,Sep 02,Opinion Research 839 | OH,44,43,Aug 17,Aug 24,Quinnipiac U. 840 | OH,41,42,Aug 12,Aug 21,Columbus Dispatch 841 | OH,41,45,Aug 18,Aug 18,Rasmussen 842 | OH,40,40,Jul 17,Aug 17,U. of Akron 843 | OH,46,44,Jul 23,Jul 29,Quinnipiac U. 844 | OH,40,46,Jul 21,Jul 21,Rasmussen 845 | OH,48,46,Jun 20,Jun 22,SurveyUSA 846 | OH,43,44,Jun 17,Jun 17,Rasmussen 847 | OH,48,42,Jun 09,Jun 16,Quinnipiac U. 848 | OH,40,44,May 13,May 20,Quinnipiac U. 849 | OH,48,39,May 16,May 18,SurveyUSA 850 | OH,44,45,May 14,May 14,Rasmussen 851 | OH,42,43,Apr 23,Apr 29,Quinnipiac U. 852 | OH,45,47,Apr 11,Apr 13,SurveyUSA 853 | OH,40,47,Apr 08,Apr 08,Rasmussen 854 | OH,43,42,Mar 24,Mar 31,Quinnipiac U. 855 | OH,43,50,Mar 14,Mar 16,SurveyUSA 856 | OH,40,46,Mar 13,Mar 13,Rasmussen 857 | OH,50,40,Feb 26,Feb 28,SurveyUSA 858 | OH,48,47,Feb 21,Feb 24,U. of Cincinnati 859 | OH,41,42,Feb 17,Feb 17,Rasmussen 860 | OH,47,44,Feb 15,Feb 17,SurveyUSA 861 | OH,40,42,Feb 06,Feb 12,Quinnipiac U. 862 | OH,43,50,Jan 04,Jan 06,SurveyUSA 863 | OK,34,63,Oct 28,Oct 29,SurveyUSA 864 | OK,35,59,Oct 18,Oct 19,SurveyUSA 865 | OK,32,63,Oct 10,Oct 12,TV Poll 866 | OK,29,66,Oct 04,Oct 05,TV Poll 867 | OK,34,64,Sep 28,Sep 29,SurveyUSA 868 | OK,34,61,Sep 15,Sep 18,ARG 869 | OK,32,63,Sep 11,Sep 11,Rasmussen 870 | OK,32,65,Sep 05,Sep 07,SurveyUSA 871 | OK,24,56,Jul 19,Jul 23,Sooner Poll 872 | OK,34,57,Feb 26,Feb 28,SurveyUSA 873 | OR,54,42,Oct 30,Oct 30,Rasmussen 874 | OR,57,38,Oct 29,Oct 30,SurveyUSA 875 | OR,49,41,Oct 18,Oct 27,Northern Arizona U. 876 | OR,57,38,Oct 25,Oct 26,SurveyUSA 877 | OR,48,34,Oct 10,Oct 20,Riley Research 878 | OR,54,41,Oct 14,Oct 14,Rasmussen 879 | OR,57,40,Oct 11,Oct 12,SurveyUSA 880 | OR,54,43,Oct 09,Oct 09,Rasmussen 881 | OR,52,41,Sep 22,Sep 23,SurveyUSA 882 | OR,52,41,Sep 19,Sep 22,ARG 883 | OR,51,47,Sep 15,Sep 15,Rasmussen 884 | OR,50,40,Sep 11,Sep 14,Davis Hibbitts Midghall 885 | OR,47,37,Aug 07,Aug 07,Rasmussen 886 | OR,48,45,Aug 02,Aug 04,SurveyUSA 887 | OR,46,37,Jul 16,Jul 16,Rasmussen 888 | OR,48,45,Jun 17,Jun 19,SurveyUSA 889 | OR,46,38,Jun 11,Jun 11,Rasmussen 890 | OR,49,39,May 16,May 18,SurveyUSA 891 | OR,52,38,May 07,May 07,Rasmussen 892 | OR,51,42,Apr 11,Apr 13,SurveyUSA 893 | OR,48,42,Mar 26,Mar 26,Rasmussen 894 | OR,50,41,Mar 14,Mar 16,SurveyUSA 895 | OR,49,41,Feb 26,Feb 28,SurveyUSA 896 | OR,46,38,Feb 07,Feb 18,Riley Res. 897 | OR,48,47,Feb 15,Feb 17,SurveyUSA 898 | OR,49,40,Feb 13,Feb 13,Rasmussen 899 | OR,47,47,Jan 11,Jan 13,SurveyUSA 900 | PA,54,40,Oct 30,Nov 02,Zogby 901 | PA,52,45,Oct 28,Nov 01,Muhlenberg Coll. 902 | PA,52,46,Nov 01,Nov 01,Rasmussen 903 | PA,51,44,Oct 29,Oct 31,SurveyUSA 904 | PA,51,45,Oct 29,Oct 31,ARG 905 | PA,51,47,Oct 30,Oct 30,Rasmussen 906 | PA,47,43,Oct 27,Oct 28,Mason-Dixon 907 | PA,55,43,Oct 23,Oct 28,Opinion Research 908 | PA,53,41,Oct 23,Oct 27,Muhlenberg Coll. 909 | PA,53,46,Oct 27,Oct 27,Rasmussen 910 | PA,55,41,Oct 26,Oct 27,Marist Coll. 911 | PA,50,41,Oct 20,Oct 26,Temple U. 912 | PA,51,42,Oct 26,Oct 26,Insider Advantage 913 | PA,52,40,Oct 22,Oct 26,GfK Roper 914 | PA,53,40,Oct 21,Oct 26,Franklin+Marshall Coll. 915 | PA,53,40,Oct 22,Oct 26,Siena Coll. 916 | PA,53,41,Oct 22,Oct 26,Quinnipiac U. 917 | PA,52,41,Oct 19,Oct 22,U. of Wisconsin 918 | PA,52,42,Oct 18,Oct 22,Muhlenberg Coll. 919 | PA,53,41,Oct 21,Oct 22,SurveyUSA 920 | PA,53,40,Oct 16,Oct 21,Quinnipiac U. 921 | PA,51,41,Oct 16,Oct 20,Financial Dynamics 922 | PA,48,40,Oct 16,Oct 19,Susquehanna Polling 923 | PA,52,39,Oct 13,Oct 17,Muhlenberg Coll. 924 | PA,55,40,Oct 11,Oct 13,SurveyUSA 925 | PA,51,38,Oct 08,Oct 12,Muhlenberg Coll. 926 | PA,50,39,Oct 05,Oct 09,Muhlenberg Coll. 927 | PA,53,41,Oct 05,Oct 08,Marist Coll. 928 | PA,52,42,Oct 03,Oct 06,West Chester U. 929 | PA,54,41,Oct 06,Oct 06,Rasmussen 930 | PA,55,40,Oct 05,Oct 06,SurveyUSA 931 | PA,50,40,Sep 30,Oct 04,Muhlenberg Coll. 932 | PA,49,41,Sep 25,Sep 29,Muhlenberg Coll. 933 | PA,54,39,Sep 27,Sep 29,Quinnipiac U. 934 | PA,48,43,Sep 23,Sep 28,Franklin+Marshall Coll. 935 | PA,50,42,Sep 28,Sep 28,Rasmussen 936 | PA,47,43,Sep 21,Sep 25,Muhlenberg Coll. 937 | PA,49,45,Sep 24,Sep 24,Rasmussen 938 | PA,50,44,Sep 23,Sep 24,SurveyUSA 939 | PA,53,44,Sep 21,Sep 23,Opinion Research 940 | PA,43,41,Sep 18,Sep 22,Financial Dynamics 941 | PA,50,46,Sep 20,Sep 22,ARG 942 | PA,48,45,Sep 21,Sep 21,Rasmussen 943 | PA,46,44,Sep 16,Sep 18,Mason-Dixon 944 | PA,45,45,Sep 14,Sep 17,U. of Wisconsin 945 | PA,49,44,Sep 11,Sep 15,Marist Coll. 946 | PA,47,47,Sep 14,Sep 14,Rasmussen 947 | PA,48,45,Sep 05,Sep 09,Quinnipiac U. 948 | PA,47,45,Sep 07,Sep 07,Rasmussen 949 | PA,48,43,Aug 24,Aug 26,Opinion Research 950 | PA,49,42,Aug 17,Aug 24,Quinnipiac U. 951 | PA,45,40,Aug 19,Aug 19,Rasmussen 952 | PA,46,41,Aug 11,Aug 14,Susquehanna Polling 953 | PA,46,41,Aug 04,Aug 10,Franklin+Marshall Coll. 954 | PA,49,42,Jul 23,Jul 29,Quinnipiac U. 955 | PA,47,42,Jul 23,Jul 23,Rasmussen 956 | PA,46,42,Jun 22,Jun 22,Rasmussen 957 | PA,52,40,Jun 09,Jun 16,Quinnipiac U. 958 | PA,45,43,May 21,May 21,Rasmussen 959 | PA,46,40,May 13,May 20,Quinnipiac U. 960 | PA,48,40,May 16,May 18,SurveyUSA 961 | PA,46,39,May 01,May 06,Susquehanna Polling 962 | PA,47,38,Apr 23,Apr 29,Quinnipiac U. 963 | PA,43,44,Apr 24,Apr 24,Rasmussen 964 | PA,47,39,Apr 09,Apr 09,Rasmussen 965 | PA,47,40,Mar 27,Apr 09,Temple U. 966 | PA,43,39,Mar 24,Mar 31,Quinnipiac U. 967 | PA,41,45,Mar 05,Mar 10,Susquehanna Polling 968 | PA,43,44,Mar 10,Mar 10,Rasmussen 969 | PA,42,47,Feb 26,Feb 28,SurveyUSA 970 | PA,43,44,Feb 13,Feb 18,Franklin+Marshall Coll. 971 | PA,39,42,Feb 09,Feb 17,Muhlenberg Coll. 972 | PA,49,39,Feb 14,Feb 14,Rasmussen 973 | PA,42,41,Feb 06,Feb 12,Quinnipiac U. 974 | PA,38,46,Jan 08,Jan 08,Rasmussen 975 | RI,48,26,Sep 30,Oct 01,Opinion Factor 976 | RI,47,34,Sep 15,Sep 16,Brown U. 977 | RI,58,39,Sep 13,Sep 13,Rasmussen 978 | RI,59,33,Sep 11,Sep 13,ARG 979 | RI,51,30,Aug 18,Aug 20,Brown U. 980 | RI,55,31,Jun 30,Jun 30,Rasmussen 981 | RI,53,25,Jun 18,Jun 27,Rhode Island Coll. 982 | RI,53,38,Feb 26,Feb 28,SurveyUSA 983 | SC,44,52,Oct 28,Oct 29,SurveyUSA 984 | SC,42,53,Oct 25,Oct 28,Princeton Survey 985 | SC,43,54,Oct 20,Oct 20,Rasmussen 986 | SC,35,55,Sep 28,Oct 19,Winthrop U. 987 | SC,41,55,Oct 12,Oct 13,SurveyUSA 988 | SC,39,58,Sep 21,Sep 22,SurveyUSA 989 | SC,45,51,Sep 18,Sep 18,Rasmussen 990 | SC,37,59,Sep 14,Sep 17,ARG 991 | SC,39,48,Jun 05,Jun 05,Rasmussen 992 | SC,45,48,Feb 26,Feb 28,SurveyUSA 993 | SD,44,53,Oct 30,Oct 30,Rasmussen 994 | SD,41,48,Oct 13,Oct 15,Mason-Dixon 995 | SD,39,55,Sep 19,Sep 21,ARG 996 | SD,37,54,Sep 09,Sep 09,Rasmussen 997 | SD,43,47,Jul 09,Jul 09,Rasmussen 998 | SD,34,51,Mar 24,Apr 03,Dakota Wesleyan U. 999 | SD,38,48,Mar 04,Mar 04,Rasmussen 1000 | SD,43,47,Feb 26,Feb 28,SurveyUSA 1001 | TN,42,54,Oct 16,Oct 16,Rasmussen 1002 | TN,39,58,Sep 29,Sep 29,Rasmussen 1003 | TN,35,55,Sep 15,Sep 27,Middle Tenn. State U. 1004 | TN,36,48,Sep 15,Sep 27,Middle Tenn. State U. 1005 | TN,39,55,Sep 22,Sep 24,Mason-Dixon 1006 | TN,36,59,Sep 16,Sep 19,ARG 1007 | TN,32,56,Aug 20,Aug 20,Rasmussen 1008 | TN,36,51,Jun 24,Jun 24,Rasmussen 1009 | TN,31,58,Apr 03,Apr 03,Rasmussen 1010 | TN,38,54,Feb 26,Feb 28,SurveyUSA 1011 | TN,36,50,Feb 11,Feb 23,Middle Tenn. State U. 1012 | TX,40,51,Oct 15,Oct 22,U. of Texas 1013 | TX,44,54,Oct 21,Oct 21,Rasmussen 1014 | TX,38,57,Oct 05,Oct 08,ARG 1015 | TX,43,52,Sep 29,Sep 29,Rasmussen 1016 | TX,36,57,Sep 13,Sep 16,ARG 1017 | TX,41,50,Aug 21,Aug 21,Rasmussen 1018 | TX,33,43,Jul 18,Jul 30,U. of Texas 1019 | TX,41,50,Jul 30,Jul 30,Rasmussen 1020 | TX,39,48,Jun 25,Jun 25,Rasmussen 1021 | TX,38,43,Jun 12,Jun 20,Texas Lyceum 1022 | TX,39,52,Jun 02,Jun 02,Rasmussen 1023 | TX,43,48,May 01,May 01,Rasmussen 1024 | TX,46,47,Feb 26,Feb 28,SurveyUSA 1025 | TX,41,49,Feb 23,Feb 25,SurveyUSA 1026 | TX,44,52,Feb 14,Feb 17,Opinion Res. 1027 | UT,32,57,Oct 24,Oct 30,Dan Jones 1028 | UT,32,55,Oct 23,Oct 25,Mason-Dixon 1029 | UT,29,65,Sep 10,Sep 13,ARG 1030 | UT,24,62,Sep 08,Sep 11,Dan Jones 1031 | UT,32,64,Sep 10,Sep 10,Rasmussen 1032 | UT,23,62,Aug 13,Aug 15,Mason-Dixon 1033 | UT,29,57,Jun 16,Jun 19,Dan Jones 1034 | UT,33,52,Jun 19,Jun 19,Rasmussen 1035 | UT,27,62,May 13,May 19,Dan Jones 1036 | UT,39,50,Feb 26,Feb 28,SurveyUSA 1037 | VT,60,36,Oct 09,Oct 09,Rasmussen 1038 | VT,56,38,Sep 18,Sep 22,ARG 1039 | VT,60,36,Sep 13,Sep 13,Rasmussen 1040 | VT,63,29,Feb 26,Feb 28,SurveyUSA 1041 | VA,51,45,Oct 30,Nov 02,Zogby 1042 | VA,50,46,Oct 30,Nov 01,SurveyUSA 1043 | VA,47,44,Oct 29,Oct 30,Mason-Dixon 1044 | VA,53,44,Oct 23,Oct 28,Opinion Research 1045 | VA,48,44,Oct 23,Oct 27,Financial Dynamics 1046 | VA,51,47,Oct 26,Oct 27,Marist Coll. 1047 | VA,48,39,Oct 19,Oct 26,Roanoke Coll. 1048 | VA,49,42,Oct 22,Oct 26,GfK Roper 1049 | VA,51,47,Oct 26,Oct 26,Rasmussen 1050 | VA,52,43,Oct 25,Oct 26,SurveyUSA 1051 | VA,52,45,Oct 23,Oct 26,Zogby 1052 | VA,52,44,Oct 22,Oct 25,Washington Post 1053 | VA,51,40,Oct 20,Oct 22,Virg. Commonwealth U. 1054 | VA,47,45,Oct 20,Oct 21,Mason-Dixon 1055 | VA,54,44,Oct 19,Oct 21,Opinion Research 1056 | VA,45,44,Sep 28,Oct 19,Winthrop U. 1057 | VA,51,45,Oct 18,Oct 19,SurveyUSA 1058 | VA,54,44,Oct 16,Oct 16,Rasmussen 1059 | VA,49,43,Oct 11,Oct 14,Christopher Newport U. 1060 | VA,53,43,Oct 11,Oct 14,Opinion Research 1061 | VA,50,47,Oct 12,Oct 12,Rasmussen 1062 | VA,50,48,Oct 05,Oct 05,Rasmussen 1063 | VA,51,39,Oct 03,Oct 05,Suffolk U. 1064 | VA,53,43,Oct 04,Oct 05,SurveyUSA 1065 | VA,45,48,Sep 29,Oct 01,Mason-Dixon 1066 | VA,53,44,Sep 28,Sep 30,Opinion Research 1067 | VA,46,49,Sep 27,Sep 29,ARG 1068 | VA,51,45,Sep 29,Sep 29,Insider Advantage 1069 | VA,50,47,Sep 28,Sep 28,Rasmussen 1070 | VA,50,45,Sep 25,Sep 25,Rasmussen 1071 | VA,44,47,Sep 17,Sep 22,Mason-Dixon 1072 | VA,48,50,Sep 21,Sep 21,Rasmussen 1073 | VA,49,46,Sep 18,Sep 21,ABC News 1074 | VA,49,46,Sep 18,Sep 21,Washington Post 1075 | VA,51,45,Sep 19,Sep 21,SurveyUSA 1076 | VA,46,48,Sep 17,Sep 20,ARG 1077 | VA,46,48,Sep 17,Sep 17,Insider Advantage 1078 | VA,41,48,Sep 11,Sep 15,Financial Dynamics 1079 | VA,39,48,Sep 10,Sep 14,Christopher Newport U. 1080 | VA,48,48,Sep 14,Sep 14,Rasmussen 1081 | VA,50,46,Sep 12,Sep 14,SurveyUSA 1082 | VA,46,50,Sep 07,Sep 09,Opinion Research 1083 | VA,47,49,Sep 05,Sep 07,SurveyUSA 1084 | VA,47,49,Sep 07,Sep 07,Rasmussen 1085 | VA,43,43,Aug 12,Aug 12,Insider Advantage 1086 | VA,46,45,Aug 12,Aug 12,Rasmussen 1087 | VA,47,48,Aug 08,Aug 10,SurveyUSA 1088 | VA,44,44,Jul 16,Jul 16,Rasmussen 1089 | VA,49,47,Jun 20,Jun 22,SurveyUSA 1090 | VA,45,44,Jun 12,Jun 12,Rasmussen 1091 | VA,36,44,May 12,May 18,Virg. Commonwealth U. 1092 | VA,49,42,May 16,May 18,SurveyUSA 1093 | VA,44,47,May 08,May 08,Rasmussen 1094 | VA,44,52,Apr 11,Apr 13,SurveyUSA 1095 | VA,41,52,Mar 27,Mar 27,Rasmussen 1096 | VA,48,47,Mar 14,Mar 16,SurveyUSA 1097 | VA,47,47,Feb 26,Feb 28,SurveyUSA 1098 | VA,44,49,Feb 19,Feb 19,Rasmussen 1099 | VA,51,45,Feb 15,Feb 17,SurveyUSA 1100 | VA,40,52,Jan 16,Jan 17,SurveyUSA 1101 | WA,51,39,Oct 27,Oct 31,U. of Washington 1102 | WA,56,39,Oct 26,Oct 27,SurveyUSA 1103 | WA,55,34,Oct 18,Oct 26,U. of Washington 1104 | WA,54,43,Oct 22,Oct 22,Rasmussen 1105 | WA,55,36,Oct 16,Oct 19,Elway Poll 1106 | WA,56,40,Oct 12,Oct 13,SurveyUSA 1107 | WA,53,43,Oct 02,Oct 02,Rasmussen 1108 | WA,54,43,Sep 21,Sep 22,SurveyUSA 1109 | WA,50,44,Sep 16,Sep 18,ARG 1110 | WA,49,47,Sep 10,Sep 10,Rasmussen 1111 | WA,45,39,Sep 06,Sep 08,Elway Poll 1112 | WA,49,45,Sep 05,Sep 07,SurveyUSA 1113 | WA,51,44,Aug 11,Aug 12,SurveyUSA 1114 | WA,52,40,Aug 06,Aug 06,Rasmussen 1115 | WA,47,35,Jul 22,Jul 31,Elway Poll 1116 | WA,55,39,Jul 13,Jul 15,SurveyUSA 1117 | WA,51,43,Jul 09,Jul 09,Rasmussen 1118 | WA,55,40,Jun 17,Jun 19,SurveyUSA 1119 | WA,53,35,Jun 09,Jun 09,Rasmussen 1120 | WA,56,39,Jun 07,Jun 09,SurveyUSA 1121 | WA,44,38,May 21,May 25,Elway Poll 1122 | WA,52,36,May 16,May 18,SurveyUSA 1123 | WA,51,40,May 12,May 12,Rasmussen 1124 | WA,54,42,May 12,May 12,SurveyUSA 1125 | WA,53,40,Apr 14,Apr 16,SurveyUSA 1126 | WA,51,44,Apr 07,Apr 07,SurveyUSA 1127 | WA,48,43,Mar 27,Mar 27,Rasmussen 1128 | WA,45,39,Mar 18,Mar 20,Elway Poll 1129 | WA,52,41,Mar 14,Mar 16,SurveyUSA 1130 | WA,44,45,Feb 28,Feb 28,Rasmussen 1131 | WA,52,38,Feb 26,Feb 28,SurveyUSA 1132 | WA,55,38,Feb 03,Feb 04,SurveyUSA 1133 | WA,52,43,Jan 11,Jan 13,SurveyUSA 1134 | WV,40,50,Oct 23,Oct 26,Zogby 1135 | WV,44,49,Oct 20,Oct 21,West Virginia Wesleyan U. 1136 | WV,44,53,Oct 19,Oct 21,Opinion Research 1137 | WV,43,52,Oct 20,Oct 20,Rasmussen 1138 | WV,41,47,Oct 16,Oct 17,Mason-Dixon 1139 | WV,47,49,Oct 13,Oct 13,Insider Advantage 1140 | WV,50,42,Oct 04,Oct 08,ARG 1141 | WV,42,50,Sep 24,Sep 24,Rasmussen 1142 | WV,46,50,Sep 21,Sep 23,Opinion Research 1143 | WV,45,49,Sep 14,Sep 16,ARG 1144 | WV,39,44,Sep 05,Sep 08,Mark Blankenship 1145 | WV,37,45,Jun 02,Jun 02,Rasmussen 1146 | WV,35,53,Feb 26,Feb 28,SurveyUSA 1147 | WI,55,39,Oct 28,Oct 29,SurveyUSA 1148 | WI,52,42,Oct 21,Oct 28,U. of Wisconsin 1149 | WI,54,38,Oct 21,Oct 28,U. of Wisconsin 1150 | WI,51,44,Oct 23,Oct 23,Rasmussen 1151 | WI,53,40,Oct 19,Oct 22,U. of Wisconsin 1152 | WI,53,40,Oct 16,Oct 20,Financial Dynamics 1153 | WI,51,43,Oct 18,Oct 19,SurveyUSA 1154 | WI,51,38,Oct 09,Oct 17,St. Norbert Coll. 1155 | WI,51,39,Oct 16,Oct 17,Mason-Dixon 1156 | WI,51,36,Oct 08,Oct 15,U. of Wisconsin 1157 | WI,54,37,Oct 08,Oct 12,Quinnipiac U. 1158 | WI,51,46,Oct 03,Oct 06,Opinion Research 1159 | WI,52,42,Oct 05,Oct 06,SurveyUSA 1160 | WI,54,44,Oct 06,Oct 06,Rasmussen 1161 | WI,49,42,Sep 14,Sep 21,Quinnipiac U. 1162 | WI,50,45,Sep 18,Sep 21,ARG 1163 | WI,45,44,Sep 14,Sep 17,U. of Wisconsin 1164 | WI,49,45,Sep 14,Sep 16,Opinion Research 1165 | WI,50,47,Sep 14,Sep 16,Opinion Research 1166 | WI,48,46,Sep 15,Sep 15,Rasmussen 1167 | WI,47,43,Aug 05,Aug 05,Rasmussen 1168 | WI,44,38,Aug 03,Aug 04,Wisconsin Policy Res. Inst. 1169 | WI,50,39,Jul 14,Jul 22,Quinnipiac U. 1170 | WI,50,39,Jul 08,Jul 08,Rasmussen 1171 | WI,52,39,Jun 17,Jun 24,Quinnipiac U. 1172 | WI,52,43,Jun 13,Jun 16,SurveyUSA 1173 | WI,50,37,Jun 08,Jun 10,U. of Wisconsin 1174 | WI,45,43,Jun 05,Jun 05,Rasmussen 1175 | WI,48,42,May 16,May 18,SurveyUSA 1176 | WI,43,47,May 05,May 05,Rasmussen 1177 | WI,47,43,Apr 15,Apr 24,U. of Wisconsin 1178 | WI,49,44,Apr 11,Apr 13,SurveyUSA 1179 | WI,46,42,Mar 25,Apr 05,St. Norbert Coll. 1180 | WI,46,48,Mar 26,Mar 26,Rasmussen 1181 | WI,48,44,Mar 14,Mar 16,SurveyUSA 1182 | WI,51,40,Feb 26,Feb 28,SurveyUSA 1183 | WI,44,43,Feb 21,Feb 21,Rasmussen 1184 | WI,52,42,Feb 15,Feb 17,SurveyUSA 1185 | WY,37,58,Oct 18,Oct 19,SurveyUSA 1186 | WY,32,58,Oct 13,Oct 14,Mason-Dixon 1187 | WY,28,66,Sep 09,Sep 11,ARG 1188 | WY,39,58,Sep 10,Sep 10,Rasmussen 1189 | WY,25,62,Aug 13,Aug 15,Mason-Dixon 1190 | WY,35,54,Feb 26,Feb 28,SurveyUSA 1191 | -------------------------------------------------------------------------------- /data/2012_poll_data.csv: -------------------------------------------------------------------------------- 1 | Poll Date Sample MoE Obama (D) Romney (R) Spread 2 | RCP Average 9/24 - 10/1 -- -- 49.1 45.1 Obama +4.0 3 | Rasmussen Tracking 9/29 - 10/1 1500 LV 3.0 48 47 Obama +1 4 | CNN/Opinion Research 9/28 - 9/30 783 LV 3.5 50 47 Obama +3 5 | Gallup Tracking 9/25 - 10/1 3050 RV 2.0 50 44 Obama +6 6 | Quinnipiac 9/25 - 9/30 1912 LV 2.2 49 45 Obama +4 7 | Wash Times/JZ Analytics 9/27 - 9/29 800 LV 3.5 50 41 Obama +9 8 | ABC News/Wash Post 9/26 - 9/29 813 LV 4.0 49 47 Obama +2 9 | Politico/GWU/Battleground 9/24 - 9/27 1000 LV 3.1 49 47 Obama +2 10 | FOX News 9/24 - 9/26 1092 LV 3.0 48 43 Obama +5 11 | Bloomberg 9/21 - 9/24 789 LV 3.5 49 43 Obama +6 12 | Politico/GWU/Battleground 9/16 - 9/20 1000 LV 3.1 50 47 Obama +3 13 | National Journal 9/15 - 9/19 1055 LV 3.0 50 43 Obama +7 14 | Associated Press/GfK 9/13 - 9/17 807 LV 4.3 47 46 Obama +1 15 | Hartford Courant/UConn 9/11 - 9/18 1186 LV 3.0 46 43 Obama +3 16 | Rasmussen Tracking 9/14 - 9/16 1500 LV 3.0 45 47 Romney +2 17 | Reason-Rupe/PSRAI 9/13 - 9/17 787 LV 4.3 52 45 Obama +7 18 | Monmouth/SurveyUSA/Braun 9/13 - 9/16 1344 LV 2.7 48 45 Obama +3 19 | Gallup Tracking 9/11 - 9/17 3050 RV 2.0 47 46 Obama +1 20 | NBC News/Wall St. Jrnl 9/12 - 9/16 736 LV 3.6 50 45 Obama +5 21 | Pew Research/PSRAI 9/12 - 9/16 2268 LV 2.4 51 43 Obama +8 22 | FOX News 9/9 - 9/11 1056 LV 3.0 48 43 Obama +5 23 | CBS News/NY Times 9/8 - 9/12 1162 LV 3.0 49 46 Obama +3 24 | Democracy Corps (D) 9/8 - 9/12 1000 LV 3.1 50 45 Obama +5 25 | Esquire/Yahoo! News 9/7 - 9/10 724 LV 5.0 50 46 Obama +4 26 | Reuters/Ipsos 9/7 - 9/10 873 LV 3.4 48 45 Obama +3 27 | Gallup Tracking 9/5 - 9/11 3050 RV 2.0 50 43 Obama +7 28 | Rasmussen Tracking 9/7 - 9/9 1500 LV 3.0 50 45 Obama +5 29 | ABC News/Wash Post 9/7 - 9/9 710 LV 4.5 49 48 Obama +1 30 | CNN/Opinion Research 9/7 - 9/9 709 LV 3.5 52 46 Obama +6 31 | IBD/CSM/TIPP 9/4 - 9/9 808 RV 3.5 46 44 Obama +2 32 | CNN/Opinion Research 8/31 - 9/3 735 LV 3.5 48 48 Tie 33 | Democracy Corps (D) 8/23 - 8/27 1000 LV 3.1 49 47 Obama +2 34 | CBS News 8/22 - 8/26 1051 RV 3.0 46 45 Obama +1 35 | Gallup Tracking 8/21 - 8/27 3050 RV 2.0 46 47 Romney +1 36 | Rasmussen Tracking 8/23 - 8/25 1500 LV 3.0 47 45 Obama +2 37 | ABC News/Wash Post 8/22 - 8/25 857 RV 4.0 46 47 Romney +1 38 | CNN/Opinion Research 8/22 - 8/23 719 LV 3.5 49 47 Obama +2 39 | FOX News 8/19 - 8/21 1007 LV 3.0 44 45 Romney +1 40 | Resurgent Republic (R) 8/16 - 8/22 1000 LV 3.1 46 45 Obama +1 41 | Associated Press/GfK 8/16 - 8/20 885 RV 4.1 47 46 Obama +1 42 | NBC News/Wall St. Jrnl 8/16 - 8/20 1000 RV 3.1 48 44 Obama +4 43 | Monmouth/SurveyUSA/Braun 8/15 - 8/19 1149 LV 2.9 46 45 Obama +1 44 | LA Times/USC 8/13 - 8/19 954 LV 3.2 48 46 Obama +2 45 | Rasmussen Reports 8/8 - 8/10 1500 LV 3.0 44 46 Romney +2 46 | Gallup 8/6 - 8/12 3050 RV 2.0 46 46 Tie 47 | CNN/Opinion Research 8/7 - 8/8 911 RV 3.5 52 45 Obama +7 48 | Politico/GWU/Battleground 8/5 - 8/9 1000 LV 3.1 48 47 Obama +1 49 | FOX News 8/5 - 8/7 930 RV 3.0 49 40 Obama +9 50 | IBD/CSM/TIPP 8/3 - 8/10 828 RV 3.5 46 39 Obama +7 51 | Reuters/Ipsos 8/2 - 8/6 1014 RV 3.4 49 42 Obama +7 52 | Rasmussen Reports 7/29 - 7/31 1500 LV 3.0 44 47 Romney +3 53 | Gallup 7/24 - 7/31 3050 RV 2.0 47 45 Obama +2 54 | Democracy Corps (D) 7/21 - 7/25 700 LV 3.7 50 46 Obama +4 55 | Pew Research 7/16 - 7/26 1956 RV 3.2 51 41 Obama +10 56 | NBC News/Wall St. Jrnl 7/18 - 7/22 1000 RV 3.1 49 43 Obama +6 57 | FOX News 7/15 - 7/17 901 RV 3.0 45 41 Obama +4 58 | CBS News/NY Times 7/11 - 7/16 942 RV 3.0 46 47 Romney +1 59 | Rasmussen Reports 7/12 - 7/14 1500 LV 3.0 45 45 Tie 60 | Gallup 7/8 - 7/14 3050 RV 2.0 47 45 Obama +2 61 | NPR 7/9 - 7/12 1000 LV 3.1 47 45 Obama +2 62 | McClatchy/Marist 7/9 - 7/11 849 RV 3.5 48 46 Obama +2 63 | WashTimes/JZ Analytics* 7/6 - 7/8 800 LV 3.5 42 43 Romney +1 64 | Reuters/Ipsos 7/5 - 7/9 885 RV 3.4 49 43 Obama +6 65 | ABC News/Wash Post 7/5 - 7/8 RV 4.0 47 47 Tie 66 | Quinnipiac 7/1 - 7/8 2722 RV 1.9 46 43 Obama +3 67 | Rasmussen Reports 7/2 - 7/6 1500 LV 3.0 45 45 Tie 68 | Gallup 7/1 - 7/8 3050 RV 2.0 47 45 Obama +2 69 | Pew Research 6/28 - 7/9 2373 RV 2.3 50 43 Obama +7 70 | CNN/Opinion Research 6/28 - 7/1 1390 RV 2.5 49 46 Obama +3 71 | Newsweek/Daily Beast 6/28 - 6/28 600 LV 4.0 47 44 Obama +3 72 | Democracy Corps (D) 6/23 - 6/27 1000 LV 3.1 49 46 Obama +3 73 | FOX News 6/24 - 6/26 912 RV 3.0 45 40 Obama +5 74 | NBC News/Wall St. Jrnl 6/20 - 6/24 819 RV 3.4 47 44 Obama +3 75 | Rasmussen Reports 6/18 - 6/20 1500 LV 3.0 43 47 Romney +4 76 | Gallup 6/14 - 6/20 3050 RV 2.0 45 47 Romney +2 77 | Bloomberg 6/15 - 6/18 734 LV 3.6 53 40 Obama +13 78 | Associated Press/GfK 6/14 - 6/18 878 RV 4.2 47 44 Obama +3 79 | Pew Research 6/7 - 6/17 1563 RV 2.9 50 46 Obama +4 80 | Reuters/Ipsos 6/7 - 6/11 848 RV 3.4 45 44 Obama +1 81 | Monmouth/SurveyUSA/Braun 6/4 - 6/6 1152 LV 2.9 47 46 Obama +1 82 | Rasmussen Reports 6/4 - 6/6 1500 LV 3.0 46 46 Tie 83 | Gallup 6/2 - 6/8 3050 RV 2.0 46 45 Obama +1 84 | FOX News 6/3 - 6/5 907 RV 3.0 43 43 Tie 85 | IBD/CSM/TIPP 6/1 - 6/8 841 RV 3.5 46 42 Obama +4 86 | CNN/Opinion Research 5/29 - 5/31 895 RV 3.5 49 46 Obama +3 87 | ABC News/Wash Post 5/17 - 5/20 874 RV 4.0 49 46 Obama +3 88 | NBC News/Wall St. Jrnl 5/16 - 5/20 RV -- 47 43 Obama +4 89 | Pew Research 5/9 - 6/3 2388 RV 2.3 49 42 Obama +7 90 | Rasmussen Reports 5/14 - 5/16 1500 LV 3.0 45 46 Romney +1 91 | Gallup 5/11 - 5/17 3050 RV -- 45 46 Romney +1 92 | FOX News 5/13 - 5/15 913 RV 3.0 46 39 Obama +7 93 | IBD/CSM/TIPP 5/9 - 5/16 778 RV 3.6 43 40 Obama +3 94 | Mason-Dixon 5/10 - 5/14 1000 LV 3.0 44 47 Romney +3 95 | CBS News/NY Times** 5/11 - 5/13 562 RV 4.0 43 46 Romney +3 96 | WashTimes/JZ Analytics* 5/11 - 5/12 800 LV 3.5 43 44 Romney +1 97 | Gallup 5/3 - 5/9 3000 RV 2.0 44 47 Romney +3 98 | Associated Press/GfK 5/3 - 5/7 871 RV 4.2 50 42 Obama +8 99 | Reuters/Ipsos 5/3 - 5/7 959 RV 3.2 49 42 Obama +7 100 | Rasmussen Reports 5/4 - 5/6 1500 LV 3.0 45 47 Romney +2 101 | Resurgent Republic (R) 4/30 - 5/3 1000 RV 3.1 49 42 Obama +7 102 | Politico/GWU/Battleground 4/29 - 5/3 1000 LV 3.1 47 48 Romney +1 103 | IBD/CSM/TIPP 4/27 - 5/4 856 RV 3.3 46 43 Obama +3 104 | Democracy Corps (D) 4/28 - 5/1 1000 LV 4.0 47 47 Tie 105 | Gallup 4/23 - 4/28 2200 RV 3.0 47 46 Obama +1 106 | Rasmussen Reports 4/25 - 4/27 1500 LV 3.0 47 45 Obama +2 107 | FOX News 4/22 - 4/24 915 RV 3.0 46 46 Tie 108 | National Journal 4/19 - 4/22 1004 A 3.7 47 39 Obama +8 109 | NBC News/Wall St. Jrnl 4/13 - 4/17 RV -- 49 43 Obama +6 110 | CBS News/NY Times 4/13 - 4/17 852 RV 3.0 46 46 Tie 111 | Quinnipiac 4/11 - 4/17 2577 RV 1.9 46 42 Obama +4 112 | Gallup 4/12 - 4/16 2200 RV 3.0 43 48 Romney +5 113 | CNN/Opinion Research 4/13 - 4/15 910 RV 3.5 52 43 Obama +9 114 | Rasmussen Reports 4/13 - 4/15 1500 LV 3.0 44 47 Romney +3 115 | Reuters/Ipsos 4/12 - 4/15 891 RV 3.3 47 43 Obama +4 116 | PPP (D) 4/12 - 4/15 900 RV 3.3 49 46 Obama +3 117 | Pew Research 4/4 - 4/15 2373 RV 2.3 49 45 Obama +4 118 | FOX News 4/9 - 4/11 910 RV 3.0 44 46 Romney +2 119 | Rasmussen Reports 4/6 - 4/8 1500 LV 3.0 46 44 Obama +2 120 | ABC News/Wash Post 4/5 - 4/8 RV -- 51 44 Obama +7 121 | IBD/CSM/TIPP 3/30 - 4/5 816 RV 3.3 46 38 Obama +8 122 | USA Today/Gallup 3/25 - 3/26 901 RV 4.0 49 45 Obama +4 123 | CNN/Opinion Research 3/24 - 3/25 925 RV 3.0 54 43 Obama +11 124 | Rasmussen Reports 3/23 - 3/25 1500 LV 3.0 46 43 Obama +3 125 | McClatchy/Marist 3/20 - 3/22 846 RV 3.5 46 44 Obama +2 126 | PPP (D) 3/15 - 3/17 900 RV 3.3 48 44 Obama +4 127 | Reason-Rupe 3/10 - 3/20 1200 A 3.0 46 40 Obama +6 128 | FOX News 3/10 - 3/12 912 RV 3.0 46 42 Obama +4 129 | Reuters/Ipsos 3/8 - 3/11 937 RV 3.3 52 41 Obama +11 130 | Bloomberg 3/8 - 3/11 746 LV 3.6 47 47 Tie 131 | Pew Research 3/7 - 3/11 1188 RV 3.5 54 42 Obama +12 132 | Rasmussen Reports 3/8 - 3/10 1500 LV 3.0 42 48 Romney +6 133 | CBS News/NY Times 3/7 - 3/11 878 RV 3.0 47 44 Obama +3 134 | ABC News/Wash Post 3/7 - 3/10 RV -- 47 49 Romney +2 135 | IBD/CSM/TIPP 3/4 - 3/11 807 RV 3.3 46 41 Obama +5 136 | NBC News/Wall St. Jrnl 2/29 - 3/3 RV -- 50 44 Obama +6 137 | Politico/GWU/Battleground 2/19 - 2/22 1000 LV 3.1 53 43 Obama +10 138 | USA Today/Gallup 2/20 - 2/21 881 RV 4.0 47 47 Tie 139 | Associated Press/GfK 2/16 - 2/20 1000 A 4.1 51 43 Obama +8 140 | USA Today/Gallup 2/16 - 2/19 898 RV 4.0 46 50 Romney +4 141 | Rasmussen Reports 2/16 - 2/18 1500 LV 3.0 47 43 Obama +4 142 | Quinnipiac 2/14 - 2/20 2605 RV 1.9 46 44 Obama +2 143 | Democracy Corps (D) 2/11 - 2/14 1000 LV 3.1 49 45 Obama +4 144 | CNN/Opinion Research 2/10 - 2/13 937 RV 3.0 51 46 Obama +5 145 | CBS News/NY Times 2/8 - 2/13 1604 RV 3.0 48 42 Obama +6 146 | PPP (D) 2/9 - 2/12 1200 RV 2.8 49 42 Obama +7 147 | Pew Research 2/8 - 2/12 1172 RV 3.5 52 44 Obama +8 148 | Rasmussen Reports 2/7 - 2/9 1500 LV 3.0 50 40 Obama +10 149 | FOX News 2/6 - 2/9 1110 RV 3.0 47 42 Obama +5 150 | Reuters/Ipsos 2/2 - 2/6 881 RV 3.3 48 42 Obama +6 151 | ABC News/Wash Post 2/1 - 2/4 879 RV 4.0 51 45 Obama +6 152 | IBD/CSM/TIPP 1/29 - 2/4 852 RV 3.3 47 41 Obama +6 153 | Rasmussen Reports 1/31 - 2/2 1500 LV 3.0 45 45 Tie 154 | USA Today/Gallup 1/27 - 1/28 907 RV 4.0 48 48 Tie 155 | NBC News/Wall St. Jrnl 1/22 - 1/24 RV -- 49 43 Obama +6 156 | Rasmussen Reports 1/19 - 1/21 1500 LV 3.0 46 43 Obama +3 157 | PPP (D) 1/13 - 1/16 700 RV 3.7 49 44 Obama +5 158 | CBS News/NY Times 1/12 - 1/16 1021 RV 3.0 45 45 Tie 159 | ABC News/Wash Post 1/12 - 1/15 RV -- 46 48 Romney +2 160 | Pew Research 1/11 - 1/16 1207 RV 3.5 50 45 Obama +5 161 | FOX News 1/12 - 1/14 906 RV 3.0 46 45 Obama +1 162 | CNN/Opinion Research 1/11 - 1/12 928 RV 3.0 47 48 Romney +1 163 | Democracy Corps (D) 1/8 - 1/11 1000 LV 3.1 47 46 Obama +1 164 | Rasmussen Reports 1/9 - 1/10 1000 LV 3.0 44 41 Obama +3 165 | Reuters/Ipsos 1/5 - 1/9 896 RV 3.2 48 43 Obama +5 166 | CBS News 1/4 - 1/8 1247 RV 3.0 45 47 Romney +2 167 | Rasmussen Reports 1/3 - 1/4 1000 LV 3.0 42 42 Tie 168 | Rasmussen Reports 12/27 - 12/28 1000 LV 3.0 39 45 Romney +6 169 | Rasmussen Reports 12/20 - 12/21 1000 LV 3.0 44 41 Obama +3 170 | CNN/Opinion Research 12/16 - 12/18 928 RV 3.0 52 45 Obama +7 171 | PPP (D) 12/16 - 12/18 700 RV 3.7 45 47 Romney +2 172 | ABC News/Wash Post 12/15 - 12/18 RV -- 47 47 Tie 173 | USA Today/Gallup 12/15 - 12/18 898 RV 4.0 50 48 Obama +2 174 | Rasmussen Reports 12/14 - 12/15 1000 LV 3.0 42 43 Romney +1 175 | Reuters/Ipsos 12/8 - 12/12 921 RV 3.2 48 40 Obama +8 176 | Associated Press/GfK 12/8 - 12/12 1000 A 4.0 47 46 Obama +1 177 | NBC News/Wall St. Jrnl 12/7 - 12/11 RV -- 47 45 Obama +2 178 | Rasmussen Reports 12/8 - 12/9 1000 LV 3.0 42 45 Romney +3 179 | USA Today/Gallup 12/6 - 12/7 883 RV 4.0 47 46 Obama +1 180 | FOX News 12/5 - 12/7 911 RV 3.0 44 42 Obama +2 181 | Rasmussen Reports 11/30 - 12/1 1000 LV 3.0 42 40 Obama +2 182 | Rasmussen Reports 11/21 - 11/22 1000 LV 3.0 44 38 Obama +6 183 | Quinnipiac 11/14 - 11/20 2552 RV 1.9 45 44 Obama +1 184 | FOX News 11/13 - 11/15 914 RV 3.0 42 44 Romney +2 185 | CNN/Opinion Research 11/11 - 11/13 925 RV 3.0 47 51 Romney +4 186 | Pew Research 11/9 - 11/14 1576 RV 3.0 49 47 Obama +2 187 | PPP (D) 11/10 - 11/13 800 RV 3.5 46 43 Obama +3 188 | Rasmussen Reports 11/9 - 11/10 1000 LV 3.0 43 42 Obama +1 189 | McClatchy/Marist 11/8 - 11/10 872 RV 3.5 48 44 Obama +4 190 | Politico/GWU/Battleground 11/6 - 11/9 1000 LV 3.1 49 43 Obama +6 191 | NBC News/Wall St. Jrnl 11/2 - 11/5 RV -- 49 43 Obama +6 192 | ABC News/Wash Post 10/31 - 11/3 RV -- 46 47 Romney +1 193 | Reuters/Ipsos 10/31 - 11/3 937 RV 3.2 43 44 Romney +1 194 | Rasmussen Reports 11/1 - 11/2 1000 LV 3.0 42 41 Obama +1 195 | Quinnipiac 10/25 - 10/31 2294 RV 2.1 47 42 Obama +5 196 | USA Today/Gallup 10/26 - 10/27 908 RV 4.0 47 47 Tie 197 | Rasmussen Reports 10/24 - 10/25 1000 LV 3.0 42 44 Romney +2 198 | Democracy Corps (D) 10/15 - 10/18 1000 LV -- 45 45 Tie 199 | Rasmussen Reports 10/16 - 10/17 1000 LV 3.0 43 42 Obama +1 200 | Associated Press/GfK 10/13 - 10/17 1000 A 4.0 48 45 Obama +3 201 | Time 10/9 - 10/10 838 LV -- 48 44 Obama +4 202 | PPP (D) 10/7 - 10/10 700 RV 3.7 45 45 Tie 203 | NBC News/Wall St. Jrnl 10/6 - 10/10 RV -- 46 44 Obama +2 204 | Rasmussen Reports 10/8 - 10/9 1000 LV 3.0 43 41 Obama +2 205 | Quinnipiac 9/27 - 10/3 2118 RV 2.1 42 46 Romney +4 206 | ABC News/Wash Post 9/29 - 10/2 RV -- 46 48 Romney +2 207 | Pew Research 9/22 - 10/4 1901 RV 3.0 48 48 Tie 208 | Rasmussen Reports 9/28 - 9/29 1000 LV 3.0 42 44 Romney +2 209 | FOX News 9/25 - 9/27 925 RV 3.0 45 42 Obama +3 210 | CNN/Opinion Research 9/23 - 9/25 917 RV 3.0 49 48 Obama +1 211 | Rasmussen Reports 9/18 - 9/19 1000 LV 3.0 44 41 Obama +3 212 | USA Today/Gallup 9/15 - 9/18 889 RV 4.0 47 49 Romney +2 213 | McClatchy/Marist 9/13 - 9/14 825 RV 3.5 46 44 Obama +2 214 | Bloomberg 9/9 - 9/12 997 A 3.1 48 43 Obama +5 215 | Reuters/Ipsos 9/8 - 9/12 932 RV 3.1 49 43 Obama +6 216 | Rasmussen Reports 9/10 - 9/11 1000 LV 3.0 40 43 Romney +3 217 | PPP (D) 9/8 - 9/11 665 RV 3.8 49 45 Obama +4 218 | ABC News/Wash Post 8/29 - 9/1 RV -- 45 49 Romney +4 219 | NBC News/Wall St. Jrnl 8/27 - 8/31 RV -- 46 45 Obama +1 220 | Rasmussen Reports 8/25 - 8/26 1000 LV 3.0 43 39 Obama +4 221 | Quinnipiac 8/16 - 8/27 2730 RV 1.9 45 45 Tie 222 | PPP (D) 8/18 - 8/21 700 RV 3.7 45 45 Tie 223 | Rasmussen Reports 8/17 - 8/21 1000 LV 3.0 46 38 Obama +8 224 | Gallup 8/17 - 8/18 879 RV 4.0 46 48 Romney +2 225 | Democracy Corps (D) 8/6 - 8/10 1000 LV 3.0 48 46 Obama +2 226 | CNN/Opinion Research 8/5 - 8/7 930 RV 3.0 49 48 Obama +1 227 | McClatchy/Marist 8/2 - 8/4 807 RV 3.5 46 41 Obama +5 228 | FOX News 7/17 - 7/19 904 RV 3.0 47 41 Obama +6 229 | ABC News/Wash Post 7/14 - 7/17 RV -- 49 47 Obama +2 230 | NBC News/Wall St. Jrnl 7/14 - 7/17 RV -- 48 41 Obama +7 231 | PPP (D) 7/15 - 7/17 928 RV 3.2 45 45 Tie 232 | Rasmussen Reports 7/14 - 7/15 1000 LV 3.0 42 43 Romney +1 233 | Quinnipiac 7/5 - 7/11 2311 RV 2.0 47 41 Obama +6 234 | McClatchy/Marist 6/15 - 6/23 390 RV 5.0 46 42 Obama +4 235 | Democracy Corps (D) 6/18 - 6/21 1000 RV 3.0 47 45 Obama +2 236 | NBC News/Wall St. Jrnl 6/9 - 6/13 RV 3.1 49 43 Obama +6 237 | PPP (D) 6/9 - 6/12 520 RV 4.3 47 45 Obama +2 238 | FOX News 6/5 - 6/7 912 RV 3.0 48 41 Obama +7 239 | Reuters/Ipsos 6/3 - 6/6 1132 A 3.0 51 38 Obama +13 240 | ABC News/Wash Post 6/2 - 6/5 RV 3.5 46 49 Romney +3 241 | Quinnipiac 5/31 - 6/6 1946 RV 2.2 47 41 Obama +6 242 | PPP (D) 5/23 - 5/25 600 RV 4.0 49 42 Obama +7 243 | Democracy Corps (D) 5/21 - 5/25 1000 LV 3.0 48 44 Obama +4 244 | Politico/GWU/Battleground 5/8 - 5/12 1000 LV 3.1 52 40 Obama +12 245 | Reuters/Ipsos 5/5 - 5/9 600 A -- 51 38 Obama +13 246 | PPP (D) 5/5 - 5/8 814 RV 3.4 47 42 Obama +5 247 | Newsweek/Daily Beast 5/2 - 5/3 600 A 3.0 42 36 Obama +6 248 | Newsweek/Daily Beast 4/30 - 5/1 600 A 3.0 44 44 Tie 249 | CNN/Opinion Research 4/29 - 5/1 964 RV 3.0 54 43 Obama +11 250 | ABC News/Wash Post 4/14 - 4/17 1001 A 3.5 49 45 Obama +4 251 | McClatchy/Marist 4/10 - 4/14 532 RV 4.5 46 45 Obama +1 252 | Democracy Corps (D) 4/10 - 4/12 1000 LV 3.1 46 48 Romney +2 253 | PPP (D) 4/7 - 4/10 532 RV 4.3 47 41 Obama +6 254 | PPP (D) 3/10 - 3/13 642 RV 3.9 47 42 Obama +5 255 | Rasmussen Reports 3/6 - 3/9 2000 LV 2.0 45 40 Obama +5 256 | NBC News/Wall St. Jrnl 2/24 - 2/28 RV -- 49 40 Obama +9 257 | Newsweek/Daily Beast 2/12 - 2/15 918 LV 3.5 49 47 Obama +2 258 | PPP (D) 2/11 - 2/14 600 RV 4.0 46 41 Obama +5 259 | FOX News 2/7 - 2/9 911 RV 3.0 48 41 Obama +7 260 | PPP (D) 1/14 - 1/16 632 RV 3.9 48 43 Obama +5 261 | Democracy Corps (D) 1/9 - 1/12 1000 LV 3.0 48 46 Obama +2 262 | McClatchy/Marist 1/6 - 1/10 827 RV 3.5 51 38 Obama +13 263 | Rasmussen Reports 1/3 - 1/6 2000 LV -- 42 44 Romney +2 264 | NBC News/Wall St. Jrnl 12/9 - 12/13 1000 A 3.1 47 40 Obama +7 265 | McClatchy/Marist 12/2 - 12/8 873 RV 3.5 44 46 Romney +2 266 | PPP (D) 11/19 - 11/21 707 RV 3.7 47 46 Obama +1 267 | Quinnipiac 11/8 - 11/15 2424 RV 2.0 44 45 Romney +1 268 | CNN/Opinion Research 10/27 - 10/30 921 RV 3.0 45 50 Romney +5 269 | FOX News 9/28 - 9/29 900 RV 3.0 41 40 Obama +1 270 | PPP (D) 9/10 - 9/13 590 RV 4.0 46 43 Obama +3 271 | PPP (D) 8/6 - 8/9 606 RV 4.0 45 42 Obama +3 272 | PPP (D) 7/9 - 7/12 667 RV 3.8 43 46 Romney +3 273 | PPP (D) 6/4 - 6/7 650 RV 3.8 45 42 Obama +3 274 | PPP (D) 5/7 - 5/9 707 RV 3.7 46 44 Obama +2 275 | PPP (D) 4/9 - 4/11 622 RV 3.9 44 45 Romney +1 276 | CNN/Opinion Research 4/9 - 4/11 907 RV 3.5 53 45 Obama +8 277 | PPP (D) 3/12 - 3/14 1403 RV 2.6 44 44 Tie 278 | PPP (D) 2/13 - 2/15 743 RV 3.6 45 43 Obama +2 279 | PPP (D) 1/18 - 1/19 1151 RV 2.8 44 42 Obama +2 280 | FOX News 1/12 - 1/14 900 RV 3.0 47 35 Obama +12 281 | PPP (D) 12/4 - 12/7 1253 RV 2.8 47 42 Obama +5 282 | Rasmussen Reports 11/24 - 11/24 800 LV 3.5 44 44 Tie 283 | PPP (D) 11/13 - 11/15 1066 RV 3.0 48 43 Obama +5 284 | PPP (D) 10/16 - 10/19 766 RV 3.5 48 40 Obama +8 285 | PPP (D) 9/18 - 9/21 621 RV 3.9 48 39 Obama +9 286 | PPP (D) 8/14 - 8/17 909 RV 3.3 47 40 Obama +7 287 | Rasmussen Reports 7/16 - 7/17 1000 LV 3.0 45 45 Tie 288 | PPP (D) 7/15 - 7/16 577 RV 4.1 49 40 Obama +9 289 | PPP (D) 6/12 - 6/16 638 RV 3.9 48 40 Obama +8 290 | PPP (D) 5/14 - 5/18 1000 RV 3.1 53 35 Obama +18 291 | PPP (D) 4/17 - 4/19 686 RV 3.7 50 39 Obama +11 292 | -------------------------------------------------------------------------------- /data/census_data_2000.csv: -------------------------------------------------------------------------------- 1 | State,vote_pop,older_pop,per_black,per_hisp,per_white,per_older,per_vote,educ_hs,educ_coll,average_income,median_income,pop_density 2 | Alabama,3323678.0,579798.0,25.9928942457,1.70515616919,70.2889298644,13.0376649952,74.7380989859,75.3,19.0,18189,21188,87.6 3 | Alaska,436215.0,35699.0,3.47517753122,4.12357321049,67.597123771,5.69423797158,69.5793164171,88.3,24.7,22660,25776,1.1 4 | Arizona,3763685.0,667839.0,3.09655808485,25.2525809686,63.8178298502,13.0167004767,73.3571419661,81.0,23.5,20275,22428,45.2 5 | Arkansas,1993031.0,374019.0,15.6710555846,3.24927059176,78.5567068153,13.9903867734,74.5504226827,75.3,16.7,16904,19590,51.3 6 | California,24621819.0,3595658.0,6.68370786092,32.3768007981,46.6962516852,10.61553899,72.6915295057,76.8,26.6,22711,25026,217.2 7 | Colorado,3200466.0,416073.0,3.83754903504,17.1019847435,74.4637444694,9.67327953361,74.4076213929,86.9,32.7,24049,25318,41.5 8 | Connecticut,2563877.0,470183.0,9.09813790076,9.40586951064,77.4862614573,13.8063140771,75.2849233534,84.0,31.4,28766,30409,702.9 9 | Delaware,589013.0,101726.0,19.2274119449,4.75714650332,72.4825165901,12.9818785094,75.1675599796,82.6,25.0,23305,25910,401.1 10 | District of Columbia,457067.0,69898.0,60.0133902272,7.85810554506,27.8254515706,12.2186697526,79.898576895,77.8,39.1,28659,27010,9316.4 11 | Florida,12336038.0,2807597.0,14.6130006436,16.7854558314,65.4377527549,17.5668289162,77.1852474019,79.9,22.3,21557,22050,296.4 12 | Georgia,6017219.0,785275.0,28.7003663247,5.31642947196,62.6481456621,9.59237169016,73.5021504429,78.6,24.3,21154,24111,141.4 13 | Hawaii,915770.0,160601.0,1.8161228258,7.23865635139,22.8710307651,13.2559715469,75.5874562642,84.6,26.2,21525,24736,188.6 14 | Idaho,924923.0,145916.0,0.421653645843,7.85886349813,88.0473247483,11.2767619844,71.4804169858,84.7,21.7,17841,19515,15.6 15 | Illinois,9173842.0,1500025.0,15.1125752488,12.3216514821,67.8310754082,12.0781835166,73.8676670242,81.4,26.1,23104,25890,223.4 16 | Indiana,4506089.0,752831.0,8.38804799288,3.52827118232,85.838103375,12.3811011786,74.1073943937,82.1,19.4,20397,23229,169.5 17 | Iowa,2192686.0,436213.0,2.11367572422,2.81831403495,92.6194091973,14.9065175285,74.9297070318,86.1,21.2,19674,21406,52.4 18 | Kansas,1975425.0,356229.0,5.73564081181,7.00233371447,83.0970853491,13.2505064317,73.4790869575,86.0,25.8,20506,22149,32.9 19 | Kentucky,3046951.0,504793.0,7.3233774617,1.48298925545,89.2681645092,12.4894074847,75.3865695937,74.1,17.1,18093,20951,101.7 20 | Louisiana,3249177.0,516929.0,32.4894114446,2.41079835739,62.5286642846,11.5670569723,72.705178994,74.8,18.7,16912,20522,102.6 21 | Maine,973685.0,183402.0,0.53022810005,0.734161984685,96.4997101786,14.3853393499,76.372063254,85.4,22.9,19533,21285,41.3 22 | Maryland,3940314.0,599307.0,27.8941736087,4.30315495972,62.0514620448,11.3151814241,74.3948723739,83.8,31.4,25614,29262,541.9 23 | Massachusetts,4849033.0,860162.0,5.409493665,6.75259804662,81.8755643519,13.5477848267,76.3735850941,84.8,33.2,25952,28420,809.8 24 | Michigan,7342677.0,1219018.0,14.21492137,3.25883005428,78.550435058,12.265682636,73.8815553018,83.4,21.8,22168,25271,175.0 25 | Minnesota,3632585.0,594266.0,3.49083713946,2.91457692979,88.1626489309,12.0798564238,73.8408477808,87.9,27.4,23198,25505,61.8 26 | Mississippi,2069471.0,343523.0,36.3421191581,1.39099322309,60.7422052141,12.0760738198,72.7493779569,72.9,16.9,15853,19715,60.6 27 | Missouri,4167519.0,755379.0,11.2487446854,2.11952685967,83.7586643292,13.500456015,74.483678989,81.3,21.6,19936,21751,81.2 28 | Montana,672133.0,120949.0,0.298383387183,2.00411219304,89.5397336496,13.4060818337,74.4997478372,87.2,24.4,17151,17232,6.2 29 | Nebraska,1261021.0,232195.0,4.00528732287,5.51785435669,87.3328062373,13.5686332259,73.6894913289,86.6,23.7,19613,21195,22.3 30 | Nevada,1486458.0,218929.0,6.77975855958,19.7156822171,65.206877794,10.9559981524,74.3877289057,80.7,18.2,21989,24614,18.2 31 | New Hampshire,926224.0,147970.0,0.731113639417,1.65797314422,95.101579076,11.9737559739,74.9501936419,87.4,28.7,23844,25905,137.8 32 | New Jersey,6326792.0,1113136.0,13.5699251873,13.2772109551,66.0444241088,13.2290194727,75.1905019401,82.1,29.8,27006,30439,1134.4 33 | New Mexico,1310472.0,212225.0,1.88796764898,42.0762311673,44.7209691234,11.6668297558,72.0417185712,78.9,23.5,17261,19427,15.0 34 | New York,14286350.0,2448352.0,15.8848672331,15.1112665552,61.9766956498,12.9020501561,75.2846013352,79.1,27.4,23389,26247,401.9 35 | North Carolina,6085266.0,969048.0,21.5862521435,4.70801669658,70.1569810989,12.0388907724,75.5998182702,78.1,22.5,20307,22276,165.2 36 | North Dakota,481351.0,94478.0,0.609778885083,1.21239489256,91.7391778262,14.7116163189,74.9534412955,83.9,22.0,17769,18550,9.3 37 | Ohio,8464801.0,1507757.0,11.4620889023,1.91244889079,84.0129779074,13.2805285586,74.5591175657,83.0,21.1,21003,23949,277.3 38 | Oklahoma,2558294.0,455950.0,7.56285620059,5.19623236639,74.0835795185,13.2134372209,74.1393950248,80.6,20.3,17646,19960,50.3 39 | Oregon,2574873.0,438177.0,1.62687836175,8.04682528989,83.5218575793,12.8069541144,75.2578988887,85.1,25.1,20940,22200,35.6 40 | Pennsylvania,9358833.0,1919165.0,9.97155455875,3.208910245,84.0518655809,15.6270382005,76.2054543527,81.9,22.4,20880,23714,274.0 41 | Rhode Island,800497.0,152402.0,4.47459218043,8.66339348996,81.8866203894,14.5377504367,76.360058341,78.0,25.6,21688,24007,1003.2 42 | South Carolina,3002371.0,485333.0,29.541686316,2.36978354003,66.1087504225,12.0969977159,74.8345468558,76.3,20.4,18795,21571,133.2 43 | South Dakota,552195.0,108131.0,0.620658043251,1.44440440674,88.0426949144,14.3249466115,73.1535257616,84.6,21.5,17562,19276,9.9 44 | Tennessee,4290762.0,703311.0,16.3958973389,2.17668904851,79.2003139939,12.3620322631,75.418326,75.9,19.6,19393,21700,138.0 45 | Texas,14965061.0,2072532.0,11.5316840448,31.9860136909,52.4333751203,9.93933383273,71.7686082078,75.7,23.2,19617,22142,79.6 46 | Utah,1514471.0,190222.0,0.790670119458,9.02569398017,85.2718714974,8.5180297595,67.8171244541,87.7,26.1,18185,20583,27.2 47 | Vermont,461304.0,77510.0,0.50309858137,0.904033493915,96.1572006498,12.731038538,75.7693072088,86.4,29.4,20625,21497,65.8 48 | Virginia,5340253.0,792333.0,19.6410264017,4.65549624462,70.1508296585,11.1934918553,75.4431261359,81.5,29.5,23975,25357,178.8 49 | Washington,4380278.0,662148.0,3.228080998,7.49066739553,78.934416175,11.2340415136,74.3160515368,87.1,27.7,22973,25498,88.6 50 | West Virginia,1405951.0,276895.0,3.16488455736,0.679019036201,94.5597740253,15.3120755785,77.7479837907,75.2,14.8,16477,19159,75.1 51 | Wisconsin,3994919.0,702553.0,5.67633199252,3.59680629419,87.283998378,13.0983514102,74.4810041623,85.1,22.4,21271,23601,98.8 52 | Wyoming,364909.0,57693.0,0.753773932626,6.41355901997,88.8649241973,11.6839009927,73.900830731,87.9,21.9,19134,19763,5.1 53 | -------------------------------------------------------------------------------- /data/census_demographics.csv: -------------------------------------------------------------------------------- 1 | state,per_black,per_hisp,per_white,educ_hs,educ_coll,average_income,median_income,pop_density,vote_pop,older_pop,per_older,per_vote 2 | ALABAMA,26.5,4.0,66.8,81.4,21.7,22984,42081,94.4,3001712.5,672383.6,0.14,0.625 3 | ALASKA,3.6,5.8,63.7,90.7,27.0,30726,66521,1.2,475548.444,58540.158,0.081,0.658 4 | ARIZONA,4.5,30.1,57.4,85.0,26.3,25680,50448,56.3,3934880.535,920515.71,0.142,0.607 5 | ARKANSAS,15.6,6.6,74.2,81.9,19.1,21274,39267,56.0,1798043.148,428944.934,0.146,0.612 6 | CALIFORNIA,6.6,38.1,39.7,80.7,30.1,29188,60883,239.1,24009747.944,4409953.704,0.117,0.637 7 | COLORADO,4.3,20.9,69.7,89.3,35.9,30151,56456,48.5,3310567.012,578197.948,0.113,0.647 8 | CONNECTICUT,11.1,13.8,70.9,88.4,35.2,36775,67740,738.1,2263008.088,515622.096,0.144,0.632 9 | DELAWARE,21.9,8.4,65.1,87.0,27.7,29007,57599,460.8,568773.645,133348.845,0.147,0.627 10 | DISTRICT OF COLUMBIA,50.7,9.5,35.3,86.5,49.2,42078,58526,9856.5,442485.136,70451.544,0.114,0.716 11 | FLORIDA,16.5,22.9,57.5,85.3,25.9,26551,47661,350.6,11701330.788,3354127.392,0.176,0.614 12 | GEORGIA,31.0,9.1,55.5,83.5,27.2,25134,49347,168.4,6242473.56,1079673.1,0.11,0.636 13 | HAWAII,2.0,9.2,22.9,89.8,29.4,28882,66420,211.8,867505.11,202097.07,0.147,0.631 14 | IDAHO,0.8,11.5,83.6,88.2,24.3,22518,46423,19.0,954160.97,202878.08,0.128,0.602 15 | ILLINOIS,14.8,16.2,63.3,86.2,30.3,28782,55735,231.1,8133370.424,1634395.639,0.127,0.632 16 | INDIANA,9.4,6.2,81.3,86.2,22.4,24058,47697,181.0,4060042.406,860233.704,0.132,0.623 17 | IOWA,3.1,5.2,88.4,89.9,24.5,25335,48872,54.5,1880257.726,456284.041,0.149,0.614 18 | KANSAS,6.1,10.8,77.8,89.2,29.3,25907,49424,34.9,1765811.37,381874.654,0.133,0.615 19 | KENTUCKY,8.0,3.2,86.1,81.0,20.3,22515,41576,109.9,2757063.636,589863.06,0.135,0.631 20 | LOUISIANA,32.4,4.4,60.1,81.0,20.9,23094,43445,104.9,2886721.516,571854.5,0.125,0.631 21 | MAINE,1.3,1.4,94.3,89.8,26.5,25385,46933,43.1,842071.192,216494.644,0.163,0.634 22 | MARYLAND,30.0,8.4,54.4,87.8,35.7,34849,70647,594.8,3753418.116,728536.125,0.125,0.644 23 | MASSACHUSETTS,7.8,9.9,76.4,88.7,38.3,33966,64509,839.4,4262135.792,922255.04,0.14,0.647 24 | MICHIGAN,14.3,4.5,76.4,88.0,25.0,25135,48432,174.8,6192369.249,1392542.367,0.141,0.627 25 | MINNESOTA,5.4,4.9,82.8,91.3,31.4,29582,57243,66.6,3367262.43,700176.791,0.131,0.63 26 | MISSISSIPPI,37.3,2.9,57.7,79.6,19.5,19977,37881,63.2,1840720.416,387206.56,0.13,0.618 27 | MISSOURI,11.7,3.7,80.8,86.2,25.0,24724,46262,87.1,3744658.624,853517.696,0.142,0.623 28 | MONTANA,0.5,3.1,87.5,91.0,27.9,23836,43872,6.8,623874.375,151726.248,0.152,0.625 29 | NEBRASKA,4.7,9.5,81.8,90.0,27.7,25229,49342,23.8,1131381.574,250599.176,0.136,0.614 30 | NEVADA,8.6,27.1,53.6,84.3,21.8,27589,55726,24.6,1718416.182,340415.25,0.125,0.631 31 | NEW HAMPSHIRE,1.3,2.9,92.2,90.9,32.9,31422,63277,147.0,854189.712,184547.16,0.14,0.648 32 | NEW JERSEY,14.6,18.1,58.9,87.3,34.6,34858,69811,1195.5,5566148.805,1208498.235,0.137,0.631 33 | NEW MEXICO,2.5,46.7,40.2,82.7,25.5,22966,43820,17.0,1280567.76,283182.464,0.136,0.615 34 | NEW YORK,17.5,18.0,58.0,84.4,32.1,30948,55603,411.2,12516121.671,2666731.989,0.137,0.643 35 | NORTH CAROLINA,22.0,8.6,65.0,83.6,26.1,24745,45570,196.1,6093189.031,1274644.932,0.132,0.631 36 | NORTH DAKOTA,1.3,2.2,88.6,89.4,26.3,25803,46781,9.7,434296.82,98486.208,0.144,0.635 37 | OHIO,12.4,3.2,81.0,87.4,24.1,25113,47358,282.3,7204049.424,1650927.993,0.143,0.624 38 | OKLAHOMA,7.7,9.2,68.2,85.4,22.6,23094,42979,54.7,2335568.928,519436.596,0.137,0.616 39 | OREGON,2.0,12.0,78.1,88.6,28.6,26171,49260,39.9,2454758.606,553675.837,0.143,0.634 40 | PENNSYLVANIA,11.3,5.9,79.2,87.4,26.4,27049,50398,283.9,7989789.522,1987890.216,0.156,0.627 41 | RHODE ISLAND,7.2,12.8,76.5,83.7,30.3,28707,54902,1018.1,677038.488,154541.394,0.147,0.644 42 | SOUTH CAROLINA,28.1,5.3,64.0,83.0,24.0,23443,43939,153.9,2938556.44,659771.43,0.141,0.628 43 | SOUTH DAKOTA,1.4,2.9,84.4,89.3,25.3,24110,46369,10.7,501865.938,118667.808,0.144,0.609 44 | TENNESSEE,16.9,4.7,75.4,82.5,22.7,23722,43314,153.9,4034112.39,877259.361,0.137,0.63 45 | TEXAS,12.2,38.1,44.8,80.0,25.8,24870,49646,96.3,16021000.944,2695841.505,0.105,0.624 46 | UTAH,1.3,13.2,80.1,90.6,29.4,23139,56330,33.6,1679064.312,259184.424,0.092,0.596 47 | VERMONT,1.1,1.6,94.2,90.6,33.3,27478,51841,67.9,406553.719,93964.65,0.15,0.649 48 | VIRGINIA,19.8,8.2,64.5,86.1,33.8,32145,61406,202.6,5230406.184,1012075.5,0.125,0.646 49 | WASHINGTON,3.8,11.6,72.1,89.6,31.0,29733,57244,101.2,4378054.358,867414.826,0.127,0.641 50 | WEST VIRGINIA,3.5,1.3,93.0,81.9,17.3,21232,38380,77.1,1170734.684,300568.968,0.162,0.631 51 | WISCONSIN,6.5,6.1,83.1,89.4,25.8,26624,51598,105.0,3592701.443,793935.613,0.139,0.629 52 | WYOMING,1.1,9.1,85.5,91.3,23.6,27860,53802,5.8,361348.488,72156.066,0.127,0.636 53 | -------------------------------------------------------------------------------- /data/electoral_votes.csv: -------------------------------------------------------------------------------- 1 | State,Votes 2 | California,55 3 | Texas,38 4 | New York,29 5 | Florida,29 6 | Illinois,20 7 | Pennsylvania,20 8 | Ohio,18 9 | Michigan,16 10 | Georgia,16 11 | North Carolina,15 12 | New Jersey,14 13 | Virginia,13 14 | Washington,12 15 | Massachusetts,11 16 | Indiana,11 17 | Tennessee,11 18 | Arizona,11 19 | Missouri,10 20 | Maryland,10 21 | Minnesota,10 22 | Wisconsin,10 23 | Alabama,9 24 | Colorado,9 25 | South Carolina,9 26 | Louisiana,8 27 | Kentucky,8 28 | Connecticut,7 29 | Oklahoma,7 30 | Oregon,7 31 | Iowa,6 32 | Arkansas,6 33 | Kansas,6 34 | Mississippi,6 35 | Nevada,6 36 | Utah,6 37 | Nebraska,5 38 | New Mexico,5 39 | West Virginia,5 40 | Hawaii,4 41 | Idaho,4 42 | Maine,4 43 | New Hampshire,4 44 | Rhode Island,4 45 | Alaska,3 46 | Delaware,3 47 | District of Columbia,3 48 | Montana,3 49 | North Dakota,3 50 | South Dakota,3 51 | Vermont,3 52 | Wyoming,3 53 | -------------------------------------------------------------------------------- /data/gallup_electorate.csv: -------------------------------------------------------------------------------- 1 | State,Democrat,Republican,Democrat Advantage,N 2 | District of Columbia,79.0%,12.7%,66.3,416 3 | Rhode Island,52.5%,26.5%,26.0,623 4 | Hawaii,54.3%,28.7%,25.6,466 5 | New York,52.0%,30.8%,21.2,8674 6 | Maryland,54.0%,33.8%,20.2,3571 7 | Massachusetts,52.5%,33.4%,19.1,3583 8 | Delaware,50.5%,33.1%,17.4,540 9 | Connecticut,49.8%,34.4%,15.4,2020 10 | Vermont,48.8%,34.9%,13.9,550 11 | California,48.3%,34.6%,13.7,16197 12 | Illinois,48.4%,35.8%,12.6,5888 13 | New Jersey,47.4%,35.9%,11.5,4239 14 | Michigan,47.7%,36.6%,11.1,5056 15 | Minnesota,48.4%,38.2%,10.2,3873 16 | Washington,47.5%,37.7%,9.8,5333 17 | Oregon,47.2%,39.1%,8.1,3002 18 | Pennsylvania,46.4%,41.2%,5.2,8443 19 | Maine,43.8%,39.4%,4.4,1040 20 | New Mexico,44.7%,41.1%,3.6,1555 21 | Ohio,44.1%,40.5%,3.6,6426 22 | West Virginia,45.3%,41.9%,3.4,1202 23 | Wisconsin,45.0%,42.2%,2.8,4140 24 | Iowa,43.2%,41.4%,1.8,2337 25 | Florida,43.0%,42.3%,0.7,9965 26 | Arkansas,41.5%,40.8%,0.7,2071 27 | Kentucky,43.5%,43.1%,0.4,2898 28 | North Carolina,43.4%,43.2%,0.2,6213 29 | New Hampshire,42.3%,43.8%,-1.5,873 30 | Virginia,41.2%,44.2%,-3.0,5313 31 | Missouri,40.1%,44.0%,-3.9,3727 32 | Georgia,40.3%,44.3%,-4.0,5110 33 | Nevada,39.2%,43.4%,-4.2,1348 34 | Louisiana,40.3%,45.1%,-4.8,2655 35 | Colorado,39.9%,45.1%,-5.2,3671 36 | Texas,38.3%,44.1%,-5.8,11325 37 | South Dakota,41.5%,47.5%,-6.0,607 38 | Indiana,39.0%,45.7%,-6.7,4197 39 | Mississippi,40.1%,47.1%,-7.0,1763 40 | Arizona,39.8%,47.3%,-7.5,4325 41 | Tennessee,38.1%,46.5%,-8.4,4231 42 | Alaska,35.9%,44.3%,-8.4,402 43 | Oklahoma,38.6%,48.0%,-9.4,2583 44 | South Carolina,36.9%,48.8%,-11.9,2858 45 | North Dakota,35.8%,49.0%,-13.2,547 46 | Alabama,36.0%,49.6%,-13.6,3197 47 | Montana,35.9%,49.6%,-13.7,1137 48 | Kansas,34.4%,51.3%,-16.9,1937 49 | Nebraska,33.1%,52.1%,-19.0,1351 50 | Wyoming,26.7%,56.6%,-29.9,600 51 | Idaho,27.5%,57.8%,-30.3,1336 52 | Utah,24.5%,63.8%,-39.3,2256 53 | -------------------------------------------------------------------------------- /data/obama_indiv_state.csv: -------------------------------------------------------------------------------- 1 | AK,593837.14 2 | AL,898871.7 3 | AR,549577.73 4 | AZ,2760943.04 5 | CA,32061532.06 6 | CO,4107960.99 7 | CT,3352966.13 8 | DC,167660340.63 9 | DE,538429.44 10 | FL,7575609.4 11 | GA,3423312.7 12 | HI,1076695.53 13 | IA,1138906.0 14 | ID,423872.67 15 | IL,9118570.52 16 | IN,1679498.1 17 | KS,841892.28 18 | KY,967478.03 19 | LA,900897.96 20 | MA,8993989.25 21 | MD,6804948.79 22 | ME,847259.13 23 | MI,3883115.55 24 | MN,2683098.98 25 | MO,1896781.73 26 | MS,421344.9 27 | MT,592254.18 28 | NC,4046478.79 29 | ND,126967.89 30 | NE,463834.58 31 | NH,998811.4 32 | NJ,4987626.56 33 | NM,1645546.6 34 | NV,996848.99 35 | NY,18198650.54 36 | OH,3343178.73 37 | OK,927415.56 38 | OR,2922174.11 39 | PA,5863760.1 40 | RI,593082.86 41 | SC,1141568.62 42 | SD,168146.0 43 | TN,1849243.2 44 | TX,8922853.63 45 | UT,735441.6 46 | VA,6243635.69 47 | VT,801941.43 48 | WA,6245203.12 49 | WI,1997718.74 50 | WV,383182.44 51 | WY,323447.5 52 | -------------------------------------------------------------------------------- /data/partisan_voting.csv: -------------------------------------------------------------------------------- 1 | State,PVI 2 | Alabama,R+13 3 | Alaska,R+13 4 | Arizona,R+6 5 | Arkansas,R+9 6 | California,D+7 7 | Colorado,EVEN 8 | Connecticut,D+7 9 | Delaware,D+7 10 | District of Columbia,D+39 11 | Florida,R+2 12 | Georgia,R+7 13 | Hawaii,D+12 14 | Idaho,R+17 15 | Illinois,D+8 16 | Indiana,R+6 17 | Iowa,D+1 18 | Kansas,R+12 19 | Kentucky,R+10 20 | Louisiana,R+10 21 | Maine,D+5 22 | Maryland,D+9 23 | Massachusetts,D+12 24 | Michigan,D+4 25 | Minnesota,D+2 26 | Mississippi,R+10 27 | Missouri,R+3 28 | Montana,R+7 29 | Nebraska,R+13 30 | Nevada,D+1 31 | New Hampshire,D+2 32 | New Jersey,D+4 33 | New Mexico,D+2 34 | New York,D+10 35 | North Carolina,R+4 36 | North Dakota,R+10 37 | Ohio,R+1 38 | Oklahoma,R+17 39 | Oregon,D+4 40 | Pennsylvania,D+2 41 | Rhode Island,D+11 42 | South Carolina,R+8 43 | South Dakota,R+9 44 | Tennessee,R+9 45 | Texas,R+10 46 | Utah,R+20 47 | Vermont,D+13 48 | Virginia,R+2 49 | Washington,D+5 50 | West Virginia,R+8 51 | Wisconsin,D+2 52 | Wyoming,R+20 53 | -------------------------------------------------------------------------------- /data/pollster_map.pkl: -------------------------------------------------------------------------------- 1 | (dp0 2 | S'Pub. Opin. Strat.' 3 | p1 4 | S'Public Opinion Strategies' 5 | p2 6 | sS'Bloomberg News' 7 | p3 8 | S'LA Times / Bloomberg' 9 | p4 10 | sS'LA Times' 11 | p5 12 | g4 13 | sS'Columbus Dispatch*' 14 | p6 15 | S'Columbus Dispatch (OH)' 16 | p7 17 | sS'Selzer & Co.' 18 | p8 19 | S'Selzer' 20 | p9 21 | sS'Fox/Opinion Dyn.' 22 | p10 23 | S'Fox / Opinion Dynamics' 24 | p11 25 | sS'Marist Coll.' 26 | p12 27 | S'Marist (NY)' 28 | p13 29 | sS'EPIC/MRA' 30 | p14 31 | S'EPIC-MRA' 32 | p15 33 | sS'Opinion Res.' 34 | p16 35 | S'CNN / Opinion Research' 36 | p17 37 | sS'Quinnipiac U.' 38 | p18 39 | S'Quinnipiac' 40 | p19 41 | sS'Field Poll' 42 | p20 43 | S'Field Poll (CA)' 44 | p21 45 | sS'Fairleigh-Dickinson Univ.' 46 | p22 47 | S'Fairleigh-Dickinson (NJ)' 48 | p23 49 | sS'Fairleigh Dickinson' 50 | p24 51 | g23 52 | sS'Pub. Opinion Strat.' 53 | p25 54 | g2 55 | sS'Suffolk U.' 56 | p26 57 | S'Suffolk (NH/MA)' 58 | p27 59 | sS'Star-Tribune' 60 | p28 61 | S'Star Tribune (MN)' 62 | p29 63 | sS'Zogby' 64 | p30 65 | g30 66 | sS'Survey USA' 67 | p31 68 | S'SurveyUSA' 69 | p32 70 | sS'Star Tribune' 71 | p33 72 | g29 73 | sS'Inside Advantage' 74 | p34 75 | S'Insider Advantage' 76 | p35 77 | sS'American Research' 78 | p36 79 | S'American Research Group' 80 | p37 81 | sS'Chicago Tribune' 82 | p38 83 | S'Chicago Trib. / MarketShares' 84 | p39 85 | sS'InsiderAdvantage' 86 | p40 87 | g35 88 | sS'Quinnipiac Univ.' 89 | p41 90 | g19 91 | sS'Opinion Dynamics' 92 | p42 93 | g11 94 | sS'PPP (D)' 95 | p43 96 | S'Public Policy Polling (PPP)' 97 | p44 98 | sS'Marist College' 99 | p45 100 | g13 101 | sS'Ohio Poll/Univ of Cin.' 102 | p46 103 | S'Ohio Poll' 104 | p47 105 | sS'Los Angeles Times' 106 | p48 107 | g4 108 | sS'Ohio Univ.' 109 | p49 110 | g47 111 | sS'Marist' 112 | p50 113 | g13 114 | sS'Field' 115 | p51 116 | g21 117 | sS'Fairleigh Dickinson U.' 118 | p52 119 | g23 120 | sS'Suffolk University' 121 | p53 122 | g27 123 | sS'Columbus Dispatch' 124 | p54 125 | g7 126 | sS'Gallup' 127 | p55 128 | S'USA Today / Gallup' 129 | p56 130 | sS'NY Times' 131 | p57 132 | S'CBS / New York Times' 133 | p58 134 | sS'Suffolk Univ.' 135 | p59 136 | g27 137 | sS'Rasmussen Reports' 138 | p60 139 | S'Rasmussen' 140 | p61 141 | sS'Keystone Poll' 142 | p62 143 | S'Keystone (PA)' 144 | p63 145 | sS'Quinnipiac Univ' 146 | p64 147 | g19 148 | sS'Opinion Research' 149 | p65 150 | g17 151 | sS'Mason-Dixon*' 152 | p66 153 | S'Mason-Dixon' 154 | p67 155 | sS'CNN/Opinion Research' 156 | p68 157 | g17 158 | sS'Mitchell Research' 159 | p69 160 | S'Mitchell' 161 | p70 162 | sS'Univ. of New Hampsh.' 163 | p71 164 | S'Univ. New Hampshire' 165 | p72 166 | sS'U. of New Hampshire' 167 | p73 168 | g72 169 | sS'Franklin Pierce Coll.' 170 | p74 171 | S'Franklin Pierce (NH)' 172 | p75 173 | sS'Market Shares' 174 | p76 175 | g39 176 | sS'American Res.Group' 177 | p77 178 | g37 179 | sS'Univ. of New Hampshire' 180 | p78 181 | g72 182 | sS'ARG' 183 | p79 184 | g37 185 | sS'Ohio U.' 186 | p80 187 | g47 188 | sS'Fairleigh Dickinson Univ.' 189 | p81 190 | g23 191 | s. -------------------------------------------------------------------------------- /data/pollster_weights.csv: -------------------------------------------------------------------------------- 1 | "Pollster" "Weight" "PIE" 2 | "ABC / Washington Post" 0.95 1.41 3 | "American Research Group" 0.65 1.76 4 | "CBS / New York Times" 0.66 1.84 5 | "Chicago Trib. / MarketShares" 1.16 1.13 6 | "CNN / Opinion Research" 0.77 1.59 7 | "Columbus Dispatch (OH)" 0.5 6.76 8 | "EPIC-MRA" 0.75 1.65 9 | "Fairleigh-Dickinson (NJ)" 0.71 1.72 10 | "Field Poll (CA)" 1.33 .88 11 | "Fox / Opinion Dynamics" 0.79 1.60 12 | "Franklin Pierce (NH)" 0.74 1.60 13 | "Insider Advantage" 0.95 1.29 14 | "Keystone (PA)" 0.64 1.55 15 | "LA Times / Bloomberg" 0.83 1.44 16 | "Marist (NY)" 0.69 1.73 17 | "Mason-Dixon" 1.1 1.15 18 | "Mitchell" 0.96 1.43 19 | "Ohio Poll" 1.24 1.05 20 | "Public Opinion Strategies" 0.63 1.81 21 | "Public Policy Polling (PPP)" 1.05 1.60 22 | "Quinnipiac" 0.95 1.34 23 | "Rasmussen" 1.3 .88 24 | "Research 2000" 1.01 1.20 25 | "Selzer" 1.47 .92 26 | "Star Tribune (MN)" 0.81 2.01 27 | "Strategic Vision" 0.95 1.45 28 | "Suffolk (NH/MA)" 0.77 1.37 29 | "SurveyUSA" 1.91 .72 30 | "Univ. New Hampshire" 1.08 1.26 31 | "USA Today / Gallup" 0.63 2.01 32 | "Zogby" 0.64 1.72 33 | "Zogby Interactive" 0.43 4.74 34 | -------------------------------------------------------------------------------- /data/romney_indiv_state.csv: -------------------------------------------------------------------------------- 1 | AK,266338.36 2 | AL,1343514.15 3 | AR,482481.86 4 | AZ,3265988.53 5 | CA,17551455.25 6 | CO,3098028.03 7 | CT,4292471.32 8 | DC,1300495.74 9 | DE,251860.0 10 | FL,13168999.39 11 | GA,3853251.37 12 | HI,240857.12 13 | IA,668103.1 14 | ID,1145814.41 15 | IL,5760565.6 16 | IN,1264040.24 17 | KS,1009271.18 18 | KY,1316206.62 19 | LA,1828247.32 20 | MA,5728298.26 21 | MD,2660201.68 22 | ME,260004.08 23 | MI,3797596.67 24 | MN,942349.45 25 | MO,2216638.14 26 | MS,728852.98 27 | MT,413977.0 28 | NC,2618183.89 29 | ND,182898.0 30 | NE,485203.6 31 | NH,762430.02 32 | NJ,4768875.58 33 | NM,593033.6 34 | NV,1315227.49 35 | NY,12288230.47 36 | OH,3786940.25 37 | OK,2286540.06 38 | OR,1028966.07 39 | PA,4660436.22 40 | RI,298032.92 41 | SC,1264426.18 42 | SD,322014.0 43 | TN,2565368.28 44 | TX,12931977.3 45 | UT,4641434.73 46 | VA,5858619.11 47 | VT,125115.06 48 | WA,2494876.67 49 | WI,1043153.06 50 | WV,472778.89 51 | WY,468193.82 52 | -------------------------------------------------------------------------------- /data/wsj_forecast.csv: -------------------------------------------------------------------------------- 1 | Obtained from http://online.wsj.com/public/page/economic-forecasting.html on 10/2/12 2 | 3 | Forecaster Institution Q3 2012 Q4 2012 4 | Paul Ashworth Capital Economics 2.0 1.5 5 | Nariman Behravesh IHS Global Insight 1.5 1.6 6 | Richard Berner/ David Greenlaw * Morgan Stanley 7 | Ram Bhagavatula Combinatorics Capital 2.0 4.0 8 | Beth Ann Bovino * Standard and Poor's 9 | Jay Brinkmann Mortgage Bankers Association 1.8 1.9 10 | Michael Carey Credit Agricole CIB 1.7 1.6 11 | Joseph Carson AllianceBernstein 2.5 3.5 12 | Julia Coronado BNP Paribas 1.4 1.6 13 | Mike Cosgrove Econoclast 1.6 1.6 14 | Lou Crandall Wrightson ICAP 1.8 1.8 15 | J. Dewey Daane Vanderbilt University 1.5 1.5 16 | Douglas Duncan Fannie Mae 1.8 1.7 17 | Robert Dye Comerica Bank 2.5 2.2 18 | Maria Fiorini Ramirez/Joshua Shapiro MFR, Inc. 1.4 1.2 19 | Ethan Harris Bank of America Securities- Merrill Lynch 1.3 1.0 20 | Maury Harris UBS 1.5 1.8 21 | Jan Hatzius Goldman, Sachs & Co. 2.3 1.5 22 | Tracy Herrick Avidbank 1.8 1.8 23 | Stuart Hoffman * PNC Financial Services Group 24 | Gene Huang FedEx Corp. 1.9 1.7 25 | William B. Hummer Wintrust Wealth Management 1.7 1.9 26 | Bruce Kasman JP Morgan Chase & Co. 1.5 2.0 27 | Joseph LaVorgna Deutsche Bank Securities Inc. 2.7 2.8 28 | Edward Leamer/David Shulman UCLA Anderson Forecast 1.3 1.5 29 | Don Leavens/Tim Gill NEMA Business Information Services 1.7 1.7 30 | John Lonski Moody's Investors Service 1.5 1.3 31 | Dean Maki Barclays Capital 2.0 2.5 32 | Aneta Markowska * Societe Generale 33 | Jim Meil/Arun Raha Eaton Corp. 1.2 2.1 34 | Mark Nielson MacroEcon Global Advisors 2.2 2.8 35 | Michael P. Niemira International Council of Shopping Centers 2.3 2.2 36 | Jim O'Sullivan High Frequency Economics 2.5 2.0 37 | Nicholas S. Perna Perna Associates 2.2 1.5 38 | Dr. Joel Prakken/ Chris Varvares Macroeconomic Advisers 1.5 1.4 39 | David Resler Nomura Securities International 1.9 1.7 40 | John Ryding/Conrad DeQuadros RDQ Economics 2.1 2.4 41 | John Silvia Wells Fargo & Co. 1.6 1.7 42 | Allen Sinai Decision Economics, Inc. 2.1 2.7 43 | James F. Smith Parsec Financial Management 3.8 4.8 44 | Sean M. Snaith University of Central Florida 1.7 1.9 45 | Sung Won Sohn California State University 1.8 1.7 46 | Neal Soss CSFB 1.5 2.2 47 | Stephen Stanley Pierpont Securities 1.0 2.1 48 | Susan M. Sterne Economic Analysis Associates Inc. 2.2 1.9 49 | Diane Swonk Mesirow Financial 1.3 1.5 50 | Carl Tannenbaum The Northern Trust 1.7 2.0 51 | Bart van Ark The Conference Board 1.6 1.6 52 | Brian S. Wesbury/ Robert Stein First Trust Advisors, L.P. 2.5 3.0 53 | William T. Wilson Skolkovo Institute for Emerging Market Studies 1.9 2.2 54 | Lawrence Yun National Association of Realtors 1.7 2.1 55 | -------------------------------------------------------------------------------- /get_census_data.py: -------------------------------------------------------------------------------- 1 | """ 2 | Census data downloaded from quickfacts.census.gov/qfd/download_data.html 3 | """ 4 | import pandas 5 | 6 | # this includes counties, state, and aggregate 7 | # comma delimited 8 | full_data_url = "http://quickfacts.census.gov/qfd/download/DataSet.txt" 9 | # variable info is given here 10 | data_info = "http://quickfacts.census.gov/qfd/download/DataDict.txt" 11 | # these are the mappings that we want - fixed width file 12 | fips_names = "http://quickfacts.census.gov/qfd/download/FIPS_CountyName.txt" 13 | 14 | 15 | full_data = pandas.read_csv(full_data_url) 16 | fips_names = pandas.read_fwf(fips_names, [(0,5),(6,-1)], header=None, 17 | names=["FIPS", "name"]) 18 | #NOTE: this is fixed width and I'm not counting the stupid columns so 19 | #we're going to do it programmatically 20 | # note that one of the column headers is centered while the others aren't 21 | from urllib2 import urlopen 22 | import re 23 | headers = urlopen(data_info).readline() 24 | match = re.search("^(\w+\W)(\s{2}\s+\w+\s+\s{2})(\s{2}\w+\s+)" 25 | "(\w+\s+)(\w+\s+)(\w+)", headers) 26 | cols = [(headers.index(var_name), headers.index(var_name)+len(var_name)) for 27 | var_name in match.groups()] 28 | var_info = pandas.read_fwf(data_info, cols) 29 | 30 | # convert numbers to state/county names 31 | fips_mapping = {} 32 | for _, (fips, name) in fips_names.iterrows(): 33 | fips_mapping.update({str(fips) : name}) 34 | 35 | fips_names = full_data.FIPS.astype(str).replace(fips_mapping) 36 | del full_data['FIPS'] 37 | full_data['FIPS'] = fips_names 38 | 39 | # just keep the states 40 | states = full_data.FIPS.ix[~full_data.FIPS.str.contains(",")] 41 | states = states.ix[~(states == "UNITED STATES")] 42 | assert len(states) == 51 43 | idx = states.index 44 | full_data_states = full_data.ix[idx] 45 | 46 | # Total Pop, 1 47 | # % Under 18, 6 48 | # Over 65, 7 49 | # % females, 8 50 | # % Black, 10 51 | # % Native American, 11 52 | # % Hispanic, 15 53 | # % White, Non-Hispanic, 16 54 | # % high school grad, 20 55 | # % bachelor's degree, 21 56 | # per capita income, 30 57 | # median household income, 31 58 | # pop per sq mile, 51 59 | rows = [1,6,7,8,10,11,15,16,20,21,30,31,51] 60 | var_info = var_info.ix[rows][["Data_Item","Item_Description"]] 61 | full_data_states = full_data_states.filter(var_info.Data_Item.tolist() + 62 | ["FIPS"]) 63 | 64 | tot_pop = full_data["PST045211"] 65 | per_18 = full_data["AGE295211"]/100. # under 18 66 | per_65 = full_data["AGE775211"]/100. # over 65 67 | older_pop = per_65*tot_pop 68 | vote_pop = tot_pop - per_18*tot_pop - older_pop 69 | full_data_states["vote_pop"] = vote_pop 70 | full_data_states["older_pop"] = older_pop 71 | del full_data_states["PST045211"] 72 | del full_data_states["AGE295211"] 73 | del full_data_states["AGE775211"] 74 | del full_data_states["SEX255211"] # % females - not enough variation 75 | del full_data_states["RHI325211"] 76 | full_data_states["per_older"] = older_pop / tot_pop 77 | full_data_states["per_vote"] = vote_pop / tot_pop 78 | 79 | full_data_states.rename(columns={ 80 | "INC110210" : "median_income", 81 | "INC910210" : "average_income", 82 | "POP060210" : "pop_density", 83 | "EDU635210" : "educ_hs", 84 | "EDU685210" : "educ_coll", 85 | "RHI825211" : "per_white", 86 | "RHI725211" : "per_hisp", # not mutually excl. 87 | "FIPS" : "state", 88 | "RHI225211" : "per_black", 89 | }, inplace=True) 90 | full_data_states.set_index("state", inplace=True) 91 | 92 | full_data_states.to_csv("/home/skipper/school/seaboldgit/talks/pydata/" 93 | "data/census_demographics.csv") 94 | -------------------------------------------------------------------------------- /get_poll_data.py: -------------------------------------------------------------------------------- 1 | """ 2 | Download all the Presidential Poll Data from Real Clear Politics and 3 | put it in a DataFrame then put a bird on it. 4 | 5 | Usage: 6 | 7 | data = download_president_polls() 8 | 9 | Data will probably need some ex-post cleaning to be useful. 10 | """ 11 | 12 | raise Exception("This script no longer works as RCP blocks directory access to their servers for some reason. Needs to be updated.") 13 | 14 | import urllib2 15 | import re 16 | from urllib import urlencode 17 | from time import sleep 18 | 19 | from lxml import html 20 | import pandas 21 | 22 | GLOBAL_NUMBER_OF_URL_TRIES = 0 23 | 24 | states = { 25 | 'AK': 'Alaska', 26 | 'AL': 'Alabama', 27 | 'AR': 'Arkansas', 28 | 'AS': 'American Samoa', 29 | 'AZ': 'Arizona', 30 | 'CA': 'California', 31 | 'CO': 'Colorado', 32 | 'CT': 'Connecticut', 33 | 'DC': 'District of Columbia', 34 | 'DE': 'Delaware', 35 | 'FL': 'Florida', 36 | 'GA': 'Georgia', 37 | 'GU': 'Guam', 38 | 'HI': 'Hawaii', 39 | 'IA': 'Iowa', 40 | 'ID': 'Idaho', 41 | 'IL': 'Illinois', 42 | 'IN': 'Indiana', 43 | 'KS': 'Kansas', 44 | 'KY': 'Kentucky', 45 | 'LA': 'Louisiana', 46 | 'MA': 'Massachusetts', 47 | 'MD': 'Maryland', 48 | 'ME': 'Maine', 49 | 'MI': 'Michigan', 50 | 'MN': 'Minnesota', 51 | 'MO': 'Missouri', 52 | 'MP': 'Northern Mariana Islands', 53 | 'MS': 'Mississippi', 54 | 'MT': 'Montana', 55 | 'NA': 'National', 56 | 'NC': 'North Carolina', 57 | 'ND': 'North Dakota', 58 | 'NE': 'Nebraska', 59 | 'NH': 'New Hampshire', 60 | 'NJ': 'New Jersey', 61 | 'NM': 'New Mexico', 62 | 'NV': 'Nevada', 63 | 'NY': 'New York', 64 | 'OH': 'Ohio', 65 | 'OK': 'Oklahoma', 66 | 'OR': 'Oregon', 67 | 'PA': 'Pennsylvania', 68 | 'PR': 'Puerto Rico', 69 | 'RI': 'Rhode Island', 70 | 'SC': 'South Carolina', 71 | 'SD': 'South Dakota', 72 | 'TN': 'Tennessee', 73 | 'TX': 'Texas', 74 | 'UT': 'Utah', 75 | 'VA': 'Virginia', 76 | 'VI': 'Virgin Islands', 77 | 'VT': 'Vermont', 78 | 'WA': 'Washington', 79 | 'WI': 'Wisconsin', 80 | 'WV': 'West Virginia', 81 | 'WY': 'Wyoming' 82 | } 83 | 84 | def get_xml_from_url(url, data={}): 85 | data = urlencode(data) 86 | request = urllib2.Request(url, data=data) 87 | opener = urllib2.build_opener() 88 | try: 89 | response = opener.open(request) 90 | except urllib2.HTTPError, error: 91 | return error 92 | xml_tree = html.parse(response) 93 | return xml_tree 94 | 95 | def split_row(row): 96 | return [i.text_content() for i in row.getchildren()] 97 | 98 | def get_table(table): 99 | table_data = [] 100 | for i, child in enumerate(table.iterchildren()): 101 | if not (i % 2): 102 | date = child.text_content() 103 | else: # iterate through the sub-table 104 | if not table_data: # then get the headers 105 | header = split_row(child[0]) 106 | header[0] = re.sub("\xa0\xa0\(.*\)", "", header[0]).strip() 107 | table_data.append(header + ["Date"]) 108 | for row in child.getchildren()[1:]: 109 | row = split_row(row) 110 | table_data.append(row + [date]) 111 | return pandas.DataFrame(table_data[1:], columns=table_data[0]) 112 | 113 | 114 | def download_latest_state_polls(): 115 | url = "http://www.realclearpolitics.com/epolls/latest_polls/president/" 116 | table_data = [] 117 | #table should go date, table, date, table, until end, then follow next 118 | #linke 119 | xml_tree = get_xml_from_url(url) 120 | i = 1 121 | # right now there are 3 table classes to get. don't know if this is 122 | # always the case, so code defensively 123 | 124 | table = xml_tree.xpath('//div[@id="table-%d"]' % i) 125 | table_frame = get_table(table[0]) 126 | while table: 127 | i += 1 128 | table = xml_tree.xpath('//div[@id="table-%d"]' % i) 129 | if table: 130 | table_frame = pandas.concat((table_frame, get_table(table[0]))) 131 | 132 | return table_frame 133 | 134 | def politely_open_url(url): 135 | """ 136 | This 403s a bit while doing the server load balancing, so politely knock 137 | again. 138 | """ 139 | global GLOBAL_NUMBER_OF_URL_TRIES 140 | try: 141 | response = urllib2.urlopen(url) 142 | GLOBAL_NUMBER_OF_URL_TRIES = 0 143 | return response 144 | except urllib2.HTTPError, error: 145 | if GLOBAL_NUMBER_OF_URL_TRIES > 100: 146 | print "More than 100 tries of %s failed" % url 147 | return error 148 | elif error.msg == 'Forbidden': 149 | GLOBAL_NUMBER_OF_URL_TRIES += 1 150 | sleep(1) 151 | return politely_open_url(url) 152 | else: 153 | return error 154 | 155 | 156 | def download_state_polls(): 157 | """ 158 | Use this to download all state polls. Unforunately, there's no years on a lot of the 159 | data. But you should be able to cross-reference with latest. 160 | """ 161 | # need to walk this directory for the states plus DC 162 | url = "http://www.realclearpolitics.com/epolls/2012/president/" 163 | 164 | # inside each directory get the one called state_romney_vs_obama*.html 165 | state_xx = [key.lower() for key in states.keys()] 166 | 167 | table_data = [] 168 | for state in states: 169 | url_link = url + state.lower() + '/' 170 | response = politely_open_url(url_link) 171 | xml_tree = html.parse(response) 172 | state_links = xml_tree.findall('//a') 173 | for link in state_links: 174 | link.make_links_absolute() 175 | link_url = link.get('href') 176 | # i don't think we have to worry about there being more than one 177 | if re.match("http://.+_romney_vs_obama-.+\.html", link_url): 178 | print "Trying to download %s" % link_url 179 | xml_tree = get_xml_from_url(link_url) 180 | try: 181 | # some states like Alaska and Alabama don't have any polls? 182 | table = xml_tree.xpath( 183 | '//div[@id="polling-data-full"]//table')[0] 184 | print "Downloaded %s" % link_url 185 | except: 186 | continue 187 | # this should work for states too 188 | state_table = get_national_tables(table) 189 | state_table["State"] = state 190 | table_data.append(state_table) 191 | # chill out for a second. server seems finnicky 192 | sleep(1) 193 | table_2012 = pandas.concat(table_data) 194 | return table_2012 195 | 196 | def get_national_tables(table): 197 | table_data = [] 198 | for row in table.iterchildren(): 199 | row = split_row(row) 200 | table_data.append(row) 201 | return pandas.DataFrame(table_data[1:], columns=table_data[0]) 202 | 203 | 204 | def download_national_polls(): 205 | #NOTE: the 2012 data is likely to update daily 206 | 207 | # you can browse around from here, sometimes I get forbidden, sometimes not 208 | # seems to depend which page I come from AFIACT. Refreshing also works. 209 | # I think it's bouncing me around to different servers. 210 | #http://www.realclearpolitics.com/epolls/ 211 | # bush vs gore 212 | # can't find anything, just an electoral college map 213 | 214 | # bush vs kerry 215 | url = "http://www.realclearpolitics.com/epolls/2004/president/us/general_election_bush_vs_kerry-939.html" 216 | xml_tree = get_xml_from_url(url) 217 | table = xml_tree.xpath('//div[@id="polling-data-full"]/table')[0] 218 | table_2004 = get_national_table(table) 219 | # mccain vs obama 220 | url = "http://www.realclearpolitics.com/epolls/2008/president/us/general_election_mccain_vs_obama-225.html" 221 | xml_tree = get_xml_from_url(url) 222 | table = xml_tree.xpath('//div[@id="polling-data-full"]/table')[0] 223 | table_2008 = get_national_table(table) 224 | 225 | url = "http://www.realclearpolitics.com/epolls/2012/president/us/general_election_romney_vs_obama-1171.html" 226 | xml_tree = get_xml_from_url(url) 227 | table = xml_tree.xpath('//div[@id="polling-data-full"]/table')[0] 228 | table_2012 = get_national_table(table) 229 | return table_2004, table_2008, table_2012 230 | 231 | if __name__ == "__main__": 232 | table_frame = download_latest_state_polls() 233 | table_frame.to_csv("/home/skipper/school/seaboldgit/talks/pydata/data/2012_poll_data_details.csv", index=False, sep="\t") 234 | 235 | table_2004, table_2008, table_2012 = download_historical_polls() 236 | table_2004.to_csv("/home/skipper/school/seaboldgit/talks/pydata/data/2004_poll_data.csv", index=False, sep="\t") 237 | table_2008.to_csv("/home/skipper/school/seaboldgit/talks/pydata/data/2008_poll_data.csv", index=False, sep="\t") 238 | table_2012.to_csv("/home/skipper/school/seaboldgit/talks/pydata/data/2012_poll_data.csv", index=False, sep="\t") 239 | 240 | state_frame_2012 = download_state_polls() 241 | table_2012.to_csv("/home/skipper/school/seaboldgit/talks/pydata/data/2012_poll_data_states.csv", index=False, sep="\t") 242 | -------------------------------------------------------------------------------- /historical_adjustment.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3.0 3 | 4 | # 5 | 6 | import datetime 7 | 8 | import numpy as np 9 | import statsmodels.api as sm 10 | import matplotlib.pyplot as plt 11 | import pandas 12 | from scipy import stats 13 | np.set_printoptions(precision=4, suppress=True) 14 | pandas.set_printoptions(notebook_repr_html=False, 15 | precision=4, 16 | max_columns=12, column_space=10, 17 | max_colwidth=25) 18 | from matplotlib import rcParams 19 | #rcParams['text.usetex'] = False 20 | #rcParams['text.latex.unicode'] = False 21 | 22 | # 23 | 24 | # We have a snapshot for what would happen if the election is held today (Don't go bet on intratrade based on this model). Historically, polls have narrowed as the election nears. 25 | 26 | # 27 | 28 | # Set up some globals for dates 29 | 30 | # 31 | 32 | today = datetime.datetime(2012, 10, 2) 33 | election = datetime.datetime(2012, 11, 6) 34 | days_before = election - today 35 | date2004 = datetime.datetime(2004, 11, 2) 36 | days_before2004 = date2004 - days_before 37 | date2008 = datetime.datetime(2008, 11, 4) 38 | days_before2008 = date2008 - days_before 39 | 40 | # 41 | 42 | # TODO: Put a basemap map here 43 | 44 | # 45 | 46 | # Load that data and clean 47 | 48 | # 49 | 50 | national_2004 = pandas.read_table("/home/skipper/school/talks/538model/data/2004_poll_data.csv") 51 | national_2004.rename(columns={"Poll" : "Pollster"}, inplace=True); 52 | 53 | # 54 | 55 | state_data2004 = pandas.read_csv("/home/skipper/school/talks/538model/data/2004-pres-polls.csv") 56 | state_data2008 = pandas.read_csv("/home/skipper/school/talks/538model/data/2008-pres-polls.csv") 57 | 58 | # 59 | 60 | state_data2004 61 | 62 | # 63 | 64 | state_data2004.rename(columns={"Kerry" : "challenger", 65 | "Bush" : "incumbent"}, 66 | inplace=True); 67 | state_data2004["dem_spread"] = (state_data2004["challenger"] - 68 | state_data2004["incumbent"]) 69 | 70 | # 71 | 72 | state_data2004.Date.replace({"Nov 00" : "Nov 01", "Oct 00" : "Oct 01"}, 73 | inplace=True); 74 | state_data2004.Date = (state_data2004.Date + ", 2004").apply( 75 | pandas.datetools.parse) 76 | 77 | # 78 | 79 | def median_date(row, year="2008"): 80 | dt1 = pandas.datetools.parse(row["Start"] + ", " + year) 81 | dt2 = pandas.datetools.parse(row["End"] + ", " + year) 82 | dates = pandas.date_range(dt1, dt2) 83 | median_idx = int(np.median(range(len(dates)))+.5) 84 | return dates[median_idx] 85 | 86 | # 87 | 88 | state_data2008["Date"] = state_data2008.apply(median_date, axis=1) 89 | del state_data2008["Start"] 90 | del state_data2008["End"] 91 | 92 | # 93 | 94 | actual = national_2004.head(1) 95 | national_2004 = national_2004.ix[national_2004.index[~national_2004.Pollster.isin(["Final Results", "RCP Average"])]] 96 | 97 | # 98 | 99 | def split_median_date(row): 100 | dt = row["Date"] 101 | dt1, dt2 = dt.split(" - ") 102 | dates = pandas.date_range(dt1 + ", 2004", dt2 + ", 2004") 103 | median_idx = int(np.median(range(len(dates)))+.5) 104 | return dates[median_idx] 105 | 106 | # 107 | 108 | national_2004["Date"] = national_2004.apply(split_median_date, axis=1) 109 | 110 | # 111 | 112 | national_2004["dem_spread"] = national_2004["Kerry (D)"] - national_2004["Bush (R)"] 113 | 114 | # 115 | 116 | state_data2008 117 | 118 | # 119 | 120 | state_data2008.rename(columns={"Obama" : "challenger", 121 | "McCain" : "incumbent"}, 122 | inplace=True); 123 | state_data2008["dem_spread"] = (state_data2008["challenger"] - 124 | state_data2008["incumbent"]) 125 | 126 | # 127 | 128 | # Clean the Pollster names 129 | 130 | # 131 | 132 | import pickle 133 | pollster_map = pickle.load(open( 134 | "/home/skipper/school/talks/538model/data/pollster_map.pkl", "rb")) 135 | 136 | # 137 | 138 | state_data2004.Pollster.replace(pollster_map, inplace=True); 139 | state_data2008.Pollster.replace(pollster_map, inplace=True); 140 | national_2004.Pollster.replace(pollster_map, inplace=True); 141 | 142 | # 143 | 144 | # Get the Pollster weights 145 | 146 | # 147 | 148 | # These are old weights obtained from the 538 web site. New weights are not published anywhere to my knowledge. 149 | 150 | # 151 | 152 | weights = pandas.read_table("/home/skipper/school/talks/538model/" 153 | "data/pollster_weights.csv") 154 | 155 | # 156 | 157 | state_data2004 = state_data2004.merge(weights, on="Pollster", how="inner"); 158 | state_data2008 = state_data2008.merge(weights, on="Pollster", how="inner"); 159 | 160 | # 161 | 162 | # What's the Assertion? 163 | 164 | # 165 | 166 | def edit_tick_label(tick_val, tick_pos): 167 | if tick_val < 0: 168 | text = str(int(tick_val)).replace("-", "Republican+") 169 | else: 170 | text = "Democrat+"+str(int(tick_val)) 171 | return text 172 | 173 | # 174 | 175 | from pandas import lib 176 | from matplotlib.ticker import FuncFormatter 177 | fig, axes = plt.subplots(figsize=(12,8)) 178 | 179 | data = national_2004[["Date", "dem_spread"]] 180 | #data = data.ix[data.Date >= days_before2004] 181 | #data = pandas.concat((data, national_data2012[["Date", "dem_spread"]])) 182 | 183 | data.sort("Date", inplace=True) 184 | dates = pandas.DatetimeIndex(data.Date).asi8 185 | 186 | x = data.dem_spread.values.astype(float) 187 | lowess_res = sm.nonparametric.lowess(x, dates, 188 | frac=.2, it=3)[:,1] 189 | 190 | dates_x = lib.ints_to_pydatetime(dates) 191 | axes.scatter(dates_x, data["dem_spread"]) 192 | axes.plot(dates_x, lowess_res, color='r', lw=4) 193 | axes.yaxis.get_major_locator().set_params(nbins=12) 194 | axes.yaxis.set_major_formatter(FuncFormatter(edit_tick_label)) 195 | axes.grid(False, axis='x') 196 | axes.hlines(-1.21, dates_x[0], dates_x[-1], color='black', lw=3) 197 | axes.vlines(datetime.datetime(2004, 8, 5), -20, 15, lw=3) 198 | axes.margins(0, .00) 199 | 200 | # 201 | 202 | # Let's look at the State Polls 203 | 204 | # 205 | 206 | from pandas import lib 207 | from matplotlib.ticker import FuncFormatter 208 | fig, axes = plt.subplots(figsize=(12,8)) 209 | 210 | data = state_data2004[["Date", "dem_spread"]] 211 | #data = data.ix[data.Date >= days_before2004] 212 | data = data.ix[data.Date >= datetime.datetime(2004, 7, 15)] 213 | #data = pandas.concat((data, national_data2012[["Date", "dem_spread"]])) 214 | 215 | data.sort("Date", inplace=True) 216 | dates = pandas.DatetimeIndex(data.Date).asi8 217 | 218 | x = data.dem_spread.values.astype(float) 219 | lowess_res = sm.nonparametric.lowess(x, dates, 220 | frac=.2, it=3)[:,1] 221 | 222 | dates_x = lib.ints_to_pydatetime(dates) 223 | axes.scatter(dates_x, data["dem_spread"]) 224 | axes.plot(dates_x, lowess_res, color='r', lw=4) 225 | axes.yaxis.get_major_locator().set_params(nbins=12) 226 | axes.yaxis.set_major_formatter(FuncFormatter(edit_tick_label)) 227 | axes.grid(False, axis='x') 228 | axes.hlines(-1.21, dates_x[0], dates_x[-1], color='black', lw=3) 229 | axes.margins(0, .05) 230 | 231 | # 232 | 233 | from pandas import lib 234 | from matplotlib.ticker import FuncFormatter 235 | fig, axes = plt.subplots(figsize=(12,8)) 236 | 237 | data = state_data2008[["Date", "dem_spread"]] 238 | data = data.ix[data.Date >= datetime.datetime(2008, 7, 15)] 239 | #data = data.ix[data.Date >= days_before2008] 240 | #data = pandas.concat((data, national_data2012[["Date", "dem_spread"]])) 241 | 242 | data.sort("Date", inplace=True) 243 | dates = pandas.DatetimeIndex(data.Date).asi8 244 | 245 | x = data.dem_spread.values.astype(float) 246 | lowess_res = sm.nonparametric.lowess(x, dates, 247 | frac=.2, it=3)[:,1] 248 | 249 | dates_x = lib.ints_to_pydatetime(dates) 250 | axes.scatter(dates_x, data["dem_spread"]) 251 | axes.plot(dates_x, lowess_res, color='r', lw=4) 252 | axes.yaxis.get_major_locator().set_params(nbins=12) 253 | axes.yaxis.set_major_formatter(FuncFormatter(edit_tick_label)) 254 | axes.grid(False, axis='x') 255 | axes.hlines(3.65, dates_x[0], dates_x[-1], color='black', lw=3) 256 | axes.vlines(datetime.datetime(2008, 8, 29), -45, 70, lw=3) 257 | axes.vlines(datetime.datetime(2008, 9, 24), -45, 70, lw=3) 258 | axes.margins(0, .0) 259 | 260 | # 261 | 262 | # Clean the data 263 | 264 | # 265 | 266 | #loadpy https://raw.github.com/gist/3912533/d958b515f602f6e73f7b16d8bc412bc8d1f433d9/state_abbrevs.py; 267 | 268 | # 269 | 270 | states_abbrev_dict = { 271 | 'AK': 'Alaska', 272 | 'AL': 'Alabama', 273 | 'AR': 'Arkansas', 274 | 'AS': 'American Samoa', 275 | 'AZ': 'Arizona', 276 | 'CA': 'California', 277 | 'CO': 'Colorado', 278 | 'CT': 'Connecticut', 279 | 'DC': 'District of Columbia', 280 | 'DE': 'Delaware', 281 | 'FL': 'Florida', 282 | 'GA': 'Georgia', 283 | 'GU': 'Guam', 284 | 'HI': 'Hawaii', 285 | 'IA': 'Iowa', 286 | 'ID': 'Idaho', 287 | 'IL': 'Illinois', 288 | 'IN': 'Indiana', 289 | 'KS': 'Kansas', 290 | 'KY': 'Kentucky', 291 | 'LA': 'Louisiana', 292 | 'MA': 'Massachusetts', 293 | 'MD': 'Maryland', 294 | 'ME': 'Maine', 295 | 'MI': 'Michigan', 296 | 'MN': 'Minnesota', 297 | 'MO': 'Missouri', 298 | 'MP': 'Northern Mariana Islands', 299 | 'MS': 'Mississippi', 300 | 'MT': 'Montana', 301 | 'NA': 'National', 302 | 'NC': 'North Carolina', 303 | 'ND': 'North Dakota', 304 | 'NE': 'Nebraska', 305 | 'NH': 'New Hampshire', 306 | 'NJ': 'New Jersey', 307 | 'NM': 'New Mexico', 308 | 'NV': 'Nevada', 309 | 'NY': 'New York', 310 | 'OH': 'Ohio', 311 | 'OK': 'Oklahoma', 312 | 'OR': 'Oregon', 313 | 'PA': 'Pennsylvania', 314 | 'PR': 'Puerto Rico', 315 | 'RI': 'Rhode Island', 316 | 'SC': 'South Carolina', 317 | 'SD': 'South Dakota', 318 | 'TN': 'Tennessee', 319 | 'TX': 'Texas', 320 | 'UT': 'Utah', 321 | 'VA': 'Virginia', 322 | 'VI': 'Virgin Islands', 323 | 'VT': 'Vermont', 324 | 'WA': 'Washington', 325 | 'WI': 'Wisconsin', 326 | 'WV': 'West Virginia', 327 | 'WY': 'Wyoming' 328 | } 329 | 330 | # 331 | 332 | state_data2004.State.replace(states_abbrev_dict, inplace=True); 333 | state_data2008.State.replace(states_abbrev_dict, inplace=True); 334 | 335 | # 336 | 337 | state_data2004["days_until"] = date2004 - state_data2004.Date 338 | state_data2008["days_until"] = date2008 - state_data2004.Date 339 | 340 | # 341 | 342 | #state_data2004 = state_data2004.drop( 343 | # state_data2004.index[state_data2004.days_until > days_before]) 344 | #state_data2008 = state_data2008.drop( 345 | # state_data2008.index[state_data2008.days_until > days_before]) 346 | 347 | # 348 | 349 | def exp_decay(days): 350 | # defensive coding, accepts timedeltas 351 | days = getattr(days, "days", days) 352 | return .5 ** (days/30.) 353 | 354 | # 355 | 356 | state_data2004["time_weight_oct2"] = (days_before2004 - 357 | state_data2004["Date"]).apply(exp_decay) 358 | state_data2004["time_weight_election"] = (date2004 - 359 | state_data2004["Date"]).apply(exp_decay) 360 | state_data2008["time_weight_oct2"] = (days_before2008 - 361 | state_data2008["Date"]).apply(exp_decay) 362 | state_data2008["time_weight_election"] = (date2008 - 363 | state_data2008["Date"]).apply(exp_decay) 364 | 365 | # 366 | 367 | def weighted_mean(group, weights_name): 368 | weights = group[weights_name] 369 | return np.sum(weights*group["dem_spread"]/np.sum(weights)) 370 | 371 | # 372 | 373 | # Get weighted average State-level polls for Oct 2 and Election Day 374 | 375 | # 376 | 377 | def get_state_averages(dframe, time_weight_name): 378 | dframe_pollsters = dframe.groupby(["State", "Pollster"]) 379 | dframe_result = dframe_pollsters.apply(weighted_mean, time_weight_name) 380 | dframe_result.name = "dem_spread" 381 | dframe_result = dframe_result.reset_index() 382 | dframe_result = dframe_result.merge(dframe[["Pollster", "Weight"]], 383 | on="Pollster") 384 | return dframe_result.groupby("State").apply(weighted_mean, "Weight") 385 | 386 | 387 | # 388 | 389 | oct2 = state_data2004.Date <= days_before2004 390 | state_polls_oct2_2004 = get_state_averages(state_data2004.ix[oct2], "time_weight_oct2") 391 | state_polls_election_2004 = get_state_averages(state_data2004, "time_weight_election") 392 | updated2004 = state_data2004.ix[~oct2].State.unique() 393 | updated2004.sort() 394 | 395 | # 396 | 397 | oct2 = state_data2008.Date <= days_before2008 398 | state_polls_oct2_2008 = get_state_averages(state_data2008.ix[oct2], "time_weight_oct2") 399 | state_polls_election_2008 = get_state_averages(state_data2008, "time_weight_election") 400 | updated2008 = state_data2008.ix[~oct2].State.unique() 401 | updated2008.sort() 402 | 403 | # 404 | 405 | # Get Economic Data 406 | 407 | # 408 | 409 | # 410 | # 411 | # 412 | # FRED Variable 413 | # Explanation 414 | # 415 | # 416 | # 417 | # 418 | # PAYEMS 419 | # Nonfarm-Payrolls (Job Growth) 420 | # 421 | # 422 | # PI 423 | # Personal Income 424 | # 425 | # 426 | # INDPRO 427 | # Industrial Production 428 | # 429 | # 430 | # PCEC96 431 | # Consumption 432 | # 433 | # 434 | # CPIAUCSL 435 | # Inflation 436 | # 437 | # 438 | # 439 | 440 | # 441 | 442 | from pandas.io.data import DataReader 443 | 444 | # 445 | 446 | series = dict(jobs = "PAYEMS", 447 | income = "PI", 448 | prod = "INDPRO", 449 | cons = "PCEC96", 450 | prices = "CPIAUCSL") 451 | 452 | # 453 | 454 | try: 455 | indicators = [] 456 | for variable in series: 457 | data = DataReader(series[variable], "fred", start="2000-10-1") 458 | data.rename(columns={series[variable] : variable}, inplace=True) 459 | indicators.append(data) 460 | indicators = pandas.concat(indicators, axis=1) 461 | indicators.to_csv("/home/skipper/school/talks/538model/tmp_indicators_full.csv") 462 | except: # probably not online 463 | indicators = pandas.read_csv("/home/skipper/school/talks/538model/tmp_indicators_full.csv", 464 | parse_dates=True) 465 | indicators.set_index("DATE", inplace=True) 466 | # why doesn't it do this automaticall? 467 | indicators.index = pandas.DatetimeIndex(indicators.index) 468 | 469 | # 470 | 471 | # For stock variables, just compute annualized quarterly growth rates (end - beginning)/beginning * 400 and average. 472 | 473 | # 474 | 475 | quarterly_growth = np.log(indicators.resample("Q", 476 | how="mean")).diff() * 400 477 | annualized = quarterly_growth.resample("A", how="mean") 478 | 479 | # 480 | 481 | quarterly_growth = quarterly_growth.dropna() 482 | 483 | # 484 | 485 | # Try to be rigorous about what the voters know at the time of election. 486 | 487 | # 488 | 489 | econ2004 = quarterly_growth.ix[:15].resample('A', 'mean').mean() 490 | 491 | # 492 | 493 | econ2008 = quarterly_growth.ix[15:31].resample('A', 'mean').mean() 494 | 495 | # 496 | 497 | # Leave out last quarter 2008 because that's on Bush? Do voters see it that way...? 498 | 499 | # 500 | 501 | econ2012 = quarterly_growth.ix[32:].resample('A', 'mean').mean() 502 | 503 | # 504 | 505 | # For flow variables, sum the quarters and get annualized quarter over quarter changes then average. 506 | 507 | # 508 | 509 | # Get Demographic Data 510 | 511 | # 512 | 513 | # Partisan voting index 514 | 515 | # 516 | 517 | pvi = pandas.read_csv("/home/skipper/school/talks/538model/data/partisan_voting.csv") 518 | pvi.set_index("State", inplace=True); 519 | pvi.PVI = pvi.PVI.replace({"EVEN" : "0"}) 520 | pvi.PVI = pvi.PVI.str.replace("R\+", "-") 521 | pvi.PVI = pvi.PVI.str.replace("D\+", "") 522 | pvi.PVI = pvi.PVI.astype(float) 523 | pvi.PVI 524 | 525 | # 526 | 527 | # Gallup party affiliation (Poll Jan.-Jun. 2012) 528 | 529 | # 530 | 531 | party_affil = pandas.read_csv("/home/skipper/school/talks/538model/" 532 | "data/gallup_electorate.csv") 533 | party_affil.Democrat = party_affil.Democrat.str.replace("%", "").astype(float) 534 | party_affil.Republican = party_affil.Republican.str.replace("%", "").astype(float) 535 | party_affil.set_index("State", inplace=True); 536 | party_affil.rename(columns={"Democrat Advantage" : "dem_adv"}, inplace=True); 537 | party_affil["no_party"] = 100 - party_affil.Democrat - party_affil.Republican 538 | party_affil[["dem_adv", "no_party"]] 539 | 540 | # 541 | 542 | # Census data 543 | 544 | # 545 | 546 | census_data_2012 = pandas.read_csv("/home/skipper/school/talks/" 547 | "538model/data/census_demographics.csv") 548 | def capitalize(s): 549 | s = s.title() 550 | s = s.replace("Of", "of") 551 | return s 552 | census_data_2012["State"] = census_data_2012.state.map(capitalize) 553 | del census_data_2012["state"] 554 | census_data_2012.set_index("State", inplace=True); 555 | 556 | # 557 | 558 | census_data_2000 = pandas.read_csv("/home/skipper/school/talks/" 559 | "538model/data/census_data_2000.csv") 560 | census_data_2000.set_index("State", inplace=True); 561 | 562 | # 563 | 564 | census_data_2005 = (census_data_2000 + census_data_2012) / 2. 565 | 566 | # 567 | 568 | # Model reversion to the "mean" 569 | 570 | # 571 | 572 | # A little more data preparation 573 | 574 | # 575 | 576 | changes_2004 = state_polls_election_2004.ix[updated2004].sub( 577 | state_polls_oct2_2004) 578 | changes_2004 = changes_2004.dropna() 579 | 580 | # 581 | 582 | changes_2008 = state_polls_election_2008.ix[updated2008].sub( 583 | state_polls_oct2_2008) 584 | changes_2008 = changes_2008.dropna() 585 | 586 | # 587 | 588 | changes_2004 589 | 590 | # 591 | 592 | changes_2008 593 | 594 | # 595 | 596 | for name in econ2004.index: 597 | census_data_2000[name] = econ2004.ix[name] 598 | 599 | # 600 | 601 | for name in econ2008.index: 602 | census_data_2005[name] = econ2008.ix[name] 603 | 604 | # 605 | 606 | census_data_2000["poll_change"] = changes_2004 607 | census_data_2005["poll_change"] = changes_2008 608 | #changes_2008 = changes_2008.join(census_data_2005) 609 | 610 | # 611 | 612 | #years = pandas.DataFrame([2004]*len(changes_2004), columns=["Year"], index=changes_2004.index) 613 | 614 | # 615 | 616 | #years["poll_change"] = changes_2004 617 | #changes_2004 = years 618 | 619 | # 620 | 621 | #years = pandas.DataFrame([2008]*len(changes_2008), columns=["Year"], index=changes_2008.index) 622 | #years["poll_change"] = changes_2008 623 | #changes_2008 = years 624 | 625 | # 626 | 627 | #changes_2004 628 | 629 | # 630 | 631 | #changes_2004 = changes_2004.join(census_data_2000, how="left") 632 | #changes_2008 = changes_2008.join(census_data_2000, how="left") 633 | 634 | # 635 | 636 | census_data_2000["year"] = 2004 637 | census_data_2005["year"] = 2008 638 | 639 | # 640 | 641 | changes = pandas.concat((census_data_2000.reset_index(), census_data_2005.reset_index())) 642 | 643 | # 644 | 645 | changes.reset_index(drop=True, inplace=True); 646 | 647 | # 648 | 649 | changes = changes.dropna() # don't have polls for all the states 650 | 651 | # 652 | 653 | predict = census_data_2012.reset_index() 654 | 655 | # 656 | 657 | predict["year"] = 2012 658 | 659 | # 660 | 661 | # Add in Partisan information 662 | 663 | # 664 | 665 | changes = changes.merge(pvi.reset_index(), on="State") 666 | predict = predict.merge(pvi.reset_index(), on="State") 667 | 668 | # 669 | 670 | # Add in Party affiliation information 671 | 672 | # 673 | 674 | changes = changes.merge(party_affil[["dem_adv", "no_party"]].reset_index(), on="State") 675 | predict = predict.merge(party_affil[["dem_adv", "no_party"]].reset_index(), on="State") 676 | 677 | # 678 | 679 | # Do the K-means clustering for similar states 680 | 681 | # 682 | 683 | from scipy.cluster import vq 684 | from sklearn import cluster 685 | 686 | # 687 | 688 | clstr_dta = predict[["per_black", "per_hisp", "per_white", "educ_coll", "pop_density", "per_older", "PVI", "dem_adv"]].values 689 | 690 | # 691 | 692 | clstr_dta = vq.whiten(clstr_dta) # might want to play with this to emphasize dimensions? 693 | 694 | # 695 | 696 | kmeans = cluster.KMeans(n_clusters=7, n_init=100) 697 | kmeans.fit(clstr_dta) 698 | values = kmeans.cluster_centers_ 699 | labels = kmeans.labels_ 700 | 701 | # 702 | 703 | predict["kmeans_groups"] = labels 704 | 705 | # 706 | 707 | for key, grp in predict.groupby("kmeans_groups"): print key, grp.State.tolist() 708 | 709 | # 710 | 711 | changes = changes.merge(predict[["kmeans_groups", "State"]], on="State") 712 | 713 | # 714 | 715 | # Drop D.C. because it's not in the training data. 716 | 717 | # 718 | 719 | predict.set_index(["State", "year"], inplace=True); 720 | 721 | # 722 | 723 | predict = predict.drop(("District of Columbia", 2012)) 724 | 725 | # 726 | 727 | # Let's explore some hypotheses 728 | 729 | # 730 | 731 | changes.set_index(["State", "year"], inplace=True); 732 | 733 | # 734 | 735 | from statsmodels.formula.api import ols 736 | 737 | # 738 | 739 | changes 740 | 741 | # 742 | 743 | changes[["dem_adv", "PVI"]].corr() 744 | 745 | # 746 | 747 | formula = ("poll_change ~ C(kmeans_groups) + per_older*per_white + " 748 | "per_hisp + no_party*np.log(median_income) + PVI") 749 | mod = ols(formula, data=changes).fit() 750 | print mod.summary() 751 | 752 | # 753 | 754 | hyp = ", ".join(mod.model.exog_names[:5]) 755 | 756 | # 757 | 758 | print hyp 759 | 760 | # 761 | 762 | print mod.f_test(hyp) 763 | 764 | # 765 | 766 | predicted2012 = pandas.read_csv("/home/skipper/school/talks/538model/2012-predicted.csv") 767 | predicted2012["year"] = 2012 768 | predicted2012 = predicted2012.set_index(["State", "year"])["poll"] 769 | 770 | # 771 | 772 | predicted_change = pandas.Series(mod.predict(predict), index=predict.index) 773 | 774 | # 775 | 776 | predicted_change 777 | 778 | # 779 | 780 | results = predicted2012 + predicted_change 781 | results 782 | 783 | # 784 | 785 | electoral_votes = pandas.read_csv("/home/skipper/school/seaboldgit/talks/pydata/data/electoral_votes.csv") 786 | electoral_votes.sort("State", inplace=True).reset_index(drop=True, inplace=True); 787 | red_states = ["Alabama", "Alaska", "Arkansas", "Idaho", "Kentucky", "Louisiana", 788 | "Oklahoma", "Wyoming"] 789 | blue_states = ["Delaware"]#, "District of Columbia"] 790 | results.name = "Poll" 791 | results = results.reset_index() 792 | results = results.merge(electoral_votes, on="State", how="left").set_index("State") 793 | results["obama"] = 0 794 | results["romney"] = 0 795 | results.ix[results["Poll"] > 0, ["obama"]] = 1 796 | results.ix[results["Poll"] < 0, ["romney"]] = 1 797 | results.ix[red_states, ["romney"]] = 1 798 | results.ix[blue_states, ["obama"]] = 1 799 | 800 | # 801 | 802 | print results["Votes"].mul(results["obama"]).sum() + 3 803 | print results["Votes"].mul(results["romney"]).sum() 804 | 805 | # 806 | 807 | # CCPR Plots 808 | 809 | # 810 | 811 | # Component-Component plus residual plots. Partial residual plots attempt to show the relationship between a given independent variable and the response variable given that other independent variables are also in the model. 812 | 813 | # 814 | 815 | from statsmodels.graphics.regressionplots import plot_ccpr_ax 816 | fig, ax = plt.subplots(figsize=(12,8)) 817 | fig = plot_ccpr_ax(mod, 11, ax=ax) 818 | ax = fig.axes[0] 819 | ax.set_title("log(median_income)*B_11 + Resid vs log(median_income)"); 820 | 821 | # 822 | 823 | from statsmodels.graphics.regressionplots import plot_ccpr_ax 824 | fig, ax = plt.subplots(figsize=(12,8)) 825 | fig = plot_ccpr_ax(mod, 9, ax=ax) 826 | ax = fig.axes[0] 827 | ax.set_title("per_hisp*B_9 + resid vs per_hisp"); 828 | 829 | # 830 | 831 | X = mod.model.data.orig_exog 832 | 833 | # 834 | 835 | X[X.columns[:6]] 836 | 837 | # 838 | 839 | X[X.columns[6:]] 840 | 841 | # 842 | 843 | false_disc = mod.outlier_test("fdr_bh") 844 | false_disc.sort("unadj_p", inplace=True) 845 | 846 | # 847 | 848 | bonf = mod.outlier_test("sidak") 849 | bonf.sort("unadj_p", inplace=True) 850 | 851 | # 852 | 853 | infl = mod.get_influence() 854 | table = infl.summary_frame() 855 | 856 | # 857 | 858 | for stat in table.columns: 859 | print stat 860 | 861 | # 862 | 863 | # Measure the influence of points on prediction 864 | # 865 | # $$\text{DFFITS}=\frac{\hat{y}-\hat{y}_{i}}{s_i\sqrt{h_{ii}} }$$ 866 | # 867 | # points greater than 868 | # 869 | # $$2\left\(\frac{p}{\text{nobs}} \right\)^{1/2}$$ 870 | # 871 | # might be cause for concern 872 | 873 | # 874 | 875 | print 2*np.sqrt(mod.df_model/mod.nobs) 876 | 877 | # 878 | 879 | dffits = np.abs(table['dffits'].copy()) 880 | dffits.sort() 881 | dffits[::-1][:15] 882 | 883 | # 884 | 885 | # Indicate influential observations, where you might want more data. 886 | # 887 | # Overall fit change with deleted observation. 888 | # 889 | # $$\text{Cook's D}=\frac{e_i^2}{p\text{MSE}\frac{h_{ii}}{(1-h_{ii})^2}}$$ 890 | 891 | # 892 | 893 | print 4/mod.nobs 894 | 895 | # 896 | 897 | cooks_d = table["cooks_d"].copy() 898 | cooks_d.sort() 899 | print cooks_d[::-1][:15] 900 | 901 | # 902 | 903 | student_resid = np.abs(table.student_resid.copy()) 904 | student_resid.sort() 905 | student_resid[::-1][:15] 906 | 907 | -------------------------------------------------------------------------------- /pollster_map.py: -------------------------------------------------------------------------------- 1 | pollster_map = { 2 | "American Res.Group" : "American Research Group", 3 | "American Research" : "American Research Group", 4 | "ARG" : "American Research Group", 5 | "NY Times" : "CBS / New York Times", 6 | "Chicago Tribune" : "Chicago Trib. / MarketShares", 7 | "Market Shares" : "Chicago Trib. / MarketShares", 8 | "CNN/Opinion Research" : "CNN / Opinion Research", 9 | "Opinion Res." : "CNN / Opinion Research", 10 | "Opinion Research" : "CNN / Opinion Research", 11 | "Columbus Dispatch" : "Columbus Dispatch (OH)", 12 | "Columbus Dispatch*" : "Columbus Dispatch (OH)", 13 | "EPIC/MRA" : "EPIC-MRA", 14 | "Fairleigh Dickinson" : "Fairleigh-Dickinson (NJ)", 15 | "Fairleigh Dickinson U." : "Fairleigh-Dickinson (NJ)", 16 | "Fairleigh Dickinson Univ." : "Fairleigh-Dickinson (NJ)", 17 | "Fairleigh-Dickinson Univ." : "Fairleigh-Dickinson (NJ)", 18 | "Field" : "Field Poll (CA)", 19 | "Field Poll" : "Field Poll (CA)", 20 | "Fox/Opinion Dyn." : "Fox / Opinion Dynamics", 21 | "Opinion Dynamics" : "Fox / Opinion Dynamics", 22 | "Franklin Pierce Coll." : "Franklin Pierce (NH)", 23 | "Inside Advantage" : "Insider Advantage", 24 | "InsiderAdvantage" : "Insider Advantage", 25 | "Keystone Poll" : "Keystone (PA)", 26 | "LA Times" : "LA Times / Bloomberg", 27 | "Los Angeles Times" : "LA Times / Bloomberg", 28 | "Bloomberg News" : "LA Times / Bloomberg", 29 | "Marist" : "Marist (NY)", 30 | "Marist Coll." : "Marist (NY)", 31 | "Marist College" : "Marist (NY)", 32 | "Mason-Dixon*" : "Mason-Dixon", 33 | "Mitchell Research" : "Mitchell", 34 | "Ohio Poll/Univ of Cin." : "Ohio Poll", 35 | "Ohio U." : "Ohio Poll", 36 | "Ohio Univ." : "Ohio Poll", 37 | "Pub. Opin. Strat." : "Public Opinion Strategies", 38 | "Pub. Opinion Strat." : "Public Opinion Strategies", 39 | "PPP (D)" : "Public Policy Polling (PPP)", 40 | "Quinnipiac U." : "Quinnipiac", 41 | "Quinnipiac Univ." : "Quinnipiac", 42 | "Quinnipiac Univ" : "Quinnipiac", 43 | "Rasmussen Reports" : "Rasmussen", 44 | #"" : "Research 2000", 45 | "Selzer & Co." : "Selzer", 46 | "Star Tribune" : "Star Tribune (MN)", 47 | "Star-Tribune" : "Star Tribune (MN)", 48 | #"" : "Strategic Vision", 49 | "Suffolk U." : "Suffolk (NH/MA)", 50 | "Suffolk Univ." : "Suffolk (NH/MA)", 51 | "Suffolk University" : "Suffolk (NH/MA)", 52 | "Survey USA" : "SurveyUSA", 53 | "U. of New Hampshire" : "Univ. New Hampshire", 54 | "Univ. of New Hampsh." : "Univ. New Hampshire", 55 | "Univ. of New Hampshire" : "Univ. New Hampshire", 56 | "Gallup" : "USA Today / Gallup", 57 | "Zogby" : "Zogby", 58 | #"" : "Zogby Interactive", 59 | } 60 | -------------------------------------------------------------------------------- /silver_model.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3.0 3 | 4 | # 5 | 6 | # GitHub link for the talk. You can clone the data and play with it yourself. Please submit any improvements as pull requests 7 | # 8 | # [https://github.com/jseabold/538model](https://github.com/jseabold/538model) 9 | 10 | # 11 | 12 | import datetime 13 | 14 | import numpy as np 15 | import statsmodels.api as sm 16 | import matplotlib.pyplot as plt 17 | import pandas 18 | from scipy import stats 19 | np.set_printoptions(precision=4, suppress=True) 20 | pandas.set_printoptions(notebook_repr_html=False, 21 | precision=4, 22 | max_columns=12, column_space=10, 23 | max_colwidth=25) 24 | 25 | # 26 | 27 | today = datetime.datetime(2012, 10, 2) 28 | 29 | # 30 | 31 | # Outline 32 | 33 | # 34 | 35 | # 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/) 36 | 37 | # 38 | 39 | # 1. Polling Average: Aggregate polling data, and weight it according to our reliability scores. 40 | # 41 | # 2. Trend Adjustment: Adjust the polling data for current trends. 42 | # 43 | # 3. Regression: Analyze demographic data in each state by means of regression analysis. 44 | # 45 | # 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. 46 | # 47 | # 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. 48 | # 49 | # 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. 50 | 51 | # 52 | 53 | # Get the Data 54 | 55 | # 56 | 57 | # Consensus forecast of GDP growth over the next two economic quarters (Median of WSJ's monthly forecasting panel) 58 | 59 | # 60 | 61 | # 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). 62 | 63 | # 64 | 65 | # Obtained from WSJ.com on 10/2/12 66 | 67 | # 68 | 69 | forecasts = pandas.read_table("/home/skipper/school/seaboldgit/" 70 | "talks/pydata/data/wsj_forecast.csv", skiprows=2) 71 | 72 | # 73 | 74 | forecasts 75 | 76 | # 77 | 78 | forecasts.rename(columns={"Q3 2012" : "gdp_q3_2012", 79 | "Q4 2012" : "gdp_q4_2012"}, inplace=True) 80 | 81 | # 82 | 83 | forecasts 84 | 85 | # 86 | 87 | # Pandas methods are NaN aware, so we can just get the median. 88 | 89 | # 90 | 91 | median_forecast = forecasts[['gdp_q3_2012', 'gdp_q4_2012']].median() 92 | 93 | # 94 | 95 | median_forecast 96 | 97 | # 98 | 99 | # Economics State Variables from FRED 100 | 101 | # 102 | 103 | # Job Growth (Nonfarm-payrolls) **PAYEMS** 104 | # Personal Income **PI** 105 | # Industrial production **INDPRO** 106 | # Consumption **PCEC96** 107 | # Inflation **CPIAUCSL** 108 | 109 | # 110 | 111 | from pandas.io.data import DataReader 112 | 113 | # 114 | 115 | series = dict(jobs = "PAYEMS", 116 | income = "PI", 117 | prod = "INDPRO", 118 | cons = "PCEC96", 119 | prices = "CPIAUCSL") 120 | 121 | # 122 | 123 | #indicators = [] 124 | #for variable in series: 125 | # data = DataReader(series[variable], "fred", start="2010-1-1") 126 | # # renaming not necessary in master 127 | # data.rename(columns={"VALUE" : variable}, inplace=True) 128 | # indicators.append(data) 129 | 130 | # 131 | 132 | #indicators = pandas.concat(indicators, axis=1) 133 | 134 | # 135 | 136 | #indicators 137 | 138 | # 139 | 140 | # Polling Data 141 | 142 | # 143 | 144 | # 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). 145 | 146 | # 147 | 148 | # Polling Average 149 | 150 | # 151 | 152 | # Details can be found at the 538 blog [here](http://www.fivethirtyeight.com/2008/03/pollster-ratings-updated.html). 153 | 154 | # 155 | 156 | tossup = ["Colorado", "Florida", "Iowa", "New Hampshire", "Nevada", 157 | "Ohio", "Virginia", "Wisconsin"] 158 | 159 | # 160 | 161 | national_data2012 = pandas.read_table("/home/skipper/school/seaboldgit/talks/pydata/" 162 | "data/2012_poll_data.csv") 163 | 164 | # 165 | 166 | national_data2012 167 | 168 | # 169 | 170 | national_data2012.rename(columns={"Poll" : "Pollster"}, inplace=True) 171 | national_data2012["obama_spread"] = national_data2012["Obama (D)"] - national_data2012["Romney (R)"] 172 | 173 | # 174 | 175 | national_data2012["State"] = "USA" 176 | 177 | # 178 | 179 | state_data2012 = pandas.read_table("/home/skipper/school/seaboldgit/talks/pydata/data/2012_poll_data_states.csv") 180 | state_data2012 181 | 182 | # 183 | 184 | state_data2012["obama_spread"] = state_data2012["Obama (D)"] - state_data2012["Romney (R)"] 185 | 186 | # 187 | 188 | state_data2012.rename(columns=dict(Poll="Pollster"), inplace=True); 189 | 190 | # 191 | 192 | state_data2012.MoE 193 | 194 | # 195 | 196 | state_data2012.MoE = state_data2012.MoE.replace("--", "nan").astype(float) 197 | 198 | # 199 | 200 | state_data2012 201 | 202 | # 203 | 204 | state_data2012 = state_data2012.set_index(["Pollster", "State", "Date"]).drop("RCP Average", level=0).reset_index() 205 | 206 | # 207 | 208 | state_data2012.head(5) 209 | 210 | # 211 | 212 | # Clean up the sample numbers to make it a number. 213 | 214 | # 215 | 216 | state_data2012.Sample 217 | 218 | # 219 | 220 | state_data2012.Sample = state_data2012.Sample.str.replace("\s*([L|R]V)|A", "") # 20 RV 221 | state_data2012.Sample = state_data2012.Sample.str.replace("\s*--", "nan") # -- 222 | state_data2012.Sample = state_data2012.Sample.str.replace("^$", "nan") 223 | 224 | national_data2012.Sample = national_data2012.Sample.str.replace("\s*([L|R]V)|A", "") # 20 RV 225 | national_data2012.Sample = national_data2012.Sample.str.replace("\s*--", "nan") # -- 226 | national_data2012.Sample = national_data2012.Sample.str.replace("^$", "nan") 227 | 228 | # 229 | 230 | state_data2012.Sample.astype(float) 231 | 232 | # 233 | 234 | state_data2012.Sample = state_data2012.Sample.astype(float) 235 | national_data2012.Sample = national_data2012.Sample.astype(float) 236 | 237 | # 238 | 239 | # The 2012 data is currently in order of time by state but doesn't have any years. 240 | 241 | # 242 | 243 | #dates2012.get_group(("OH", "NBC News/Marist")) 244 | 245 | # 246 | 247 | state_data2012["start_date"] = "" 248 | state_data2012["end_date"] = "" 249 | dates2012 = state_data2012.groupby(["State", "Pollster"])["Date"] 250 | for _, date in dates2012: 251 | year = 2012 252 | # checked by hand, none straddle years 253 | changes = np.r_[False, np.diff(map(int, [i[0].split('/')[0] for 254 | i in date.str.split(' - ')])) > 0] 255 | for j, (idx, dt) in enumerate(date.iteritems()): 256 | dt1, dt2 = dt.split(" - ") 257 | year -= changes[j] 258 | # check for ones that haven't polled in a year - soft check 259 | # could be wrong for some... 260 | if year == 2012 and (int(dt1.split("/")[0]) > today.month and 261 | int(dt1.split("/")[1]) > today.day): 262 | year -= 1 263 | dt1 += "/" + str(year) 264 | dt2 += "/" + str(year) 265 | state_data2012.set_value(idx, "start_date", dt1) 266 | state_data2012.set_value(idx, "end_date", dt2) 267 | 268 | # 269 | 270 | national_data2012["start_date"] = "" 271 | national_data2012["end_date"] = "" 272 | dates2012 = national_data2012.groupby(["Pollster"])["Date"] 273 | for _, date in dates2012: 274 | year = 2012 275 | # checked by hand, none straddle years 276 | changes = np.r_[False, np.diff(map(int, [i[0].split('/')[0] for 277 | i in date.str.split(' - ')])) > 0] 278 | for j, (idx, dt) in enumerate(date.iteritems()): 279 | dt1, dt2 = dt.split(" - ") 280 | year -= changes[j] 281 | dt1 += "/" + str(year) 282 | dt2 += "/" + str(year) 283 | national_data2012.set_value(idx, "start_date", dt1) 284 | national_data2012.set_value(idx, "end_date", dt2) 285 | 286 | # 287 | 288 | state_data2012.head(10) 289 | 290 | # 291 | 292 | state_data2012.start_date = state_data2012.start_date.apply(pandas.datetools.parse) 293 | state_data2012.end_date = state_data2012.end_date.apply(pandas.datetools.parse) 294 | 295 | national_data2012.start_date = national_data2012.start_date.apply(pandas.datetools.parse) 296 | national_data2012.end_date = national_data2012.end_date.apply(pandas.datetools.parse) 297 | 298 | # 299 | 300 | def median_date(row): 301 | dates = pandas.date_range(row["start_date"], row["end_date"]) 302 | median_idx = int(np.median(range(len(dates)))+.5) 303 | return dates[median_idx] 304 | 305 | state_data2012["poll_date"] = [median_date(row) for i, row in state_data2012.iterrows()] 306 | del state_data2012["Date"] 307 | del state_data2012["start_date"] 308 | del state_data2012["end_date"] 309 | 310 | national_data2012["poll_date"] = [median_date(row) for i, row in national_data2012.iterrows()] 311 | del national_data2012["Date"] 312 | del national_data2012["start_date"] 313 | del national_data2012["end_date"] 314 | 315 | # 316 | 317 | state_data2012.head(5) 318 | 319 | # 320 | 321 | pollsters = state_data2012.Pollster.unique() 322 | pollsters.sort() 323 | 324 | # 325 | 326 | len(pollsters) 327 | 328 | # 329 | 330 | print pandas.Series(pollsters) 331 | 332 | # 333 | 334 | # 538 Pollster Ratings 335 | 336 | # 337 | 338 | weights = pandas.read_table("/home/skipper/school/seaboldgit/talks/pydata/data/pollster_weights.csv") 339 | 340 | # 341 | 342 | weights 343 | 344 | # 345 | 346 | weights.mean() 347 | 348 | # 349 | 350 | # Clean up the pollster names a bit so we can merge with the weights. 351 | 352 | # 353 | 354 | import pickle 355 | pollster_map = pickle.load(open("/home/skipper/school/seaboldgit/talks/pydata/data/pollster_map.pkl", "rb")) 356 | 357 | # 358 | 359 | state_data2012.Pollster.replace(pollster_map, inplace=True); 360 | 361 | # 362 | 363 | national_data2012.Pollster.replace(pollster_map, inplace=True); 364 | 365 | # 366 | 367 | # Inner merge the data with the weights 368 | 369 | # 370 | 371 | state_data2012 = state_data2012.merge(weights, how="inner", on="Pollster") 372 | 373 | # 374 | 375 | state_data2012.head(5) 376 | 377 | # 378 | 379 | # First, we average each pollster for each state. 380 | 381 | # 382 | 383 | # 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. 384 | 385 | # 386 | 387 | def exp_decay(days): 388 | # defensive coding, accepts timedeltas 389 | days = getattr(days, "days", days) 390 | return .5 ** (days/30.) 391 | 392 | # 393 | 394 | fig, ax = plt.subplots(figsize=(12,8), subplot_kw={"xlabel" : "Days", 395 | "ylabel" : "Weight"}) 396 | days = np.arange(0, 45) 397 | ax.plot(days, exp_decay(days)); 398 | ax.vlines(30, 0, .99, color='r', linewidth=4) 399 | ax.set_ylim(0,1) 400 | ax.set_xlim(0, 45); 401 | 402 | # 403 | 404 | # The second adjustment is for the sample size of the poll. Polls with a higher sample size receive a higher weight. 405 | 406 | # 407 | 408 | # 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) 409 | 410 | # 411 | 412 | def average_error(nobs, p=50.): 413 | return p*nobs**-.5 414 | 415 | # 416 | 417 | # 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. 418 | 419 | # 420 | 421 | def effective_sample(total_error, p=50.): 422 | return p**2 * (total_error**-2.) 423 | 424 | # 425 | 426 | state_pollsters = state_data2012.groupby(["State", "Pollster"]) 427 | 428 | # 429 | 430 | ppp_az = state_pollsters.get_group(("AZ", "Public Policy Polling (PPP)")) 431 | 432 | # 433 | 434 | var_idx = ["Pollster", "State", "Obama (D)", "Romney (R)", "Sample", "poll_date"] 435 | ppp_az[var_idx] 436 | 437 | # 438 | 439 | ppp_az.sort("poll_date", ascending=False, inplace=True); 440 | 441 | # 442 | 443 | ppp_az["cumulative"] = ppp_az["Sample"].cumsum() 444 | ppp_az["average_error"] = average_error(ppp_az["cumulative"]) 445 | ppp_az["total_error"] = ppp_az["PIE"] + ppp_az["average_error"] 446 | ppp_az[var_idx + ["cumulative"]] 447 | 448 | # 449 | 450 | ppp_az["ESS"] = effective_sample(ppp_az["total_error"]) 451 | ppp_az["MESS"] = ppp_az["ESS"].diff() 452 | # fill in first one 453 | ppp_az["MESS"].fillna(ppp_az["ESS"].head(1).item(), inplace=True); 454 | 455 | # 456 | 457 | ppp_az[["poll_date", "Sample", "cumulative", "ESS", "MESS"]] 458 | 459 | # 460 | 461 | # Now let's do it for every polling firm in every state. 462 | 463 | # 464 | 465 | def calculate_mess(group): 466 | cumulative = group["Sample"].cumsum() 467 | ae = average_error(cumulative) 468 | total_error = ae + group["PIE"] 469 | ess = effective_sample(total_error) 470 | mess = ess.diff() 471 | mess.fillna(ess.head(1).item(), inplace=True) 472 | #from IPython.core.debugger import Pdb; Pdb().set_trace() 473 | return pandas.concat((ess, mess), axis=1) 474 | 475 | #state_data2012["ESS", "MESS"] 476 | df = state_pollsters.apply(calculate_mess) 477 | df.rename(columns={0 : "ESS", 1 : "MESS"}, inplace=True); 478 | 479 | # 480 | 481 | state_data2012 = state_data2012.join(df) 482 | 483 | # 484 | 485 | # Give them the time weight 486 | 487 | # 488 | 489 | td = today - state_data2012["poll_date"].head(1).item() 490 | 491 | # 492 | 493 | state_data2012["poll_date"].head(1).item() 494 | 495 | # 496 | 497 | td 498 | 499 | # 500 | 501 | state_data2012["time_weight"] = (today - state_data2012["poll_date"]).apply(exp_decay) 502 | 503 | # 504 | 505 | # Now aggregate all of these. Weight them based on the sample size but also based on the time_weight. 506 | 507 | # 508 | 509 | def weighted_mean(group): 510 | weights1 = group["time_weight"] 511 | weights2 = group["MESS"] 512 | return np.sum(weights1*weights2*group["obama_spread"]/(weights1*weights2).sum()) 513 | 514 | # 515 | 516 | state_pollsters = state_data2012.groupby(["State", "Pollster"]) 517 | state_polls = state_pollsters.apply(weighted_mean) 518 | 519 | # 520 | 521 | state_polls 522 | 523 | # 524 | 525 | # 2004 and 2008 Polls 526 | 527 | # 528 | 529 | state_data2004 = pandas.read_csv("/home/skipper/school/seaboldgit/talks/pydata/data/2004-pres-polls.csv") 530 | state_data2004 531 | 532 | # 533 | 534 | state_data2004.head(5) 535 | 536 | # 537 | 538 | state_data2008 = pandas.read_csv("/home/skipper/school/seaboldgit/talks/pydata/data/2008-pres-polls.csv") 539 | state_data2008 540 | 541 | # 542 | 543 | state_data2008.head(5) 544 | 545 | # 546 | 547 | state_data2008.End + " 2008" 548 | 549 | # 550 | 551 | (state_data2008.End + " 2008").apply(pandas.datetools.parse) 552 | 553 | # 554 | 555 | # Need to clean some of the dates in this data. Luckily, pandas makes this easy to do. 556 | 557 | # 558 | 559 | state_data2004.Date = state_data2004.Date.str.replace("Nov 00", "Nov 01") 560 | state_data2004.Date = state_data2004.Date.str.replace("Oct 00", "Oct 01") 561 | 562 | # 563 | 564 | state_data2008["poll_date"] = (state_data2008.End + " 2008").apply(pandas.datetools.parse) 565 | state_data2004["poll_date"] = (state_data2004.Date + " 2004").apply(pandas.datetools.parse) 566 | 567 | # 568 | 569 | del state_data2008["End"] 570 | del state_data2008["Start"] 571 | del state_data2004["Date"] 572 | 573 | # 574 | 575 | state_data2008 576 | 577 | # 578 | 579 | state_data2004 580 | 581 | # 582 | 583 | state_groups = state_data2008.groupby("State") 584 | 585 | # 586 | 587 | state_groups.aggregate(dict(Obama=np.mean, McCain=np.mean)) 588 | 589 | # 590 | 591 | # Means for the entire country (without weighting by population) 592 | 593 | # 594 | 595 | state_groups.aggregate(dict(Obama=np.mean, McCain=np.mean)).mean() 596 | 597 | # 598 | 599 | state_data2004.Pollster.replace(pollster_map, inplace=True) 600 | state_data2008.Pollster.replace(pollster_map, inplace=True); 601 | 602 | # 603 | 604 | state_data2004 = state_data2004.merge(weights, how="inner", on="Pollster") 605 | state_data2008 = state_data2008.merge(weights, how="inner", on="Pollster") 606 | 607 | # 608 | 609 | len(state_data2004.Pollster.unique()) 610 | 611 | # 612 | 613 | len(state_data2008.Pollster.unique()) 614 | 615 | # 616 | 617 | import datetime 618 | 619 | #