• Stars
    star
    1,581
  • Rank 29,599 (Top 0.6 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created over 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Data and methodology for the Big Mac index

The Big Mac index

This repository contains the data behind The Economist’s Big Mac index, and code that shows how we calculate it. To download the data, go to the latest release, where you can download the index data in a CSV or Excel, or the code behind it.

Methodology changes

In July 2022 we updated the Big Mac index to use a McDonalds-provided price for the United States (previously, we averaged the price from four major US cities). We also changed how we calculate the GDP-adjusted index. Instead of using the IMF's calculation of purchasing-power parity, we adjust the GDP per person by the difference in each country's Big Mac prices. The full history of the GDP-adjusted series will now be updated whenever the IMF’s historical GDP series are updated, which means the GDP series for a given year may change slightly over time as the IMF refines its measurements. The previously published versions of both indices are available in the releases.

Source data

Our source data are from several places. Big Mac prices are from McDonald’s directly and from reporting around the world; exchange rates are from Thomson Reuters (until January 2022) and Refinitiv Datastream (July 2022 on); GDP and population data used to calculate the euro area averages are from Eurostat and GDP per person data are from the IMF World Economic Outlook reports.

Output data

The script provides data in three files:

  • big-mac-raw-index.csv contains values for the “raw” index
  • big-mac-adjusted-index.csv contains values for the “adjusted” index
  • big-mac-full-index.csv contains both

Each file also contains the source data used to calculate it.

Codebook

This codebook largely applies to all three files. The exception is the variables suffixed "_raw" or "_adjusted"—these appear (with suffixes) in the "full" file but without suffixes in the respective ("raw" or "adjusted") files.

variable definition source
date Date of observation
iso_a3 Three-character ISO 3166-1 country code
currency_code Three-character ISO 4217 currency code
name Country name
local_price Price of a Big Mac in the local currency McDonalds; The Economist
dollar_ex Local currency units per dollar Reuters
dollar_price Price of a Big Mac in dollars
USD_raw Raw index, relative to the US dollar
EUR_raw Raw index, relative to the Euro
GBP_raw Raw index, relative to the British pound
JPY_raw Raw index, relative to the Japanese yen
CNY_raw Raw index, relative to the Chinese yuan
GDP_dollar GDP per person, in dollars IMF
adj_price GDP-adjusted price of a Big Mac, in dollars
USD_adjusted Adjusted index, relative to the US dollar
EUR_adjusted Adjusted index, relative to the Euro
GBP_adjusted Adjusted index, relative to the British pound
JPY_adjusted Adjusted index, relative to the Japanese yen
CNY_adjusted Adjusted index, relative to the Chinese yuan

Calculating the Big Mac index

The code to calculate the index is provided as a Jupyter Notebook. The code itself is written in R, a programming language designed for data manipulation and statistics. You can view the notebook on github.

If you want to run the notebook, you’ll need to set up a few things:

Install Python

You can refer to the installation instructions at the Hitchhiker’s Guide to Python

On a Mac, you already have Python 2.7 installed, but it does not come with Python’s package manager. We recommend using Python 3. To install it, we recommend using Homebrew. In terminal, install Homebrew:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Then, use Homebrew to install Python 3.x:

$ brew install python3

On Ubuntu Linux you can use aptitude:

$ sudo apt-get update
$ sudo apt-get install python3.6

On Windows, instructions coming.

Install Jupyter

On Mac or Linux, you should now also have pip installed. pip is a package manager for Python. You can install Jupyter with pip:

$ python3 -m pip install jupyter

You’re all set. (If you are using Python 2, run python -m pip install jupyter.)

On Windows, instructions coming.

Install R

On a Mac, use Homebrew again. At a terminal prompt, run:

$ brew install R

On Ubuntu Linux, you’re recommended to add a new source to your aptitude setup to install R. Run:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

Once you have added the key, add R repository (called CRAN):

$ sudo add-apt-repository 'deb [arch=amd64,i386] https://cran.rstudio.com/bin/linux/ubuntu xenial/'

Now, you can install R:

$ sudo apt-get update
$ sudo apt-get install r-base

On Windows, instructions coming.

Install IRkernel

IRKernel lets you run R code in Jupyter notebooks. This is the best way to work with R code (this is a truth not yet universally acknowledged). Installation instructions for IRKernel are here. In short:

At a terminal prompt, start R:

$ R
> install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))
> devtools::install_github('IRkernel/IRkernel')
> IRkernel::installspec()

Congratulations, you can run R in Jupyter.

Install tidyverse and data.table

Finally, our R script uses a few R packages you’ll need to install. The tidyverse is a collection of useful packages for data science work in R. Data.table is a complicated but extremely useful alternative to R’s standard data frames for storing and manipulating data. At the R prompt from above, run:

> install.packages(c('tidyverse','data.table'))

You’re all set.

Start the notebook

Navigate to the repository on the command line, and run:

$ jupyter notebook

You should see a browser window pop up on http://localhost:8888. Click on “Big Mac data generator” to launch the notebook.

To run the notebook, you can run the code cell by cell by clicking on the first cell and using shift+enter to run each cell in turn. Or you can run the whole thing by clicking on the “Cell” menu and selecting “Run All”.

R script

We also include the calculation as a bare R script (data-generator.R) if you just want to run the code, but this doesn't explain what the code does or walk you through it. To run this, you'll only need to install R, tidyverse, and data.table; once those are installed, you can just run

$ R data-generator-v2.R

to calculate the index files. (The R script may generate numbers that are different at the last decimal place to those from the Python notebook—these differences are due to rounding errors and can be safely ignored.)

Licence

This software is published by The Economist under the MIT licence. The data generated by The Economist are available under the Creative Commons Attribution 4.0 International License.

The licences include only the data and the software authored by The Economist, and do not cover any Economist content or third-party data or content made available using the software. More information about licensing, syndication and the copyright of Economist content can be found here.

More Repositories

1

us-potus-model

Code for a dynamic multilevel Bayesian model to predict US presidential elections. Written in R and Stan.
HTML
1,231
star
2

covid-19-excess-deaths-tracker

Source code and data for The Economist's covid-19 excess deaths tracker
R
641
star
3

covid-19-the-economist-global-excess-deaths-model

The Economist's model to estimate excess deaths to the covid-19 pandemic
R
459
star
4

graphic-detail-data

Data and code behind the Economist's Graphic Detail section.
Jupyter Notebook
398
star
5

the-economist-war-fire-model

Source code and data for The Economist's Ukraine war-fire model
R
234
star
6

the-economist-gdp-per-hour-estimates

Code and data for Graphic detail on GDP and productivity
R
81
star
7

2022-france-election-model

R
74
star
8

covid-19-risk-estimator

Diagnostic code mappings and replication code for the covid-19-risk-estimator
Jupyter Notebook
35
star
9

oecd_regional_inequality

Regional inequality data and analysis
34
star
10

normalcy-index-data

The Economist's "normalcy index" data repository
20
star
11

the-economist-conquests

Source code and data for "Vladimir Putin is dragging the world back to a bloodier time"
R
14
star
12

banana-index-data

Data and methodology for the Banana index
9
star
13

covid-19-italy-herd-immunity-GD

R
8
star
14

covid-19-us-seroprevalence-model

The Economist's seroprevalence model estimating American weekly covid-19 infections based on a combination of death by age and sex, IFR by age and sex, and confirmed cases.
R
8
star
15

fires-in-sudan

Code and data to analyse fire events in Sudan
R
7
star
16

2021-germany-election-model-PUBLIC

An election-forecasting model for the German federal parliament
R
7
star
17

Grim-Tallies

Replication data and code for "Briefing: Grim Tallies", including The Economist's estimate of global infections up to September 15, 2020.
R
6
star
18

dark

Chrome extension to read economist.com in dark mode
CSS
3
star
19

covid-19-age-adjusted-ifr

Estimated IFR based on country's population age distributions
R
3
star
20

nutrition

The Economist's modelling of nutritional outcomes, informed in part by demographic projections
R
3
star
21

the-economist-nationalism-and-corruption

R
3
star
22

us-midterms-2022-change-data

2
star
23

GraphicDetail_WagesAndPlaces

From the graphic detail 15.01.22
R
2
star
24

covid-19-wuhan-excess-deaths

Estimates of excess deaths in Wuhan for The Economist "Daily Chart"
R
2
star
25

britain-mrp-2024-estimates

Estimates of 2024 voting intention by constituency from our MRP model with We Think
2
star
26

GraphicDetail_GlobalGrain

Data and code for the Graphic Detail dated 25.06.22
R
1
star
27

moving_democrats

HTML
1
star
28

vbm-turnout-analysis

R
1
star
29

2022-iran-protests

Replication data for "Protest movements as deadly as Iran’s often end in revolution or civil war"
R
1
star
30

malaria-eradication-estimates

A repository containing The Economist's estimates of effects of a successful malaria eradication campaign.
R
1
star
31

HPV

R
1
star
32

covid-19-uk-seroprevalence-model

The Economist's seroprevalence model estimating weekly covid-19 infections in England and Wales based on a combination of death by age and sex, IFR by age and sex, and confirmed cases.
R
1
star