The life of a sports analyst can be one of solitude and struggle. Most importantly there is the issue around data and how a few companies seem to have the monopoly on player data. So, where do I get data in order to make inferences? Well, if you have some fundamental Python skills and a baseline understanding of how to scrape a website, there are a few sites that you can use in your Jupyter environment in order to perform comparative player analysis. …

Here I use some basic machine learning techniques with 2020/21 English Premier League (EPL) data to try to get to the bottom of Arsenal’s poor Premier League campaign.


To say that Arsenal FC have underachieved in the last two EPL campaigns would be to play down the situation. The truth is, for a very long time the club has failed to reach the levels it was once performing at and their position in the league table has been on a decline since 2018, when the Wenger era came to an end. …


I’ve previously written about Elo scores, and how they can be used in machine learning classification models. A team’s Elo score is represented by a number which either increases or decreases depending on the outcome of matches between other Elo-ranked teams. Following every game, the winning team takes points from the losing one. The difference between the ratings of the winner and loser determines the total number of points gained or lost after a game; the number of points both lost and obtained are weighted according to the quality of the team and their most recent form. This weighting is…

Figure created by Author (Frank Hopkins, 2020)

When an experiment on your site has been paused, there is a chance that not all the information needed to either accept or reject your hypotheses has been captured in your MVT platform. If this is the case you will likely have to perform some form of post-hoc significance testing on raw experimentation, user-level data.

If you are working with a continuous metric — which are variables that can take on an unlimited range of values between both the lowest and highest points of a given measurement — the T-test is probably most familiar to you. However, the T-test and…

Introduction to CUPED

Recently I have been delving into ways in which experiment sensitivity can be increased — via reduction of variance associated with pre-experiment information. If a strong correlation can be determined between a pre-experiment metric (covariate) and experimental metric, the variance that exists within your experimental metric prior to conducting your experiment can be controlled for, prior to conducting any significance testing. There are a few different procedures worth considering when implementing controlled using pre-experiment data (CUPED) methods, but I have written about ‘covariate methods’ in previous Medium posts (adapted from Covariate methods focus on the relationship between a pre-experiment…


In the Experimentation and Optimisation team at the BBC we have the privilege to be working with very large sample sizes, which means we can confidently determine how our variants have performed in a controlled experiment. As the BBC continues to iterate and optimise, changes can produce smaller effect sizes and determining whether changes are statistically significant or otherwise becomes more difficult. In this instance the demand for greater volumes of traffic also increases.

This challenge of detecting small differences to statistical significance relates to correspondingly low statistical power. When an experiment is underpowered, statistical analysis will likely return non-significant…

Digital experimentation has always been in the science business. Although an experimentation analyst may spend a great deal of their time fleshing out hypotheses and ideating with stake-holders, correctly concluding experiments involves a core and fundamental understanding of significance testing. Furthermore, the output from experiments must be translated in a fashion that doesn’t perplex — and subsequently disengage — the stake-holders we work with. This is when appropriately designed data visualisation is essential.

When we are attempting to either accept or reject a hypothesis with multiple success metrics being utilised, things can get messy. We may have several parameters we…

Photo by Matt Popovich on Unsplash

The first part of this series using MyAnimeList focused on the prediction of user rating scores on anime content using their vast (and publicly available) database.

This article will home in on some simple techniques used to recommend anime content, based on both user rating correlations and feature variables, and using the same data-frames as in Part One.

Photo by Charlie Solorzano on Unsplash


The Elo rating system was created by Arpad Elo, a Hungarian-American physics professor, and was originally used as a method for calculating the relative skill of players in zero-sum games, such as chess. The ranking system has since been used in a variety of sporting contexts and since the “Moneyball” revolution has become ever more popular, primarily due to the fact that Elo rankings have been shown to have predictive capabilities.

A team’s Elo score is represented by a number which either increases or decreases depending on the outcome of games between other ranked teams. After every game, the winning…

MyAnimeList is one of the largest online data repositories for anime on the internet with listings ranging from TV series to Manga comics and data dating back to ~1905 (for anyone interested, this is 活動写真/Katsudou Shashin). Luckily this data is all available on Kaggle and comes split into different components/data-frames: user ratings and anime listing information. Given my mutual love for anime and all things data, I thought it would be cool to combine data and to build some predictive models and basic recommendation systems in Python. I will discuss the intricacies of such in more detail below. The first…

Frank Hopkins

Experimentation Data Scientist, specialising in digital experimentation. Posts ranging from data science to website optimisation and digi-analytics.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store