Energy generation trends under Trump: A web scraping project

Posted on Jun 2, 2019

Has the inauguration of President Donald Trump had an effect on US renewable or fossil fuel energy generation?


A vital component in the fight against climate change is effective policy. Understanding which actions promote or hinder mitigating technologies and behaviors is key to keeping global warming below 1.5 degrees. This analysis aims to do just that with one specific intervention, the election of Donald Trump as president of the United States on January 20th, 2017.

The Commander in Chief's administration is undeniably pro fossil fuels, but aside from gutting the Environmental Protection Agency his conquests on the climate change battlefield have been relatively few and far between - most of them coming 280 characters at a time. I wanted to investigate whether there has actually been any meaningful change in renewable or fossil fuel electricity generation during his time in office.

To do this required scraping tables of monthly electricity generation data from the US Energy Information Administration website. These each had a similar structure but were in isolated parts of the EIA site, so I had to build 4 separate scrapers to collect the data.

Exploratory data analysis

My exploratory analysis involved collating the scraped data files into one data frame, removing duplicates and grouping the different energy sources into types to make visualization easier. This produced Fig.1.

Fig.1 Total US energy generation by source and month from January 2015 to 2019

There is clearly a seasonal pattern, with a strong summer peak and a less pronounced winter peak. However, from Fig.1 it is hard to discern any change between the pre and post inauguration periods. To aid with this, I split the data into the two relevant sections and averaged over the months of the year.

Fig.2 Pre and post inauguration average monthly fossil fuel generation
Fig.3 Pre and post inauguration average monthly renewable and nuclear generation

These show, qualitatively, that there does appear to have been a significant difference in the average renewable generation but not in the case of either fossil fuel or nuclear.

Statistical testing and time series

I would like to verify this with Welch's two-sample t-test, where the generation data sets either side of the inauguration will be our two samples, drawn from a population that is the full data set from Jan'15 - Jan '19. This requires the population(s) from which the samples are drawn to be normally distributed. Unfortunately, through measures of skewness, tests of normality, and by examining Fig.4, I found this only to be true for the renewable data. As such at this point I am unable to progress the fossil fuel discussion further.

Fig.4 Distributions of the monthly fossil fuel and renewable generation data over the whole 2015 - 2019 period

It is worth at this point scrutinizing the second assumption of the t-test, that sample observations are randomly drawn and independent. Whilst the generation from any source in one month is not a direct function of generation in previous months, the number of power plants does not radically (or randomly) change on a monthly basis, so there is some dependency.

Performing the t-test on the renewable data gives a p-value on the order of 10-8, meaning there is a statistically significant difference in the means of the pre and post inauguration renewable generation data, and we can reject the null hypothesis that there is no change in the mean. But this is not the whole story.

Fig.5 Additive time series decomposition for the full set of renewable generation data. Top to bottom we have the observed data, the trend component of the series, the seasonal component, and the residual component

Fig.5 shows an additive time series decomposition of the renewable energy generation data, where the time series is modelled as:

yt = Tt + St + Rt

Tt is the long-term progression (or trend) component of the time series, St is the seasonal component, which fluctuates with a fixed frequency and Rt is the residual or noise component. These are represented in rows two, three and four of Fig.5, respectively. This demonstrates that the renewable generation figures are trending upwards throughout the whole period examined. In fact, the overall change in the level of the trend component accurately accounts for the changes seen in Fig.3.

Conclusions and future work

There is a statistically significant change in renewable generation between the pre and post inauguration periods, but I would attribute this to a growing industry, not President Donald Trump.

At this moment I am unable to say conclusively whether there has been any change in fossil fuel generation as a result of President Trump.

A final point to make here is that this analysis has focused on the correlation between one factor and the adoption of specific technologies. It cannot confirm causation, and besides there are many factors in place in the energy industry. The role of subsidies remains important but is diminishing and other policies remain in place that predate Trump. The pace of change in such a complex system is simply pedestrian.

Future work will involve:

  1. Extending the analysis to greenhouse gas emissions data
  2. Advanced time series analysis including using machine learning to identify break points
  3. Non-parametric tests to analyze the fossil fuel data as these do not require the assumption of population normality
  4. Variations on the independent t-test to better account for the dependent sample observations in all of the data

About Author

Sam Collier

Sam Collier hails from across the pond where he earned both a First Class BSc and an MEng in Engineering Science from the University of Oxford, specializing in energy engineering. While in London, he did some work for...
View all posts by Sam Collier >

Related Articles

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI