This report is a contribution to the Hampshire County Council Climate Change Expert Stakeholder Forum’s Data sub-group.
Code: https://github.com/HCC-CCECF-DataGroup/hampshire-ghg-emissions/tree/main/rmd
If you are viewing this report as a web page then you can also click on the ‘code’ buttons to reveal the code used in each section.
Feedback: https://github.com/HCC-CCECF-DataGroup/hampshire-ghg-emissions/labels/v1
This report is (c) University of Southampton and is published under the CC-BY-4.0 license. You may share, re-use or adapt for commercial or non-commercial purposes with citation.
If you wish to use any of the material in this report please cite as:
This report uses two different datasets to estimate greenhouse gas (GHG) emissions from the Hampshire County under three different definitions:
The analysis is carried out for the ‘Wider Hampshire’ area, i.e. all 14 local authority districts in the Hampshire County including the unitary authorities of Portsmouth, Southampton and the Isle of Wight. Note that this differs from the baseline estimated for the Hampshire County Council Climate Change Strategy by The Carbon Trust which excluded Portsmouth, Southampton and the Isle of Wight. A brief comparison of the ‘14 district’ estimates with the ‘11 district’ Carbon Trust estimates is included in this report.
As background to the Hampshire County Council Climate Change Strategy, the Carbon Trust was asked to establish baseline emissions for the County excluding Southampton, Portsmouth and Isle of Wight. This baseline was converted to the proportion of emissions from different energy sources and reported as a trend plot on p14 of the Strategy as shown below. This highlighted that the main components of emissions were:
Total kT CO2 baseline values were not included in this report.
Hampshire emissions (CarbonTrust, 2020)
# imputed from values given in https://documents.hants.gov.uk/climate-change/ClimateChange-Strategic-Framework-of-Programmes.pdf
hampshire_CT_terr_Totals <- data.table::fread(here::here("data","inputs", "ClimateChange-Strategic-Framework-of-Programmes_imputed_Carbon_2019.csv"))
ct_transport <- hampshire_CT_terr_Totals[compareLab == "Transport", .(ktco2_CT)]
ct_res <- hampshire_CT_terr_Totals[compareLab == "Residential", .(ktco2_CT)]
ct_ind <- hampshire_CT_terr_Totals[compareLab == "Industry & Commercial", .(ktco2_CT)]
ct_total <- ct_transport + ct_res + ct_ind
ct_transport_pc <- round(100*(ct_transport/ct_total))
ct_res_pc <- round(100*(ct_res/ct_total))
ct_ind_pc <- round(100*(ct_ind/ct_total))
However the HCC Climate Change Strategic Framework of Programmes which lays out the estimated total kT CO2 and % reduction for a range of proposed actions, enables the following baseline values to be imputed:
Using the proportion values in the figure above, this gives a total of 8,446 kT CO2 for the 11 districts.
These official local authority/district level BEIS National Statistics use the end-user territorial emissions method (“meaning CO2 emissions that occur within the UK’s borders”) and include only CO2 emissions. As a result international aviation and shipping are excluded from these estimates.
Note also that:
“The end user basis for reporting emissions has been chosen for this dataset because it accounts for the emissions from energy use at the local level and does not penalise local areas for emissions from the production of energy which is then ‘exported’ to and used in other areas.” (technical report, p8)
The following code loads the data and reports basic checks. A full data description can be found in Section 10.1.
# BEIS LA co2 data
beis_orig <- data.table::fread(paste0(params$dataPath,
"beis/localAuthority/carbon/2005_2019/", "2005-19_Local_Authority_CO2_emissions.csv"))
beis_la_co2_DT <- copy(beis_orig) # a real copy
beis_la_co2_DT[, subSectorLabel := `LA CO2 Sub-sector`]
# amend category labels for clarity and ordering
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Agriculture",
"Industry: Agriculture",
subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Large Industrial Installations",
"Industry: Large Industrial Installations",
subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Road Transport (A roads)",
"Transport: (A roads)",
subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Road Transport (Minor roads)",
"Transport: (Minor roads)",
subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Road Transport (Motorways)",
"Transport: (Motorways)",
subSectorLabel)
]
beis_la_co2_DT[, subSectorLabel := ifelse(subSectorLabel == "Diesel Railways",
"Transport: Diesel Railways",
subSectorLabel)
]
beis_la_co2_DT[, la_name := `Local Authority`]
# set up the colours
# colours borrowed from https://git.soton.ac.uk/twr1m15/la_emissions_viz/-/blob/master/shiny/app.R
# for details, use set for each sector
industry_pal <- RColorBrewer::brewer.pal(n = 8, name = "Greys")[4:8] # industry greys, 5 categories incl Agric
commercial_pal <- RColorBrewer::brewer.pal(n = 8, name = "RdPu")[4:6] # commercial greys, 3 categories
domestic_pal <- RColorBrewer::brewer.pal(n = 4, name = "Blues")[2:4] # domestic blues, 3 categories
public_pal <- RColorBrewer::brewer.pal(n = 4, name = "Purples")[2:4] # public purple, 3 categories
transport_pal <- RColorBrewer::brewer.pal(n = 6, name = "Oranges")[2:6] # transport oranges, 5 categories
lulucf_pal <- RColorBrewer::brewer.pal(n = 9, name = "Greens")[4:9] # lulucf greens, 6 categories
# for details, combine sets
beis_emissions_colours <- c(commercial_pal, domestic_pal, industry_pal, lulucf_pal, public_pal, transport_pal)
beis_la_co2_DT[, subSectorLabelFact := factor(subSectorLabel)]
catList <- unique(beis_la_co2_DT$subSectorLabelFact) # this is not alphabetical - why?
catList2 <- c(catList[1:15],catList[25] , catList[16:24])
names(beis_emissions_colours) <- catList2
# get just the 'wider Hampshire' (Solent) districts
hampshire_beis_la_co2_DT <- getSolent(beis_la_co2_DT)
# set a flag for the 11 districts in case we need it
hampshire_beis_la_co2_DT[, widerHampshire := ifelse(la_name == "Southampton" |
la_name == "Portsmouth" |
la_name == "Isle of Wight",
"Wider Hampshire",
"Hampshire CC")]
message("Number of emissions categories: ", uniqueN(hampshire_beis_la_co2_DT$`LA CO2 Sub-sector`))
## Number of emissions categories: 24
message("Number of districts: ", uniqueN(hampshire_beis_la_co2_DT$`Local Authority`))
## Number of districts: 14
message("Total emissions for 2019: ", round(sum(hampshire_beis_la_co2_DT[`Calendar Year` == 2019]$`Territorial emissions (kt CO2)`)), " kT CO2")
## Total emissions for 2019: 8421 kT CO2
message("Total emissions deemed to be 'within the scope of influence of LAs' for 2019: ", round(sum(hampshire_beis_la_co2_DT[`Calendar Year` == 2019]$`Emissions within the scope of influence of LAs (kt CO2)`)), " kT CO2")
## Total emissions deemed to be 'within the scope of influence of LAs' for 2019: 7664 kT CO2
BEIS have produced a useful mapping tool which can be used to compare the spatial distribution of different emissions sources at district level.
Figure 4.1 shows trends over the period 2005 to 2019 for the CO2 emissions sources in the data. Overall there has been a clear reduction in emissions over the time period. The categories have been colour-coded so that related categories have similar colours in the palette.
h_beis_sum_allYears_DT <- hampshire_beis_la_co2_DT[, .(`Total kT CO2` = sum(`Territorial emissions (kt CO2)`, na.rm = TRUE)), keyby = .(`Calendar Year`, subSectorLabelFact)]
p <- ggplot2::ggplot(h_beis_sum_allYears_DT, aes(x = `Calendar Year`,
y = `Total kT CO2`,
fill = subSectorLabelFact)) +
geom_col(position = "stack") +
scale_fill_manual(values = beis_emissions_colours) +
theme(legend.position = "bottom", ) +
guides(fill=guide_legend(ncol=3)) +
theme(legend.title = element_blank()) +
labs(x = "LA CO2 Sub-sector")
ggplot2::ggsave(here::here("plots", "beis2005_2019_trendsCol.png"), plot = p)
## Saving 7 x 6 in image
p
Figure 4.1: BEIS CO2 emissions by category (Hampshire)
# save this data out for future use
data.table::fwrite(h_beis_sum_allYears_DT, here::here("data","outputs", "all_hampshire_beis_categories_sum_kTCO2_allYears.csv"))
Figure 4.2 shows trends over time for these categories using a line plot to make it easier to see which categories have declined. This makes the recent trends in the reduction of emissions from the increasingly decarbonised electricity grid clearly visible. There has also been a slight decline in emissions due to domestic gas use but few other sources show substantial change except for ‘large industrial installations’.
p <- ggplot2::ggplot(h_beis_sum_allYears_DT, aes(x = `Calendar Year`,
y = `Total kT CO2`,
colour = subSectorLabelFact)) +
geom_line() +
scale_colour_manual(values = beis_emissions_colours) +
theme(legend.position = "bottom", ) +
guides(colour=guide_legend(ncol=3)) +
theme(legend.title = element_blank()) +
labs(x = "LA CO2 Sub-sector")
ggplot2::ggsave(here::here("plots", "beis2005_2019_trendsLine.png"), plot = p)
## Saving 7 x 6 in image
p
Figure 4.2: BEIS CO2 emissions by category (Hampshire)
Figure 4.3 shows an interactive version of the same plot. Hovering over specific lines is useful for identifying the sources.
library(plotly)
plotly::ggplotly(p)
Figure 4.3: BEIS CO2 emissions by category (Hampshire)
Table 4.1 shows the total CO2 emissions under this method for 2019 for all 14 districts.
t <- hampshire_beis_la_co2_DT[`Calendar Year` == 2019, .(`Total kT CO2e` = sum(`Territorial emissions (kt CO2)`, na.rm = TRUE))]
makeFlexTable(t, cap = "BEIS CO2 emissions (kT, 2019)")
Total kT CO2e |
8,421.4 |
sumBEIS_kt <- sum(hampshire_beis_la_co2_DT[`Calendar Year` == 2019]$`Territorial emissions (kt CO2)`)
sum_within_infl <- sum(hampshire_beis_la_co2_DT[`Calendar Year` == 2019]$`Emissions within the scope of influence of LAs (kt CO2)`)
Note that the total emissions deemed to be ‘within the scope of influence of LAs’ for 2019 is 7,664 kT CO2e. Categories deemed by BEIS to be outside local authorities’ scope of influence in this data are:
Table 4.2 shows the total emissions for 2019 ordered by category. Figure 4.4 shows the data as a bar plot ordered by value. The largest emissions sources under this method are clearly visible (domestic gas, transport and domestic electricity).
hampshire_beis_terr_Totals <- hampshire_beis_la_co2_DT[`Calendar Year` == 2019, .(`Total kT CO2` = sum(`Territorial emissions (kt CO2)`, na.rm = TRUE)), keyby = .(subSectorLabelFact)]
absTotal <- sum(hampshire_beis_la_co2_DT[`Calendar Year` == 2019, abs(`Territorial emissions (kt CO2)`)])
hampshire_beis_terr_Totals[, `% of gross` := 100*(`Total kT CO2`/absTotal)]
makeFlexTable(hampshire_beis_terr_Totals[, .(Source = subSectorLabelFact,
`Total kT CO2`, `% of gross`)], cap = "BEIS CO2 emissions sorted by category (Hampshire, 2019)")
Source | Total kT CO2 | % of gross |
Commercial 'Other Fuels' | 10.7 | 0.1 |
Commercial Electricity | 504.6 | 5.2 |
Commercial Gas | 310.1 | 3.2 |
Domestic 'Other Fuels' | 239.4 | 2.4 |
Domestic Electricity | 689.2 | 7.0 |
Domestic Gas | 1,716.0 | 17.5 |
Industry 'Other Fuels' | 419.1 | 4.3 |
Industry Electricity | 326.5 | 3.3 |
Industry Gas | 167.1 | 1.7 |
Industry: Agriculture | 108.6 | 1.1 |
Industry: Large Industrial Installations | 118.9 | 1.2 |
LULUCF Net Emissions: Cropland | 138.4 | 1.4 |
LULUCF Net Emissions: Forest land | -484.3 | -5.0 |
LULUCF Net Emissions: Grassland | -194.5 | -2.0 |
LULUCF Net Emissions: Settlements | 124.2 | 1.3 |
LULUCF Net Emissions: Wetlands | -0.3 | -0.0 |
Public Sector 'Other Fuels' | 4.1 | 0.0 |
Public Sector Electricity | 122.0 | 1.2 |
Public Sector Gas | 188.8 | 1.9 |
Transport Other | 32.1 | 0.3 |
Transport: (A roads) | 1,443.0 | 14.8 |
Transport: (Minor roads) | 1,368.1 | 14.0 |
Transport: (Motorways) | 1,027.3 | 10.5 |
Transport: Diesel Railways | 42.4 | 0.4 |
p <- ggplot2::ggplot(hampshire_beis_terr_Totals, aes(x = reorder(subSectorLabelFact, -`Total kT CO2`),
y = `Total kT CO2`,
fill = subSectorLabelFact)) +
geom_col() +
scale_fill_manual(values = beis_emissions_colours) +
theme(legend.position = "none") +
labs(x = "LA CO2 Sub-sector") +
coord_flip()
ggplot2::ggsave(here::here("plots", "beis2019_col.png"), plot = p)
## Saving 7 x 5 in image
p
Figure 4.4: BEIS CO2 emissions by category (Hampshire, 2019 ordered by emissions value)
# p <- ggplot2::ggplot(subsetDT, aes(x = `Calendar Year`, y = `Territorial emissions (kt CO2)`,
# fill = subSectorLabel,
# colour = subSectorLabel)) +
# geom_col(position = "stack") +
# scale_colour_manual(values = beis_emissions_colours) +
# scale_fill_manual(values = beis_emissions_colours) #
# p
Figure 4.5 shows a cumulative emissions plot for the BEIS 2019 data ordered by the emissions source’s magnitude. The largest increments are therefore due to domestic gas use and various forms of transport. The plot uses vertical lines to show the sources which comprise 50%, 75% and 90% of the total emissions. The plot curls due to the source categories with negative emissions such that the final point represents the total ‘net’ emissions.
t <- hampshire_beis_terr_Totals[order(-`Total kT CO2`)]
t[, cumulative := cumsum(`Total kT CO2`)]
pc_50 <- 0.5*(sum(t$`Total kT CO2`))
pc_75 <- 0.75*(sum(t$`Total kT CO2`))
pc_90 <- 0.90*(sum(t$`Total kT CO2`))
p <- ggplot2::ggplot(t, aes(x = reorder(subSectorLabelFact, -`Total kT CO2`),
y = cumulative,
colour = subSectorLabelFact)) +
geom_point() +
ylim(0,NA) +
scale_colour_manual(values = beis_emissions_colours) +
theme(legend.position = "none") +
labs(x = "LA CO2 Sub-sector",
y = "Cumulative kT CO2/annum",
cap = "Vertical lines % of net emissions") +
coord_flip()
# add reference lines
p <- p +
geom_hline(aes(yintercept = pc_50), colour = "grey") +
geom_hline(aes(yintercept = pc_75), colour = "grey") +
geom_hline(aes(yintercept = pc_90), colour = "grey") +
annotate("text", x = "Transport Other", y = pc_50, label = "50%", colour = "grey") +
annotate("text", x = "Transport Other", y = pc_75, label = "75%", colour = "grey") +
annotate("text", x = "Transport Other", y = pc_90, label = "90%", colour = "grey")
ggplot2::ggsave(here::here("plots", "beis2019_cumulative.png"), plot = p)
## Saving 7 x 5 in image
p
Figure 4.5: Plot of cumulative emissions (BEIS, 2019)
h_beis2019 <- hampshire_beis_la_co2_DT[`Calendar Year` == 2019]
h_beis_allYears <- hampshire_beis_la_co2_DT[, .(kT_co2_beis = sum(`Territorial emissions (kt CO2)`)), keyby = .(`Calendar Year`, `LA CO2 Sub-sector`)]
beis_trans <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Motorway" | `LA CO2 Sub-sector` %like% "roads", `Territorial emissions (kt CO2)`])
beis_motorways <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Motorway", `Territorial emissions (kt CO2)`])
beis_d_gas <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Domestic Gas", `Territorial emissions (kt CO2)`])
beis_d_elec <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Domestic Electricity", `Territorial emissions (kt CO2)`])
beis_forest <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Forest", `Territorial emissions (kt CO2)`])
beis_grassland <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Grass", `Territorial emissions (kt CO2)`])
beis_wetlands <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Wetland", `Territorial emissions (kt CO2)`])
beis_crop <- sum(h_beis2019[`LA CO2 Sub-sector` %like% "Crop", `Territorial emissions (kt CO2)`])
h_beis2019[, zeroC := ifelse(`LA CO2 Sub-sector` %like% "Gas",
0,
`Territorial emissions (kt CO2)`)]
h_beis2019[, zeroC := ifelse(`LA CO2 Sub-sector` %like% "Electricity",
0,
`Territorial emissions (kt CO2)`)]
h_beis2019[, zeroC := ifelse(`LA CO2 Sub-sector` %like% "roads",
0,
`Territorial emissions (kt CO2)`)]
beis_allSum <- sum(h_beis2019$`Territorial emissions (kt CO2)`)
zeroCsum <- sum(h_beis2019$zeroC)
Thus, if we focus on BEIS territorial CO2 only then 75% of emissions are due to:
Taken together the domestic (residential) emissions comprise 29 % of the estimated total.
Negative CO2 emissions (sequestration) sources are:
As Figure 4.5 showed, these levels of sequestration currently provide a negligible offset to the overall emissions. Note also that cropland was a net emitter at 138 kT.
Figure 4.2 showed that the only emissions sources showing substantial decreases over time have been electricity due to grid decarbonisation and (potentially) reductions in some industrial activity as well as the use of ‘Other fuels’ by industry. Although emissions from domestic gas use have also fallen over time they appear to have stabilised since 2014. Perhaps of most concern given their dominant contribution however is the relative stability of road transport emissions over the 2005 - 2019 period.
The first of the CSE datasets estimates emissions under the territorial method but including international aviation and shipping and includes all GHG emissions - carbon dioxide, methane, nitrous oxide and fluorinated gases. As the non-CO2 gases have different warming potentials compared to CO2, emissions are reported in terms of CO2e (carbon dioxide equivalent) rather than simply in terms of kT of gas emitted. The sum of kT CO2e for each source therefore represents the total contribution of all of the emissions to climate warming allowing for their different warming potentials.
The inclusion of GHGs other than just CO2 means that identical categories in the CSE data will most likely have higher emissions estimates than the BEIS equivalent which only account for CO2. As an example, Transport emissions are based on the BEIS CO2 Transport emissions used in the previous section but were “adjusted to account for [additional] non-CO2 greenhouse gas emissions”. This is explained in detail in the CSE methodology paper:
“Total CO2e emissions have been estimated for most sectors by comparison of CO2, N2O and CH4 emission factors for the most prevalent fuel type in the sector and factoring the CO2 emissions accordingly. The exceptions are other transport and LULUCF due to the diverse nature of emission sources; in these cases the CO2 figures have been used as-is.” (p14)
For aviation and shipping:
“National emissions data from these sources are reported by the NAEI, and have been apportioned on a population basis.” (p15)
Finally, fluorinated gases (F-gases):
“are apportioned commensurate with non-domestic electricity emissions, as systems utilising such gases are most prevalent in non-domestic buildings and electrically powered equipment).” (p15)
The following code loads the data and reports basic checks. A full data description can be found in Section 10.2.
# CSE impact tool data
cse_territorial_abs_DT <- data.table::fread(paste0(params$dataPath,
"cse/cse_ImpactTool/", "local-authority-all-territorial-absolute.csv.gz"))
cse_terr_orig <- copy(cse_territorial_abs_DT)
cse_territorial_abs_DT[, la_name := name]
hampshire_cse_territorial_abs_DT <- getSolent(cse_territorial_abs_DT)
# make long form for easy summary etc
lDT <- melt(hampshire_cse_territorial_abs_DT)
# remove Power generation - CSE methodology: "Gridded data area apportioned, point data summed within area. Note: this category overlaps with electricity emissions and is provided for information only"
hampshire_cse_territorial_abs_DT <- lDT[variable != "Power generation (t CO2e)"]
hampshire_cse_territorial_abs_DT[, widerHampshire := ifelse(la_name == "Southampton" |
la_name == "Portsmouth" |
la_name == "Isle of Wight",
"Wider Hampshire",
"Hampshire CC")]
message("Number of emissions categories: ", uniqueN(hampshire_cse_territorial_abs_DT$variable))
## Number of emissions categories: 20
message("Number of districts: ", uniqueN(hampshire_cse_territorial_abs_DT$la_name))
## Number of districts: 14
message("Total emissions check: ", round(sum(hampshire_cse_territorial_abs_DT$value)/1000), " kT CO2e")
## Total emissions check: 12216 kT CO2e
cse_terr_total <- sum(hampshire_cse_territorial_abs_DT$value/1000)
beis_terr_total <- sum(hampshire_beis_terr_Totals$`Total kT CO2`)
diff <- cse_terr_total - beis_terr_total
pc_diff <- 100*diff/beis_terr_total
Table 5.1 shows the total emissions for 2019. This is 45 % increase from the BEIS figure.
t <- hampshire_cse_territorial_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000)]
makeFlexTable(t, cap = "CSE territorial emissions (Hampshire, 2019)")
Total kT CO2e |
12,216.4 |
sumCSETerr_kt <- sum(hampshire_cse_territorial_abs_DT$value)/1000
Table 5.2 shows the total emissions for 2019 by category. Figure 5.1 shows the data as a bar plot. Note that some of the categories do not exactly match those used in the BEIS data but the colour palettes have been kept as similar as possible.
Ignore the (t CO2e) in the table and plot labels - both the table and plot show kT for easy comparison (labels to be fixed).
hampshire_cse_terr_Totals <- hampshire_cse_territorial_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000), keyby = .(variable)]
absTotal <- sum(hampshire_cse_territorial_abs_DT[, abs(value)])/1000
hampshire_cse_terr_Totals[, `% of gross` := 100*(`Total kT CO2e`/absTotal)]
makeFlexTable(hampshire_cse_terr_Totals, cap = "CSE all territorial emissions by category (Hampshire, 2019)")
variable | Total kT CO2e | % of gross |
Housing - Mains gas (t CO2e) | 1,657.5 | 12.7 |
Housing - Electricity (t CO2e) | 841.3 | 6.4 |
Housing - Oil (t CO2e) | 294.0 | 2.3 |
Housing - LPG (t CO2e) | 38.0 | 0.3 |
Housing - Biomass (t CO2e) | 8.0 | 0.1 |
Housing - Coal (t CO2e) | 11.0 | 0.1 |
Industrial and commercial - Electricity (t CO2e) | 1,110.0 | 8.5 |
Industrial and commercial - Mains gas (t CO2e) | 702.5 | 5.4 |
Industrial and commercial - Other Fuels (t CO2e) | 443.4 | 3.4 |
Industrial and commercial - Large industrial consumers (t CO2e) | 81.5 | 0.6 |
Agriculture - Fuel (t CO2e) | 106.7 | 0.8 |
Agriculture - Livestock and crop-related emissions (t CO2e) | 457.0 | 3.5 |
Aviation (t CO2e) | 1,202.6 | 9.2 |
Shipping (t CO2e) | 479.0 | 3.7 |
Diesel fuelled railways (t CO2e) | 45.3 | 0.3 |
F-gases (t CO2e) | 374.1 | 2.9 |
Road Transport (t CO2e) | 4,054.6 | 31.0 |
Other Transport (t CO2e) | 31.2 | 0.2 |
Waste management (t CO2e) | 703.7 | 5.4 |
Land use, land-use change, and forestry (t CO2e) | -425.2 | -3.3 |
# set up the colours
# colours borrowed from https://git.soton.ac.uk/twr1m15/la_emissions_viz/-/blob/master/shiny/app.R
# for details, use set for each sector
cse_terr_domestic_pal <- RColorBrewer::brewer.pal(n = 8, name = "Blues")[3:8] # domestic blues, 6 categories
cse_terr_industry_pal <- RColorBrewer::brewer.pal(n = 8, name = "Greys")[3:8] # industry greys, 6 categories incl Agric
cse_terr_transport_pal <- RColorBrewer::brewer.pal(n = 9, name = "Oranges")[3:7] # transport incl aviation & shipping oranges, 5 categories
cse_terr_other_pal <- RColorBrewer::brewer.pal(n = 6, name = "RdPu")[4:5] # greys, 2 categories waste & F-gases
cse_terr_lulucf_pal <- "#31A354" # pick a green
# for details, combine sets
cse_terr_colours <- c(cse_terr_domestic_pal,
cse_terr_industry_pal,
cse_terr_transport_pal,
cse_terr_lulucf_pal,
cse_terr_other_pal)
hampshire_cse_territorial_abs_DT[, variableFact := factor(variable)]
cse_terr_catList <- unique(hampshire_cse_territorial_abs_DT$variableFact) # this is not alphabetical - why?
# force into the same order as the colours
cse_terr_catList2 <- c(cse_terr_catList[1:15], cse_terr_catList[17:18],
cse_terr_catList[20], cse_terr_catList[16],cse_terr_catList[19] )
names(cse_terr_colours) <- cse_terr_catList2 # associate the names (in this order) with the colours
p <- ggplot2::ggplot(hampshire_cse_terr_Totals, aes(x = reorder(variable, -`Total kT CO2e`),
y = `Total kT CO2e`,
fill = variable)) +
geom_col() +
scale_fill_manual(values = cse_terr_colours) +
theme(legend.position = "none") +
labs(x = "Emissions source") +
coord_flip()
ggplot2::ggsave(here::here("plots", "cseTerr_col.png"), plot = p)
## Saving 7 x 5 in image
p
Figure 5.1: CSE all territorial emissions by category (Hampshire, 2019 ordered by emissions value)
# p <- ggplot2::ggplot(subsetDT, aes(x = `Calendar Year`, y = `Territorial emissions (kt CO2)`,
# fill = subSectorLabel,
# colour = subSectorLabel)) +
# geom_col(position = "stack") +
# scale_colour_manual(values = beis_emissions_colours) +
# scale_fill_manual(values = beis_emissions_colours) #
# p
Figure 5.2 shows a cumulative emissions plot for the CSE territorial data ordered by the emissions source’s magnitude. The largest increments are therefore due to personal transport, domestic gas use and aviation. The plot shows the sources which comprise 50%, 75% and 90% of the total emissions. The plot curls due to the source categories with negative emissions such that the final point represents the total ‘net’ emissions.
t <- hampshire_cse_terr_Totals[order(-`Total kT CO2e`)]
t[, cumulative := cumsum(`Total kT CO2e`)]
pc_50 <- 0.5*(sum(t$`Total kT CO2e`))
pc_75 <- 0.75*(sum(t$`Total kT CO2e`))
pc_90 <- 0.90*(sum(t$`Total kT CO2e`))
p <- ggplot2::ggplot(t, aes(x = reorder(variable, -`Total kT CO2e`),
y = cumulative,
colour = variable)) +
scale_colour_manual(values = cse_terr_colours) +
geom_point() +
ylim(0,NA) +
theme(legend.position = "none") +
labs(x = "Emissions source",
y = "Cumulative kT CO2e/annum",
cap = "Vertical lines % of net emissions") +
coord_flip()
# add reference lines
p <- p +
geom_hline(aes(yintercept = pc_50), colour = "grey") +
geom_hline(aes(yintercept = pc_75), colour = "grey") +
geom_hline(aes(yintercept = pc_90), colour = "grey") +
annotate("text", x = "Other Transport (t CO2e)", y = pc_50, label = "50%", colour = "grey") +
annotate("text", x = "Other Transport (t CO2e)", y = pc_75, label = "75%", colour = "grey") +
annotate("text", x = "Other Transport (t CO2e)", y = pc_90, label = "90%", colour = "grey")
ggplot2::ggsave(here::here("plots", "cseTerr_cumulative.png"), plot = p)
## Saving 7 x 5 in image
p
Figure 5.2: Plot of cumulative emissions (BEIS, 2019)
cse_terr_Transport <- hampshire_cse_terr_Totals[variable %like% "Road Trans"]$`Total kT CO2e`
beis_terr_Transport <- sum(hampshire_beis_terr_Totals[subSectorLabelFact %like% "road" |
subSectorLabelFact %like% "Motorway"]$`Total kT CO2`)
cse_terr_DomGas <- hampshire_cse_terr_Totals[variable %like% "Housing - Mains gas"]$`Total kT CO2e`
beis_terr_DomGas <- hampshire_beis_terr_Totals[subSectorLabelFact %like% "Domestic Gas"]$`Total kT CO2`
cse_terr_aviation <- hampshire_cse_terr_Totals[variable %like% "Aviation"]$`Total kT CO2e`
cse_terr_ind_elec <- hampshire_cse_terr_Totals[variable %like% "Industrial and commercial - Electricity"]$`Total kT CO2e`
cse_terr_d_elec <- hampshire_cse_terr_Totals[variable %like% "Housing - Electricity"]$`Total kT CO2e`
cse_terr_shipping <- hampshire_cse_terr_Totals[variable %like% "Shipping"]$`Total kT CO2e`
cse_terr_fgas <- hampshire_cse_terr_Totals[variable %like% "F-gases"]$`Total kT CO2e`
cse_terr_waste <- hampshire_cse_terr_Totals[variable %like% "Waste"]$`Total kT CO2e`
cse_terr_AgricLivestock <- hampshire_cse_terr_Totals[variable %like% "Agriculture - Livestock"]$`Total kT CO2e`
cse_terr_diff_main <- cse_terr_aviation + cse_terr_shipping + cse_terr_fgas + cse_terr_waste
pc_diff_main <- 100*(cse_terr_diff_main/(sumCSETerr_kt - sumBEIS_kt))
pc_tot_diff <- 100*((sumCSETerr_kt-sumBEIS_kt)/sumBEIS_kt)
Thus, if we focus on CSE territorial all GHG emissions, 75% of emissions are due to:
These figures draw attention to the significant emissions due to aviation which are not included in the BEIS LA level data. They also draw attention to the level of all GHG emissions from waste management. Indeed, 73 % of the 45 % increase from the BEIS figure comprises emissions from:
Note that under the CSE approach, Agriculture - Livestock and crop-related emissions
amount to 457 T CO2e compared to the BEIS value for Cropland
at 138 T CO2e which gives some indication of the additional emissions due to methane (noting that fuel used for agriculture is already in a separate category under the CSE approach - see methodology, p15).
These are calculated under the consumption emissions method and include all greenhouse gas emissions. They are also therefore presented in kT CO2e.
The following code loads the data and reports basic checks. A full data description can be found in Section 10.3.
cse_consumption_abs_DT <- data.table::fread(paste0(params$dataPath,
"cse/cse_ImpactTool/", "local-authority-all-consumption-absolute.csv.gz"))
cse_cons_orig <- copy(cse_consumption_abs_DT)
cse_consumption_abs_DT[, la_name := name]
hampshire_cse_consumption_abs_DT <- getSolent(cse_consumption_abs_DT)
# make long form for easy summary etc
hampshire_cse_consumption_abs_DT <- melt(hampshire_cse_consumption_abs_DT)
hampshire_cse_consumption_abs_DT[, widerHampshire := ifelse(la_name == "Southampton" |
la_name == "Portsmouth" |
la_name == "Isle of Wight",
"Wider Hampshire",
"Hampshire CC")]
message("Number of emissions categories: ", uniqueN(hampshire_cse_consumption_abs_DT$variable))
## Number of emissions categories: 15
message("Number of districts: ", uniqueN(hampshire_cse_consumption_abs_DT$la_name))
## Number of districts: 14
message("Total emissions check: ", round(sum(hampshire_cse_consumption_abs_DT$value)/1000), " kT CO2e")
## Total emissions check: 13633 kT CO2e
Table 6.1 shows the total emissions for 2019.
t <- hampshire_cse_consumption_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000)]
makeFlexTable(t, cap = "CSE consumption emissions (Hampshire, 2019)")
Total kT CO2e |
13,633.3 |
sumCSECons_kt <- sum(hampshire_cse_consumption_abs_DT$value)/1000
Table 6.2 shows the total emissions for 2019 by category. Figure 6.1 shows the data as a bar plot. Note that most of the categories do not exactly match those used in the BEIS/CSE territorial-based data but again, the colour palettes have been kept as similar as possible.
The largest emissions sources under this method are clearly visible (purchased goods, services and food/diet and gas-use).
Ignore the (t CO2e) in the label - the plot shows kT for easy comparison (labels to be fixed).
hampshire_cse_cons_Totals <- hampshire_cse_consumption_abs_DT[, .(`Total kT CO2e` = sum(value, na.rm = TRUE)/1000), keyby = .(variable)]
absTotal <- sum(hampshire_cse_consumption_abs_DT[, abs(value)])/1000
hampshire_cse_cons_Totals[, `% of gross` := 100*(`Total kT CO2e`/absTotal)]
makeFlexTable(hampshire_cse_cons_Totals[, .(Source = variable,
`Total kT CO2e`, `% of gross`)], cap = "CSE all consumption emissions ordered by category (Hampshire, 2019)")
Source | Total kT CO2e | % of gross |
Consumption of goods and services - Purchase of goods (t CO2e) | 2,623.4 | 19.2 |
Consumption of goods and services - Use of services (t CO2e) | 1,194.7 | 8.8 |
Consumption of goods and services - Other consumption related emissions (t CO2e) | 1,034.1 | 7.6 |
Food and diet - Meat and fish (t CO2e) | 1,722.0 | 12.6 |
Food and diet - Other food and drink (t CO2e) | 1,413.7 | 10.4 |
Housing - Mains gas (t CO2e) | 1,657.5 | 12.2 |
Housing - Electricity (t CO2e) | 841.3 | 6.2 |
Housing - Oil (t CO2e) | 294.0 | 2.2 |
Housing - LPG (t CO2e) | 38.0 | 0.3 |
Housing - Biomass (t CO2e) | 8.0 | 0.1 |
Housing - Coal (t CO2e) | 11.0 | 0.1 |
Travel - Flights (t CO2e) | 969.8 | 7.1 |
Travel - Public transport (t CO2e) | 399.2 | 2.9 |
Travel - Private transport (t CO2e) | 1,378.2 | 10.1 |
Waste - Waste (t CO2e) | 48.4 | 0.4 |
library(stringr)
hampshire_cse_cons_Totals[, variable_n := stringr::str_remove(variable, "Consumption of goods and services - ")]
# set up the colours
# colours borrowed from https://git.soton.ac.uk/twr1m15/la_emissions_viz/-/blob/master/shiny/app.R
# for details, use set for each sector
cse_cons_cons_pal <- RColorBrewer::brewer.pal(n = 8, name = "YlOrBr")[3:5] # consumption, 3 categories
cse_cons_food_pal <- RColorBrewer::brewer.pal(n = 8, name = "Purples")[3:4] # food , 2 categories
cse_cons_domestic_pal <- RColorBrewer::brewer.pal(n = 8, name = "Blues")[3:8] # domestic blues, 6 categories
cse_cons_travel_pal <- RColorBrewer::brewer.pal(n = 9, name = "Oranges")[6:8] # transport 3 categories
cse_cons_waste_pal <- "#C51B8A" # pick a purple
# for details, combine sets
cse_cons_colours <- c(cse_cons_cons_pal,
cse_cons_food_pal,
cse_cons_domestic_pal,
cse_cons_travel_pal,
cse_cons_waste_pal)
hampshire_cse_cons_Totals[, variableFact := factor(variable_n)] # has to be this one to match the names
cse_cons_catList <- unique(hampshire_cse_cons_Totals$variableFact) # correct order
names(cse_cons_colours) <- cse_cons_catList # associate the names (in this order) with the colours
p <- ggplot2::ggplot(hampshire_cse_cons_Totals, aes(x = reorder(variable_n, -`Total kT CO2e`),
y = `Total kT CO2e`,
fill = variable_n)) +
geom_col() +
scale_fill_manual(values = cse_cons_colours) +
theme(legend.position = "none") +
labs(x = "Emissions source") +
coord_flip()
ggplot2::ggsave(here::here("plots", "cseCons_col.png"), plot = p)
## Saving 7 x 5 in image
p
Figure 6.1: CSE all territorial emissions ordered by category value (Hampshire, 2019 ordered by emissions value)
Figure 6.2 shows a cumulative emissions plot for the CSE territorial data ordered by the emissions source’s magnitude. The largest increments are therefore due to consumption of goods and services, food and diet (meat & fish) and mains gas use. The plot shows the sources which comprise 50%, 75% and 90% of the total emissions.
t <- hampshire_cse_cons_Totals[order(-`Total kT CO2e`)]
t[, cumulative := cumsum(`Total kT CO2e`)]
pc_50 <- 0.5*(sum(t$`Total kT CO2e`))
pc_75 <- 0.75*(sum(t$`Total kT CO2e`))
pc_90 <- 0.90*(sum(t$`Total kT CO2e`))
p <- ggplot2::ggplot(t, aes(x = reorder(variable_n, -`Total kT CO2e`),
y = cumulative,
colour = variable_n)) +
geom_point() +
scale_colour_manual(values = cse_cons_colours) +
ylim(0,NA) +
theme(legend.position = "none") +
labs(x = "Emissions source",
y = "Cumulative kT CO2e/annum",
cap = "Vertical lines % of net emissions") +
coord_flip()
# add reference lines
p <- p +
geom_hline(aes(yintercept = pc_50), colour = "grey") +
geom_hline(aes(yintercept = pc_75), colour = "grey") +
geom_hline(aes(yintercept = pc_90), colour = "grey") +
annotate("text", x = "Housing - Oil (t CO2e)", y = pc_50, label = "50%", colour = "grey") +
annotate("text", x = "Housing - Oil (t CO2e)", y = pc_75, label = "75%", colour = "grey") +
annotate("text", x = "Housing - Oil (t CO2e)", y = pc_90, label = "90%", colour = "grey")
ggplot2::ggsave(here::here("plots", "cseCons_cumulative.png"), plot = p)
## Saving 7 x 5 in image
p
Figure 6.2: Plot of cumulative emissions (BEIS, 2019)
cse_cons_purch <- hampshire_cse_cons_Totals[variable %like% "Purchase of goods"]$`Total kT CO2`
cse_cons_food_meat <- hampshire_cse_cons_Totals[variable %like% "Meat and fish"]$`Total kT CO2`
cse_cons_DomGas <- hampshire_cse_cons_Totals[variable %like% "Housing - Mains gas"]$`Total kT CO2`
cse_cons_food_other <- hampshire_cse_cons_Totals[variable %like% "Other food and drink"]$`Total kT CO2`
cse_cons_private_trans <- hampshire_cse_cons_Totals[variable %like% "Private transport"]$`Total kT CO2`
cse_cons_use <- hampshire_cse_cons_Totals[variable %like% "Use of"]$`Total kT CO2`
cse_cons_flights <- hampshire_cse_cons_Totals[variable %like% "Flights"]$`Total kT CO2`
cons_sum <- cse_cons_purch + cse_cons_food_meat + cse_cons_DomGas + cse_cons_food_other + cse_cons_private_trans
con_sum_pc <- 100*(cons_sum/sumCSECons_kt)
Thus, if we focus on CSE consumption-based emissions which include emissions ‘outsourced’ to other geographical areas (including overseas), 75% of emissions sources are due to:
Emissions due to Flights (970 kT CO2e) are lower than the territorial based Aviation
emissions values since emissions due to freight are included under ‘Goods and services’.
This approach to emissions accounting shows the extent to which the consumption of goods and services, diet and food as well as transport and domestic gas use dominate Hampshire’s ‘consumption’ emissions footprint.
Table 7.1 and Figure 7.1 show the total emissions under each method and source per district. As expected, in all cases CSE territorial emissions are higher than BEIS territorial emissions. Similarly, in most cases CSE consumption emissions are higher than territorial emissions except for Winchester, Test Valley, Basingstoke and Deane and New Forest. More detailed analysis of the underlying data would be required to understand the reasons for this.
# save the totals out at LA level for comparison with other data
districts_beis_2019 <- hampshire_beis_la_co2_DT[`Calendar Year` == 2019, .(`BEIS territorial emissions (kt CO2, 2019)` = sum(`Territorial emissions (kt CO2)`),
`Mid-year population (thousands, 2019)` = mean(`Mid-year Population (thousands)`)),
keyby = .(District = la_name)]
districts_cse_terr <- hampshire_cse_territorial_abs_DT[, .(`CSE territorial emissions (kt CO2e)` = sum(value)/1000),
keyby = .(District = la_name)]
districts_cse_cons <- hampshire_cse_consumption_abs_DT[, .(`CSE consumption emissions (kt CO2e)` = sum(value)/1000),
keyby = .(District = la_name)]
districts <- districts_beis_2019[districts_cse_terr][districts_cse_cons]
t <- districts[, .(District, `BEIS territorial emissions (kt CO2, 2019)`,
`CSE territorial emissions (kt CO2e)`,
`CSE consumption emissions (kt CO2e)`)]
makeFlexTable(t,cap = "Totals per district by method and source (kT)")
District | BEIS territorial emissions (kt CO2, 2019) | CSE territorial emissions (kt CO2e) | CSE consumption emissions (kt CO2e) |
Basingstoke and Deane | 944.5 | 1,368.4 | 1,309.4 |
East Hampshire | 588.8 | 867.3 | 994.4 |
Eastleigh | 561.1 | 750.5 | 902.3 |
Fareham | 458.5 | 640.1 | 799.9 |
Gosport | 202.2 | 305.5 | 497.1 |
Hart | 472.3 | 632.9 | 782.8 |
Havant | 404.2 | 557.2 | 786.0 |
Isle of Wight | 463.9 | 800.1 | 999.8 |
New Forest | 928.0 | 1,404.4 | 1,352.9 |
Portsmouth | 751.1 | 1,117.9 | 1,192.4 |
Rushmoor | 349.3 | 472.1 | 624.9 |
Southampton | 722.6 | 1,039.5 | 1,386.2 |
Test Valley | 792.8 | 1,156.5 | 986.4 |
Winchester | 782.0 | 1,104.1 | 1,018.7 |
data.table::fwrite(districts,
here::here("data", "outputs","all_hampshire_districts_sum_ktCO2(e)_v1_methods.csv"))
plotDT <- melt(districts[, .( District, `BEIS territorial emissions (kt CO2, 2019)`, `CSE territorial emissions (kt CO2e)`, `CSE consumption emissions (kt CO2e)`)])
p <- ggplot2::ggplot(plotDT, aes(x = reorder(District, -value), y = value, fill = variable)) +
geom_col(position = "dodge") +
scale_fill_discrete(name = "Method") +
coord_flip() +
theme(legend.position="bottom") +
labs(x = "District",
y = "kT CO2(e)",
cap = "Ordered by CSE consumption emissions")
ggplot2::ggsave(here::here("plots", "allMethodsComparison_by_districts.png"), plot = p)
## Saving 7 x 5 in image
p
Figure 7.1: Total emissions per district by method
sumBEIS_hcc_kt <- sum(hampshire_beis_la_co2_DT[widerHampshire != "Wider Hampshire" & `Calendar Year` == 2019, `Territorial emissions (kt CO2)`])
Overall, the total GHG emissions for Hampshire under different methodologies were found to be:
Given that the Carbon Trust area excludes Portsmouth, Southampton and the Isle of Wight it is unclear why this total is similar to the ‘14 local authorities’ BEIS data.
Which of these accounting methods we choose to focus on depends what we want to show and what we want to achieve. The same is true of the emissions subcategories. The BEIS data gives a partial view on territorial emissions as it excludes all non-CO2 emissions and also excludes aviation (flights & freight) and shipping. The CSE territorial emissions data includes these ‘missing’ emissions and so gives a much larger total. The CSE consumption emissions are (generally) larger still because they include emissions ‘off-shored’ by our consumption of goods and services produced outside the Hampshire area.
Table 8.1 compares the Carbon Trust, BEIS and CSE data to the extent that it is possible to do so from the data reported here.
hampshire_beis_terr_Totals[, compareLab := ifelse(subSectorLabelFact %like% "Transport", "Transport", "Other")]
hampshire_beis_terr_Totals[, compareLab := ifelse(subSectorLabelFact %like% "Domestic", "Residential", compareLab)]
hampshire_beis_terr_Totals[, compareLab := ifelse(subSectorLabelFact %like% "Commercial" | subSectorLabelFact %like% "Industry", "Industry & Commercial", compareLab)]
# NB - Public is coded to Other
hampshire_beis_Compare <- hampshire_beis_terr_Totals[, .(ktco2_beis = sum(`Total kT CO2`)), keyby = .(compareLab)]
hampshire_beis_Compare[, ktco2_beis_pc := 100*(ktco2_beis / sum(hampshire_beis_Compare$ktco2_beis))]
hampshire_cse_terr_Totals[, compareLab := ifelse(variable %like% "Transport", "Transport", "Other")]
hampshire_cse_terr_Totals[, compareLab := ifelse(variable %like% "Housing", "Residential", compareLab)]
hampshire_cse_terr_Totals[, compareLab := ifelse(variable %like% "Industrial" | variable %like% "Power", "Industry & Commercial", compareLab)]
hampshire_cse_terr_Totals[, compareLab := ifelse(variable %like% "Aviation", "Aviation", compareLab)]
hampshire_cse_terr_Compare <- hampshire_cse_terr_Totals[, .(ktco2_cse_terr = sum(`Total kT CO2e`)), keyby = .(compareLab)]
hampshire_cse_terr_Compare[, ktco2_cse_terr_pc := 100*(ktco2_cse_terr / sum(hampshire_cse_terr_Compare$ktco2_cse_terr))]
hampshire_cse_cons_Totals[, compareLab := ifelse(variable %like% "Travel", "Transport", "Other")]
hampshire_cse_cons_Totals[, compareLab := ifelse(variable %like% "Housing", "Residential", compareLab)]
hampshire_cse_cons_Totals[, compareLab := ifelse(variable %like% "Consumption", "Consumption of goods & services", compareLab)]
hampshire_cse_cons_Totals[, compareLab := ifelse(variable %like% "Food", "Food & diet", compareLab)]
hampshire_cse_cons_Totals[, compareLab := ifelse(variable %like% "Travel - Flights", "Aviation", compareLab)]
hampshire_cse_cons_Compare <- hampshire_cse_cons_Totals[, .(ktco2_cse_cons = sum(`Total kT CO2e`)), keyby = .(compareLab)]
hampshire_cse_cons_Compare[, ktco2_cse_cons_pc := 100*(ktco2_cse_cons / sum(hampshire_cse_cons_Compare$ktco2_cse))]
setkey(hampshire_beis_Compare, compareLab)
setkey(hampshire_cse_terr_Compare, compareLab)
setkey(hampshire_cse_cons_Compare, compareLab)
setkey(hampshire_CT_terr_Totals, compareLab)
dt <- hampshire_CT_terr_Totals[hampshire_beis_Compare][hampshire_cse_terr_Compare]
t <- merge(dt, hampshire_cse_cons_Compare, all = TRUE)
makeFlexTable(t[,.(Source = compareLab,
CarbonTrust = ktco2_CT,
`Carbon Trust %` = ktco2_CT_pc,
BEIS = ktco2_beis,
`BEIS %` = ktco2_beis_pc,
`CSE Territorial` = ktco2_cse_terr,
`CSE Territorial %` = ktco2_cse_terr_pc,
`CSE Consumption` = ktco2_cse_cons,
`CSE Consumption %` = ktco2_cse_cons_pc)][order(CarbonTrust)], cap = "Comparing emissions baselines (values = kT CO2e or %)")
Source | CarbonTrust | Carbon Trust % | BEIS | BEIS % | CSE Territorial | CSE Territorial % | CSE Consumption | CSE Consumption % |
Residential | 2,011 | 22.7 | 2,644.5 | 31.4 | 2,849.8 | 23.3 | 2,849.8 | 20.9 |
Transport | 3,157 | 36.1 | 3,912.9 | 46.5 | 4,085.8 | 33.4 | 1,777.3 | 13.0 |
Industry & Commercial | 3,278 | 38.8 | 1,965.6 | 23.3 | 2,337.4 | 19.1 | ||
Aviation | 1,202.6 | 9.8 | 969.8 | 7.1 | ||||
Consumption of goods & services | 4,852.3 | 35.6 | ||||||
Food & diet | 3,135.7 | 23.0 | ||||||
Other | -101.6 | -1.2 | 1,740.7 | 14.2 | 48.4 | 0.4 |
The table shows that the two main policy foci of the Hampshire County Council Climate Change Strategy - Transport and Residential - contribute at least 30% of emissions irrespective of the emissions accounting method used.
The Carbon Trust estimate for Industrial & Commercial emissions for the ‘11 districts’ appears to be considerably larger than the comparable BEIS ‘14 districts’ value. This may be due to the exclusion in the BEIS data of single large power stations whose emissions are ‘shared’ across all grid electricity users, not just those in the relevant district. As a result the BEIS proportions for Transport and Residential emissions are higher (77% combined) compared to 58% in the Carbon Trust estimates for 11 districts.
Although the ‘14 districts’ BEIS and CSE (territorial) main categories are broadly similar in terms of kT CO2(e), the percentage contribution of Transport and Residential emissions are considerably lower (56%) for the CSE data. This is due to the inclusion of additional sources in the CSE data such as Aviation (10%, shown) shipping and F-gases as well as all GHG emissions (not just CO2) from transport, waste, agriculture, and others (see Table 5.2 for details). Collectively these represent over 20% of county-wide emissions under the CSE territorial methodology.
Finally, the CSE consumption emissions data demonstrates the significant contribution that consumption of services as well as food and diet make to our ‘extended’ emissions footprint if we consider the emissions we have effectively off-shored to other geographical areas. This method transfers all of the industrial/commercial emissions and a significant proportion of the Transport/Aviation emissions to ‘Good and services’ and ‘Food and diet’ (i.e. supply chain transportation and distribution). As a result emissions from homes and private transport comprise only 33% of the total under this approach, flights a further 7% while the total for consumption of goods and services & food is ~58%
Based on the preceding discussion, this report makes the following recommendations to HCC:
Future work could:
Original data (all districts)
skimr::skim(beis_orig)
Name | beis_orig |
Number of rows | 129388 |
Number of columns | 14 |
Key | NULL |
_______________________ | |
Column type frequency: | |
character | 9 |
numeric | 5 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
Country | 0 | 1 | 0 | 16 | 153 | 5 | 0 |
Country Code | 0 | 1 | 0 | 9 | 153 | 5 | 0 |
Region | 0 | 1 | 0 | 24 | 153 | 13 | 0 |
Region Code | 0 | 1 | 0 | 9 | 153 | 13 | 0 |
Second Tier Authority | 0 | 1 | 0 | 28 | 153 | 152 | 0 |
Local Authority | 0 | 1 | 4 | 54 | 0 | 382 | 0 |
Local Authority Code | 0 | 1 | 0 | 9 | 123 | 381 | 0 |
LA CO2 Sector | 0 | 1 | 6 | 13 | 0 | 6 | 0 |
LA CO2 Sub-sector | 0 | 1 | 11 | 45 | 0 | 25 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Calendar Year | 0 | 1 | 2012.00 | 4.32 | 2005.00 | 2008.00 | 2012.00 | 2016.00 | 2019.00 | ▇▇▇▇▇ |
Territorial emissions (kt CO2) | 0 | 1 | 51.33 | 169.69 | -3256.72 | 1.67 | 15.38 | 65.51 | 9529.02 | ▁▇▁▁▁ |
Emissions within the scope of influence of LAs (kt CO2) | 0 | 1 | 42.80 | 83.15 | 0.00 | 0.00 | 8.34 | 54.76 | 4025.26 | ▇▁▁▁▁ |
Mid-year Population (thousands) | 153 | 1 | 169.41 | 114.48 | 2.21 | 97.61 | 134.93 | 208.18 | 1141.82 | ▇▂▁▁▁ |
Area (km2) | 153 | 1 | 660.72 | 1637.80 | 3.15 | 97.96 | 275.62 | 661.06 | 26473.95 | ▇▁▁▁▁ |
Original data (all districts)
skimr::skim(cse_terr_orig)
Name | cse_terr_orig |
Number of rows | 331 |
Number of columns | 23 |
Key | NULL |
_______________________ | |
Column type frequency: | |
character | 2 |
numeric | 21 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
id | 0 | 1 | 9 | 9 | 0 | 331 | 0 |
name | 0 | 1 | 4 | 35 | 0 | 331 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Housing - Mains gas (t CO2e) | 0 | 1 | 190852.62 | 182673.33 | 0.00 | 97220.00 | 131038.45 | 223354.21 | 1385272.76 | ▇▁▁▁▁ |
Housing - Electricity (t CO2e) | 0 | 1 | 86663.13 | 83524.18 | 1943.34 | 44655.72 | 63196.10 | 93121.88 | 663982.08 | ▇▁▁▁▁ |
Housing - Oil (t CO2e) | 0 | 1 | 37606.39 | 69741.81 | 1.04 | 714.59 | 8789.51 | 48160.27 | 441375.15 | ▇▁▁▁▁ |
Housing - LPG (t CO2e) | 0 | 1 | 4167.07 | 7371.96 | 0.00 | 469.25 | 1778.23 | 4239.50 | 61245.83 | ▇▁▁▁▁ |
Housing - Biomass (t CO2e) | 0 | 1 | 771.86 | 1168.18 | 0.52 | 159.88 | 405.37 | 853.88 | 8950.32 | ▇▁▁▁▁ |
Housing - Coal (t CO2e) | 0 | 1 | 1829.39 | 2952.05 | 0.00 | 427.02 | 845.21 | 1835.48 | 20794.73 | ▇▁▁▁▁ |
Industrial and commercial - Electricity (t CO2e) | 0 | 1 | 132300.07 | 137891.68 | 2252.58 | 59765.86 | 86400.95 | 141105.07 | 923959.45 | ▇▁▁▁▁ |
Industrial and commercial - Mains gas (t CO2e) | 0 | 1 | 113795.30 | 125630.61 | 0.00 | 42721.85 | 70456.50 | 130151.33 | 858852.28 | ▇▁▁▁▁ |
Industrial and commercial - Other Fuels (t CO2e) | 0 | 1 | 53872.07 | 68865.42 | 1180.35 | 19306.49 | 33291.08 | 54312.41 | 475748.40 | ▇▁▁▁▁ |
Industrial and commercial - Large industrial consumers (t CO2e) | 0 | 1 | 73703.57 | 409783.50 | 0.00 | 20.27 | 551.86 | 7433.72 | 6255114.95 | ▇▁▁▁▁ |
Power generation (t CO2e) | 0 | 1 | 202476.76 | 820528.91 | 0.09 | 7.46 | 1783.81 | 13920.26 | 8217271.92 | ▇▁▁▁▁ |
Agriculture - Fuel (t CO2e) | 0 | 1 | 16214.05 | 31376.01 | 19.35 | 1050.88 | 5662.08 | 17396.81 | 263250.12 | ▇▁▁▁▁ |
Agriculture - Livestock and crop-related emissions (t CO2e) | 0 | 1 | 110524.88 | 240350.88 | 0.16 | 3302.14 | 28357.92 | 99250.50 | 2100904.13 | ▇▁▁▁▁ |
Aviation (t CO2e) | 0 | 1 | 130491.98 | 134944.30 | 1357.78 | 62146.89 | 85907.73 | 154781.14 | 1118247.31 | ▇▁▁▁▁ |
Shipping (t CO2e) | 0 | 1 | 51973.77 | 53747.08 | 540.79 | 24752.54 | 34216.27 | 61647.92 | 445387.71 | ▇▁▁▁▁ |
Diesel fuelled railways (t CO2e) | 0 | 1 | 6482.85 | 9255.80 | 0.00 | 786.59 | 2905.88 | 7627.29 | 66721.19 | ▇▁▁▁▁ |
F-gases (t CO2e) | 0 | 1 | 44589.47 | 46474.02 | 759.20 | 20143.06 | 29119.96 | 47557.04 | 311404.67 | ▇▁▁▁▁ |
Road Transport (t CO2e) | 0 | 1 | 418242.72 | 490108.99 | 491.38 | 181517.18 | 295469.30 | 440058.82 | 4070305.68 | ▇▁▁▁▁ |
Other Transport (t CO2e) | 0 | 1 | 7998.78 | 14329.64 | 194.29 | 1348.54 | 2844.33 | 8448.24 | 118796.62 | ▇▁▁▁▁ |
Waste management (t CO2e) | 0 | 1 | 87630.55 | 118715.34 | 47.04 | 21207.78 | 45799.40 | 93602.67 | 811864.78 | ▇▁▁▁▁ |
Land use, land-use change, and forestry (t CO2e) | 0 | 1 | -21778.97 | 79199.08 | -1114266.33 | -22216.81 | -5665.84 | -1378.72 | 290789.88 | ▁▁▁▇▁ |
Original data (all districts)
skimr::skim(cse_cons_orig)
Name | cse_cons_orig |
Number of rows | 331 |
Number of columns | 17 |
Key | NULL |
_______________________ | |
Column type frequency: | |
character | 2 |
numeric | 15 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
id | 0 | 1 | 9 | 9 | 0 | 331 | 0 |
name | 0 | 1 | 4 | 35 | 0 | 331 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Consumption of goods and services - Purchase of goods (t CO2e) | 0 | 1 | 268862.96 | 254028.37 | 3253.64 | 137135.19 | 187813.51 | 297865.53 | 2009457.74 | ▇▁▁▁▁ |
Consumption of goods and services - Use of services (t CO2e) | 0 | 1 | 122686.78 | 115963.99 | 1703.23 | 62807.03 | 83275.82 | 138173.10 | 916269.26 | ▇▁▁▁▁ |
Consumption of goods and services - Other consumption related emissions (t CO2e) | 0 | 1 | 103039.49 | 98010.77 | 680.97 | 53703.24 | 72993.60 | 112484.27 | 786593.11 | ▇▁▁▁▁ |
Food and diet - Meat and fish (t CO2e) | 0 | 1 | 180030.07 | 169391.00 | 2258.79 | 89337.21 | 123557.75 | 206969.04 | 1335364.18 | ▇▁▁▁▁ |
Food and diet - Other food and drink (t CO2e) | 0 | 1 | 146601.40 | 138141.41 | 1707.71 | 73927.36 | 101001.71 | 166610.40 | 1093305.47 | ▇▁▁▁▁ |
Housing - Mains gas (t CO2e) | 0 | 1 | 190852.62 | 182673.33 | 0.00 | 97220.00 | 131038.45 | 223354.21 | 1385272.76 | ▇▁▁▁▁ |
Housing - Electricity (t CO2e) | 0 | 1 | 86663.13 | 83524.18 | 1943.34 | 44655.72 | 63196.10 | 93121.88 | 663982.08 | ▇▁▁▁▁ |
Housing - Oil (t CO2e) | 0 | 1 | 37606.39 | 69741.81 | 1.04 | 714.59 | 8789.51 | 48160.27 | 441375.15 | ▇▁▁▁▁ |
Housing - LPG (t CO2e) | 0 | 1 | 4167.07 | 7371.96 | 0.00 | 469.25 | 1778.23 | 4239.50 | 61245.83 | ▇▁▁▁▁ |
Housing - Biomass (t CO2e) | 0 | 1 | 771.86 | 1168.18 | 0.52 | 159.88 | 405.37 | 853.88 | 8950.32 | ▇▁▁▁▁ |
Housing - Coal (t CO2e) | 0 | 1 | 1829.39 | 2952.05 | 0.00 | 427.02 | 845.21 | 1835.48 | 20794.73 | ▇▁▁▁▁ |
Travel - Flights (t CO2e) | 0 | 1 | 99293.70 | 97880.76 | 1263.94 | 49836.38 | 70791.32 | 104950.66 | 755526.40 | ▇▁▁▁▁ |
Travel - Public transport (t CO2e) | 0 | 1 | 42579.54 | 40346.20 | 650.93 | 21713.78 | 29766.72 | 46779.59 | 316474.05 | ▇▁▁▁▁ |
Travel - Private transport (t CO2e) | 0 | 1 | 145632.98 | 140132.03 | 2106.17 | 75665.79 | 105668.52 | 151288.59 | 1113486.12 | ▇▁▁▁▁ |
Waste - Waste (t CO2e) | 0 | 1 | 6970.62 | 9644.02 | 98.62 | 2610.51 | 4438.13 | 8138.54 | 107477.57 | ▇▁▁▁▁ |
Analysis completed in 13.34 seconds ( 0.22 minutes) using knitr in RStudio with R version 4.2.1 (2022-06-23) running on x86_64-apple-darwin17.0.