The asf_heat_pump_suitability
repo contains the code used to calculate heat pump suitability scores for lower-layer
super output areas (LSOAs) in England and Wales using domestic EPC data and supplementary sources. Scores are
weight-adjusted for LSOAs where possible to reduce bias.
Read more about the project here.
direnv
and conda
direnv allow
make install
to configure the development environment:
pre-commit
conda activate asf_heat_pump_suitability
See the general repository structure depicted below. Key files are also shown.
asf_heat_pump_suitability
├───analysis/
│ Scripts for ad-hoc analysis
├───config/
│ Respository config files and global variables
│ ├─ base.yaml - data sources and mappings
│ ├─ README.md - data source information, citations, and attributions
├───getters/
│ Modules with functions to load data
│ ├─ base_getters.py - generic getter functions
│ ├─ get_datasets.py - specific getter functions to load raw datasets
│ ├─ get_target.py - specific getter functions to load and process target data for reweighting
├───notebooks/
│ Notebooks with prototype code for pipeline
├───pipeline/
│ Subdirs with modules to process data and produce outputs
│ ├─ evaluation/
│ ├─ prepare_features/
│ ├─ reweight_epc/
│ ├─ run_scripts/
│ ├─ sampling/
│ ├─ suitability/
│ ├─ README.md - instructions to run pipeline
├───utils/
│ Modules with generic utils
One of the challenges in assessing heat pump suitability is to set criteria for what makes a home suitable for a particular technology. We have used two sets of criteria in this project: one a “conventional” view, which we think reflects common consensus; and one a Nesta view, which draws on our latest research. We did this for four different technologies; air source heat pumps (ASHPs), ground source heat pumps (GSHPs), heat networks (HNs) and shared ground loops (SGLs).
This pipeline therefore computes a conventional score and a Nesta score for each of the four tech types listed: eight heat pump suitability scores are calculated in total per LSOA. Scores are first computed per property based on presence/ absence of certain characteristics of the property/area using a simple additive model (see table below). Scores are then averaged per property before finally aggregating to LSOA level.
ASHP (S) | ASHP (N) | GSHP (S) | GSHP (N) | SGL (S) | SGL (N) | HN (S) | HN (N) | |
---|---|---|---|---|---|---|---|---|
Is the property NOT listed? | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 |
Is the property NOT in a building conservation zone? | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 | 0.25 |
Is the EPC rating >= C? | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
Is the property NOT a flat? | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
Is the garden >10m2? | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
Is there >2m2 of external space? | 0 | 2 | 0 | 1 | 0 | 0 | 0 | 0 |
Is it off-gas? | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 | 0.5 |
Is this property part of a building with multiple other properties (e.g. a flat)? | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 |
Is there a high property density (>60 households per km2) in this LSOA? | 0 | 0 | 0 | 0 | 2 | 2 | 0 | 0 |
Is this property in an urban LSOA/high heat demand density LSOA? | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 |
Maximum points per property | 4 | 4 | 4 | 3 | 7 | 5 | 5 | 5 |
A comprehensive table of citations for data used in this analysis can be found in asf_heat_pump_suitability/config/README.md. See attributions below.
This work uses Facebook Research's balance package and ipfn to conduct iterative proportional fitting.
Sarig, T., Galili, T., & Eilat, R. (2023). balance – a Python package for balancing biased data samples. https://arxiv.org/abs/2307.06024
Intermediate outputs include:
Technical and working style guidelines
Project based on Nesta's data science project template (Read the docs here).