GDP & emissions - degrowthing or decoupling?
Friday fagpackets
One of a series…
What’s all this about de-growth?
<sigh>
Data
Downloaded from the awesome OurWorldInData.
Code
<- data.table::fread(here::here("data", "co2-emissions-and-gdp.csv"))
dt_abs <- data.table::fread(here::here("data", "co2-emissions-and-gdp-per-capita.csv")) dt_pc
Who do we care about?
Code
<- c("United Kingdom", "United States", "New Zealand", "China") entities_of_interest
Absolute GDP & emissions
First we’ll try production emissions.
Code
<- dt_abs[Entity %in% entities_of_interest]
plotDT
::ggplot(plotDT, aes(y = as.numeric(`GDP, PPP (constant 2017 international $)`)/1000000000,
ggplot2x = as.numeric(`Annual CO2 emissions`)/1000000,
colour = Entity,
alpha = Year)) +
geom_point() +
labs(x = "Annual CO2 emissions (production-based, gT)",
y = "GDP $bn (constant 2017 $)")
Next we’ll try consumption emissions.
Note that 2020 consumption-based emissions data is missing so you don’t see the downtick
Code
<- dt_abs[Entity %in% entities_of_interest]
plotDT
::ggplot(plotDT, aes(y = as.numeric(`GDP, PPP (constant 2017 international $)`)/1000000000,
ggplot2x = as.numeric(`Annual consumption-based CO2 emissions`)/1000000,
colour = Entity,
alpha = Year)) +
geom_point() +
labs(x = "Annual CO2 emissions (consumption-based, gT)",
y = "GDP $bn (constant 2017 $)")
Per capita GDP & emissions
Since we’ll be dividing everything pairwise by the same denominator, nothing much should change… but the plots should be much clearer as we’ve removed the affect of population size
First we’ll try production emissions.
Code
<- dt_pc[Entity %in% entities_of_interest]
plotDT
<- ggplot2::ggplot(plotDT, aes(y = as.numeric(`GDP per capita, PPP (constant 2017 international $)`),
p x = as.numeric(`Annual CO2 emissions (per capita)`),
colour = Entity,
alpha = Year)) +
geom_point() +
theme(legend.position = "none") +
labs(x = "Annual CO2 emissions per capita (production-based, T)",
y = "GDP per capita (constant 2017 $)")
Let’s repeat that for all countries. Hover over the dots to see which is which #YMMV
Code
#plotDT <- dt_pc[Entity %in% entities_of_interest]
<- dt_pc # for fun
plotDT
<- ggplot2::ggplot(plotDT, aes(y = as.numeric(`GDP per capita, PPP (constant 2017 international $)`),
p x = as.numeric(`Annual CO2 emissions (per capita)`),
colour = Entity,
alpha = Year)) +
geom_point() +
theme(legend.position = "none") +
labs(x = "Annual CO2 emissions per capita (production-based, T)",
y = "GDP per capita (constant 2017 $)")
::ggplotly(p) plotly
Next we’ll try consumption emissions.
Note that 2020 consumption-based emissions data is missing so you don’t see the down-tick
Code
<- dt_pc[Entity %in% entities_of_interest]
plotDT
::ggplot(plotDT, aes(y = as.numeric(`GDP per capita, PPP (constant 2017 international $)`),
ggplot2x = as.numeric(`Annual consumption-based CO2 emissions (per capita)`),
colour = Entity,
alpha = Year)) +
geom_point() +
labs(x = "Annual CO2 emissions per capita (consumption-based, T)",
y = "GDP per capita (constant 2017 $)")
Let’s repeat that for all countries. Hover over the dots to see which is which #YMMV
Code
#plotDT <- dt_pc[Entity %in% entities_of_interest]
<- dt_pc # for fun
plotDT
<- ggplot2::ggplot(plotDT, aes(y = as.numeric(`GDP per capita, PPP (constant 2017 international $)`),
p x = as.numeric(`Annual consumption-based CO2 emissions (per capita)`),
colour = Entity,
alpha = Year)) +
geom_point() +
labs(x = "Annual CO2 emissions per capita (consumption-based, T)",
y = "GDP per capita (constant 2017 $)")
::ggplotly(p) plotly
Efficiency
How about looking at efficency gC02e per $ GDP?
Following https://timjackson.org.uk/earth-vs-growth/ …
Code
`Emissions intensity` := `Annual CO2 emissions`/`GDP, PPP (constant 2017 international $)`*1000*1000]
dt_abs[,
<- c("United Kingdom", "United States", "World", "New Zealand", "China") entities_of_interest
Code
<- dt_abs[Entity %in% entities_of_interest]
plotDT
::ggplot(plotDT, aes(Year, `Emissions intensity`, colour = Entity)) +
ggplot2geom_line() +
labs(y = "gC02 per $ GDP",
colour = "Country",
caption = "Data: https://ourworldindata.org")
For the UK, let’s say c. 300g/$ in 1995 reducing to 200g/$ in 2010. So 15 years. To go from 200g/$ to zero at the same rate would take approx. 30 years. So net-zero by 2050?
Regardless of whether that aligns with science-based targets (i.e. absolute zero by 2044) … what happens if the economy grows … by say 2-3% per year? … would that force total emissions up (fixed intensity) or result in efficiency gains (lower intensity)?
Code
`Emissions intensity (consumption-based)` := `Annual consumption-based CO2 emissions`/`GDP, PPP (constant 2017 international $)`*1000*1000] dt_abs[,
Code
<- dt_abs[Entity %in% entities_of_interest]
plotDT
::ggplot(plotDT, aes(Year, `Emissions intensity (consumption-based)`, colour = Entity)) +
ggplot2geom_line() +
labs(y = "gC02 per $ GDP")
Warning: Removed 4 row(s) containing missing values (geom_path).
Whom do we love?
Data descriptions
Check
Skim the absolute data:
Code
::skim(dt_abs) skimr
Warning: Couldn't find skimmers for class: integer64; No user-defined `sfl`
provided. Falling back to `character`.
Warning: Couldn't find skimmers for class: integer64; No user-defined `sfl`
provided. Falling back to `character`.
Name | dt_abs |
Number of rows | 7795 |
Number of columns | 8 |
Key | NULL |
_______________________ | |
Column type frequency: | |
character | 4 |
numeric | 4 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
Entity | 0 | 1.00 | 4 | 32 | 0 | 255 | 0 |
Code | 0 | 1.00 | 0 | 8 | 931 | 225 | 0 |
Annual CO2 emissions | 479 | 0.94 | 1 | 21 | 0 | 6137 | 0 |
GDP, PPP (constant 2017 international $) | 1626 | 0.79 | 1 | 21 | 0 | 6162 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Year | 0 | 1.00 | 2005.06 | 8.930000e+00 | 1990.00 | 1997.00 | 2005.00 | 2013.00 | 2.02000e+03 | ▇▇▇▇▇ |
Annual consumption-based CO2 emissions | 3730 | 0.52 | 976326173.39 | 3.366486e+09 | 197201.67 | 10759532.52 | 59975058.69 | 290854945.27 | 3.67025e+10 | ▇▁▁▁▁ |
Emissions intensity | 2105 | 0.73 | 263.56 | 2.409400e+02 | 9.15 | 122.67 | 196.73 | 309.26 | 2.30112e+03 | ▇▁▁▁▁ |
Emissions intensity (consumption-based) | 4295 | 0.45 | 291.92 | 1.686800e+02 | 4.19 | 179.06 | 251.82 | 365.36 | 1.82195e+03 | ▇▂▁▁▁ |
Skim the per capita data
Code
::skim(dt_pc) skimr
Name | dt_pc |
Number of rows | 7745 |
Number of columns | 6 |
Key | NULL |
_______________________ | |
Column type frequency: | |
character | 2 |
numeric | 4 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
Entity | 0 | 1 | 4 | 32 | 0 | 252 | 0 |
Code | 0 | 1 | 0 | 8 | 899 | 224 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Year | 0 | 1.00 | 2005.07 | 8.93 | 1990.00 | 1997.00 | 2005.00 | 2013.00 | 2020.00 | ▇▇▇▇▇ |
GDP per capita, PPP (constant 2017 international $) | 1579 | 0.80 | 17879.29 | 20132.68 | 436.72 | 3678.83 | 10365.78 | 25832.03 | 161971.47 | ▇▂▁▁▁ |
Annual consumption-based CO2 emissions (per capita) | 3680 | 0.52 | 6.53 | 6.92 | 0.05 | 1.19 | 4.30 | 9.89 | 57.79 | ▇▂▁▁▁ |
Annual CO2 emissions (per capita) | 492 | 0.94 | 5.11 | 6.44 | 0.02 | 0.77 | 2.97 | 7.42 | 68.72 | ▇▁▁▁▁ |
Code
# hidden chunk