Simulation interface

The Simulation class is the core interface of this package. You can initialise it by passing in a dictionary that matches the SimulationOptions schema, and then use its calculate methods to ask it questions.

Some of the options are straightforward and some are more complex. The straightforward ones are:

  • country: uk or us.

  • scope: macro (simulating over large data to represent e.g. a country) or household (simulating over specific households you describe).

  • time_period: the year to simulate.

The next important features are:

  • reform: the policy to use in the reform scenario if we are comparing against a different scenario.

  • baseline: the policy to use in the baseline scenario if we are comparing against a different baseline scenario.

  • data: either a household (if scope is household) or a large dataset name (if scope is macro).

from policyengine import Simulation

sim = Simulation(
    country="uk",
    scope="macro",
    reform={},
    time_period=2025,
)

sim.calculate_economy_comparison()
/opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
Using Hugging Face for download.
Using Hugging Face for download.
Using Hugging Face for download.
EconomyComparison(country_package_version='2.28.0', budget=BudgetaryImpact(budgetary_impact=0.0, tax_revenue_impact=0.0, state_tax_revenue_impact=0.0, benefit_spending_impact=0.0, households=34067959.16713403, baseline_net_income=1591363159198.9612), detailed_budget={'income_tax': ProgramSpecificImpact(baseline=333485558893.2562, reform=333485558893.2562, difference=0.0), 'national_insurance': ProgramSpecificImpact(baseline=58106797201.72149, reform=58106797201.72149, difference=0.0), 'vat': ProgramSpecificImpact(baseline=217779970340.45303, reform=217779970340.45303, difference=0.0), 'council_tax': ProgramSpecificImpact(baseline=55919103106.82793, reform=55919103106.82793, difference=0.0), 'fuel_duty': ProgramSpecificImpact(baseline=29274240650.308544, reform=29274240650.308544, difference=0.0), 'tax_credits': ProgramSpecificImpact(baseline=-210085374.16892228, reform=-210085374.16892228, difference=0.0), 'universal_credit': ProgramSpecificImpact(baseline=-75982394097.46661, reform=-75982394097.46661, difference=0.0), 'child_benefit': ProgramSpecificImpact(baseline=-15904774022.820269, reform=-15904774022.820269, difference=0.0), 'state_pension': ProgramSpecificImpact(baseline=-136493500361.4934, reform=-136493500361.4934, difference=0.0), 'pension_credit': ProgramSpecificImpact(baseline=-6125584448.785109, reform=-6125584448.785109, difference=0.0), 'ni_employer': ProgramSpecificImpact(baseline=132081317376.75456, reform=132081317376.75456, difference=0.0)}, decile=DecileImpact(relative={1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}, average={1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}), inequality=InequalityImpact(gini=BaselineReformValues(baseline=0.3559340695310173, reform=0.3559340695310173), top_10_pct_share=BaselineReformValues(baseline=0.2771363766198217, reform=0.2771363766198217), top_1_pct_share=BaselineReformValues(baseline=0.07861852782372653, reform=0.07861852782372653)), poverty=PovertyImpact(poverty=AgeGroupBaselineReformValues(child=BaselineReformValues(baseline=0.1838970482861734, reform=0.1838970482861734), adult=BaselineReformValues(baseline=0.1228216356006012, reform=0.1228216356006012), senior=BaselineReformValues(baseline=0.08758098468192319, reform=0.08758098468192319), all=BaselineReformValues(baseline=0.12884712586083816, reform=0.12884712586083816)), deep_poverty=AgeGroupBaselineReformValues(child=BaselineReformValues(baseline=0.051896520796927643, reform=0.051896520796927643), adult=BaselineReformValues(baseline=0.034582694389811375, reform=0.034582694389811375), senior=BaselineReformValues(baseline=0.004919799898526426, reform=0.004919799898526426), all=BaselineReformValues(baseline=0.03252745739771024, reform=0.03252745739771024))), poverty_by_gender=PovertyGenderBreakdown(poverty=GenderBaselineReformValues(male=BaselineReformValues(baseline=0.1256969918926238, reform=0.1256969918926238), female=BaselineReformValues(baseline=0.13178078282596428, reform=0.13178078282596428)), deep_poverty=GenderBaselineReformValues(male=BaselineReformValues(baseline=0.03236951240634326, reform=0.03236951240634326), female=BaselineReformValues(baseline=0.03267454841945913, reform=0.03267454841945913))), poverty_by_race=None, intra_decile=IntraDecileImpact(deciles={'Lose more than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'Lose less than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'No change': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], 'Gain less than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'Gain more than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, all={'Lose more than 5%': 0.0, 'Lose less than 5%': 0.0, 'No change': 1.0, 'Gain less than 5%': 0.0, 'Gain more than 5%': 0.0}), wealth_decile=WealthDecileImpactWithValues(relative={1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}, average={1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}), intra_wealth_decile=IntraWealthDecileImpactWithValues(deciles={'Lose more than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'Lose less than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'No change': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], 'Gain less than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'Gain more than 5%': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, all={'Lose more than 5%': 0.0, 'Lose less than 5%': 0.0, 'No change': 1.0, 'Gain less than 5%': 0.0, 'Gain more than 5%': 0.0}), labor_supply_response=LaborSupplyResponse(substitution_lsr=0.0, income_lsr=0.0, relative_lsr={'income': 0.0, 'substitution': 0.0}, total_change=0.0, revenue_change=0.0, decile={'average': {'income': {-1: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}, 'substitution': {-1: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}}, 'relative': {'income': {1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}, 'substitution': {1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, 10: 0.0}}}, hours=HoursResponse(baseline=0.0, reform=0.0, change=0.0, income_effect=0.0, substitution_effect=0.0)), constituency_impact=UKConstituencyBreakdownWithValues(by_constituency={'Aldershot': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-40), 'Aldridge-Brownhills': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-30), 'Altrincham and Sale West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-25), 'Amber Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-27), 'Arundel and South Downs': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-44), 'Ashfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-27), 'Ashford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=72, y=-42), 'Ashton-under-Lyne': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-23), 'Aylesbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-35), 'Banbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-33), 'Barking': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-38), 'Barnsley North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-23), 'Barnsley South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-23), 'Barrow and Furness': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-16), 'Basildon and Billericay': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-34), 'Basingstoke': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-39), 'Bassetlaw': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-26), 'Bath': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-40), 'Battersea': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-41), 'Beaconsfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-37), 'Beckenham and Penge': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-43), 'Bedford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-32), 'Bermondsey and Old Southwark': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-40), 'Bethnal Green and Stepney': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-39), 'Beverley and Holderness': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-22), 'Bexhill and Battle': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=70, y=-44), 'Bexleyheath and Crayford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-39), 'Bicester and Woodstock': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-34), 'Birkenhead': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-27), 'Birmingham Edgbaston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-33), 'Birmingham Erdington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-31), 'Birmingham Hall Green and Moseley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-32), 'Birmingham Hodge Hill and Solihull North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-31), 'Birmingham Ladywood': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-32), 'Birmingham Northfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-34), 'Birmingham Perry Barr': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-31), 'Birmingham Selly Oak': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-33), 'Birmingham Yardley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-32), 'Bishop Auckland': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-14), 'Blackburn': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-19), 'Blackley and Middleton South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-23), 'Blackpool North and Fleetwood': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-18), 'Blackpool South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-18), 'Blaydon and Consett': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-14), 'Blyth and Ashington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-12), 'Bognor Regis and Littlehampton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-44), 'Bolsover': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-26), 'Bolton North East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-21), 'Bolton South and Walkden': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-22), 'Bolton West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-21), 'Bootle': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-22), 'Boston and Skegness': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-26), 'Bournemouth East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-43), 'Bournemouth West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-42), 'Bracknell': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-39), 'Bradford East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-20), 'Bradford South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-21), 'Bradford West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-20), 'Braintree': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-31), 'Brent East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-38), 'Brent West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-38), 'Brentford and Isleworth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-40), 'Brentwood and Ongar': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-33), 'Bridgwater': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-41), 'Bridlington and The Wolds': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-20), 'Brigg and Immingham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-24), 'Brighton Kemptown and Peacehaven': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-45), 'Brighton Pavilion': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-44), 'Bristol Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-38), 'Bristol East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-38), 'Bristol North East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-37), 'Bristol North West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-38), 'Bristol South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-39), 'Broadland and Fakenham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-27), 'Bromley and Biggin Hill': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-42), 'Bromsgrove': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-33), 'Broxbourne': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-35), 'Broxtowe': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-27), 'Buckingham and Bletchley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-34), 'Burnley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-19), 'Burton and Uttoxeter': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-28), 'Bury North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-21), 'Bury South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-22), 'Bury St Edmunds and Stowmarket': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-31), 'Calder Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-20), 'Camborne and Redruth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=43, y=-45), 'Cambridge': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-30), 'Cannock Chase': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-29), 'Canterbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=71, y=-41), 'Carlisle': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-14), 'Carshalton and Wallington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-43), 'Castle Point': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-36), 'Central Devon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-42), 'Central Suffolk and North Ipswich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-29), 'Chatham and Aylesford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-40), 'Cheadle': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-26), 'Chelmsford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-33), 'Chelsea and Fulham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-40), 'Cheltenham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-36), 'Chesham and Amersham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-36), 'Chester North and Neston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-28), 'Chester South and Eddisbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-27), 'Chesterfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-26), 'Chichester': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-44), 'Chingford and Woodford Green': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-35), 'Chippenham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-39), 'Chipping Barnet': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-36), 'Chorley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-20), 'Christchurch': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-42), 'Cities of London and Westminster': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-40), 'City of Durham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-16), 'Clacton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-32), 'Clapham and Brixton Hill': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-42), 'Colchester': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-32), 'Colne Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-23), 'Congleton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-27), 'Corby and East Northamptonshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-30), 'Coventry East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-33), 'Coventry North West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-33), 'Coventry South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-34), 'Cramlington and Killingworth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-12), 'Crawley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-44), 'Crewe and Nantwich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-27), 'Croydon East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-42), 'Croydon South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-43), 'Croydon West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-43), 'Dagenham and Rainham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-37), 'Darlington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-17), 'Dartford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-40), 'Daventry': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-32), 'Derby North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-28), 'Derby South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-28), 'Derbyshire Dales': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-26), 'Dewsbury and Batley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-22), 'Didcot and Wantage': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-38), 'Doncaster Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-23), 'Doncaster East and the Isle of Axholme': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-23), 'Doncaster North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-22), 'Dorking and Horley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-43), 'Dover and Deal': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=72, y=-41), 'Droitwich and Evesham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-36), 'Dudley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-31), 'Dulwich and West Norwood': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-42), 'Dunstable and Leighton Buzzard': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-33), 'Ealing Central and Acton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-39), 'Ealing North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-38), 'Ealing Southall': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-39), 'Earley and Woodley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-36), 'Easington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-16), 'East Grinstead and Uckfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-43), 'East Ham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-38), 'East Hampshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-41), 'East Surrey': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-43), 'East Thanet': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=71, y=-39), 'East Wiltshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-41), 'East Worthing and Shoreham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-44), 'Eastbourne': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-45), 'Eastleigh': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-41), 'Edmonton and Winchmore Hill': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-36), 'Ellesmere Port and Bromborough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-27), 'Eltham and Chislehurst': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-41), 'Ely and East Cambridgeshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-30), 'Enfield North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-35), 'Epping Forest': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-35), 'Epsom and Ewell': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-43), 'Erewash': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-28), 'Erith and Thamesmead': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-40), 'Esher and Walton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-42), 'Exeter': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-42), 'Exmouth and Exeter East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-43), 'Fareham and Waterlooville': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-43), 'Farnham and Bordon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-42), 'Faversham and Mid Kent': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=71, y=-40), 'Feltham and Heston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-40), 'Filton and Bradley Stoke': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-37), 'Finchley and Golders Green': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-37), 'Folkestone and Hythe': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=71, y=-42), 'Forest of Dean': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-35), 'Frome and East Somerset': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-41), 'Fylde': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-19), 'Gainsborough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-25), 'Gateshead Central and Whickham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-15), 'Gedling': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-28), 'Gillingham and Rainham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=70, y=-40), 'Glastonbury and Somerton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-41), 'Gloucester': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-35), 'Godalming and Ash': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-42), 'Goole and Pocklington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-21), 'Gorton and Denton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-24), 'Gosport': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-43), 'Grantham and Bourne': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-28), 'Gravesham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-39), 'Great Grimsby and Cleethorpes': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-24), 'Great Yarmouth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-27), 'Greenwich and Woolwich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-40), 'Guildford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-41), 'Hackney North and Stoke Newington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-38), 'Hackney South and Shoreditch': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-39), 'Halesowen': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-33), 'Halifax': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-21), 'Hamble Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-43), 'Hammersmith and Chiswick': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-39), 'Hampstead and Highgate': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-38), 'Harborough, Oadby and Wigston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-31), 'Harlow': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-32), 'Harpenden and Berkhamsted': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-34), 'Harrogate and Knaresborough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-18), 'Harrow East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-37), 'Harrow West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-37), 'Hartlepool': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-16), 'Harwich and North Essex': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-31), 'Hastings and Rye': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=70, y=-43), 'Havant': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-44), 'Hayes and Harlington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-38), 'Hazel Grove': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-25), 'Hemel Hempstead': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-34), 'Hendon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-36), 'Henley and Thame': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-35), 'Hereford and South Herefordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-34), 'Herne Bay and Sandwich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=72, y=-40), 'Hertford and Stortford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-32), 'Hertsmere': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-34), 'Hexham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-13), 'Heywood and Middleton North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-20), 'High Peak': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-25), 'Hinckley and Bosworth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-30), 'Hitchin': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-32), 'Holborn and St Pancras': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-39), 'Honiton and Sidmouth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-43), 'Hornchurch and Upminster': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-37), 'Hornsey and Friern Barnet': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-36), 'Horsham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-44), 'Houghton and Sunderland South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-15), 'Hove and Portslade': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-44), 'Huddersfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-22), 'Huntingdon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-31), 'Hyndburn': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-19), 'Ilford North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-36), 'Ilford South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-37), 'Ipswich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-30), 'Isle of Wight East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-45), 'Isle of Wight West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-45), 'Islington North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-38), 'Islington South and Finsbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-39), 'Jarrow and Gateshead East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-14), 'Keighley and Ilkley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-19), 'Kenilworth and Southam': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-34), 'Kensington and Bayswater': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-39), 'Kettering': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-30), 'Kingston and Surbiton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-42), 'Kingston upon Hull East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-22), 'Kingston upon Hull North and Cottingham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-21), 'Kingston upon Hull West and Haltemprice': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-22), 'Kingswinford and South Staffordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-30), 'Knowsley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-23), 'Lancaster and Wyre': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-18), 'Leeds Central and Headingley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-20), 'Leeds East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-20), 'Leeds North East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-19), 'Leeds North West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-19), 'Leeds South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-21), 'Leeds South West and Morley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-21), 'Leeds West and Pudsey': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-20), 'Leicester East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-30), 'Leicester South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-31), 'Leicester West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-31), 'Leigh and Atherton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-25), 'Lewes': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-45), 'Lewisham East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-42), 'Lewisham North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-40), 'Lewisham West and East Dulwich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-41), 'Leyton and Wanstead': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-37), 'Lichfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-29), 'Lincoln': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-25), 'Liverpool Garston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-25), 'Liverpool Riverside': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-24), 'Liverpool Walton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-23), 'Liverpool Wavertree': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-25), 'Liverpool West Derby': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-24), 'Loughborough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-30), 'Louth and Horncastle': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-25), 'Lowestoft': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-28), 'Luton North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-33), 'Luton South and South Bedfordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-34), 'Macclesfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-26), 'Maidenhead': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-36), 'Maidstone and Malling': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-41), 'Makerfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-22), 'Maldon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-33), 'Manchester Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-24), 'Manchester Rusholme': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-25), 'Manchester Withington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-26), 'Mansfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-27), 'Melksham and Devizes': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-40), 'Melton and Syston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-29), 'Meriden and Solihull East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-33), 'Mid Bedfordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-32), 'Mid Buckinghamshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-35), 'Mid Cheshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-27), 'Mid Derbyshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-27), 'Mid Dorset and North Poole': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-43), 'Mid Leicestershire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-31), 'Mid Norfolk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-28), 'Mid Sussex': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-43), 'Middlesbrough and Thornaby East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-17), 'Middlesbrough South and East Cleveland': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-17), 'Milton Keynes Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-34), 'Milton Keynes North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-33), 'Mitcham and Morden': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-43), 'Morecambe and Lunesdale': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-17), 'New Forest East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-43), 'New Forest West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-43), 'Newark': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-26), 'Newbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-37), 'Newcastle upon Tyne Central and West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-13), 'Newcastle upon Tyne East and Wallsend': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-14), 'Newcastle upon Tyne North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-13), 'Newcastle-under-Lyme': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-28), 'Newton Abbot': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-43), 'Newton Aycliffe and Spennymoor': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-16), 'Normanton and Hemsworth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-23), 'North Bedfordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-31), 'North Cornwall': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-43), 'North Cotswolds': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-37), 'North Devon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-41), 'North Dorset': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-42), 'North Durham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-15), 'North East Cambridgeshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-29), 'North East Derbyshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-26), 'North East Hampshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-38), 'North East Hertfordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-32), 'North East Somerset and Hanham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-39), 'North Herefordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-34), 'North Norfolk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-27), 'North Northumberland': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-12), 'North Shropshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-29), 'North Somerset': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-39), 'North Warwickshire and Bedworth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-32), 'North West Cambridgeshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-30), 'North West Essex': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-31), 'North West Hampshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-39), 'North West Leicestershire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-29), 'North West Norfolk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-28), 'Northampton North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-32), 'Northampton South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-33), 'Norwich North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-28), 'Norwich South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-29), 'Nottingham East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-29), 'Nottingham North and Kimberley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-28), 'Nottingham South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-29), 'Nuneaton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-31), 'Old Bexley and Sidcup': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-41), 'Oldham East and Saddleworth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-22), 'Oldham West, Chadderton and Royton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-22), 'Orpington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-43), 'Ossett and Denby Dale': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-22), 'Oxford East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-34), 'Oxford West and Abingdon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-35), 'Peckham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-41), 'Pendle and Clitheroe': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-18), 'Penistone and Stocksbridge': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-23), 'Penrith and Solway': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-15), 'Peterborough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-29), 'Plymouth Moor View': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-43), 'Plymouth Sutton and Devonport': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-44), 'Pontefract, Castleford and Knottingley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-22), 'Poole': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-43), 'Poplar and Limehouse': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-39), 'Portsmouth North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-43), 'Portsmouth South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-44), 'Preston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-19), 'Putney': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-41), "Queen's Park and Maida Vale": UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-40), 'Rawmarsh and Conisbrough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-24), 'Rayleigh and Wickford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-34), 'Reading Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-37), 'Reading West and Mid Berkshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-36), 'Redcar': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-17), 'Redditch': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-35), 'Reigate': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-44), 'Ribble Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-18), 'Richmond and Northallerton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-18), 'Richmond Park': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-41), 'Rochdale': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-21), 'Rochester and Strood': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-39), 'Romford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-36), 'Romsey and Southampton North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-40), 'Rossendale and Darwen': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-20), 'Rother Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-25), 'Rotherham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-24), 'Rugby': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-32), 'Ruislip, Northwood and Pinner': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-36), 'Runcorn and Helsby': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-28), 'Runnymede and Weybridge': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-41), 'Rushcliffe': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-28), 'Rutland and Stamford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-29), 'Salford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-24), 'Salisbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-41), 'Scarborough and Whitby': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-19), 'Scunthorpe': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-24), 'Sefton Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-20), 'Selby': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-21), 'Sevenoaks': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-42), 'Sheffield Brightside and Hillsborough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-24), 'Sheffield Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-25), 'Sheffield Hallam': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-24), 'Sheffield Heeley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-25), 'Sheffield South East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-25), 'Sherwood Forest': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-27), 'Shipley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-19), 'Shrewsbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-30), 'Sittingbourne and Sheppey': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=70, y=-39), 'Skipton and Ripon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-18), 'Sleaford and North Hykeham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-26), 'Slough': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-37), 'Smethwick': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-32), 'Solihull West and Shirley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-34), 'South Basildon and East Thurrock': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-36), 'South Cambridgeshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-31), 'South Cotswolds': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-38), 'South Derbyshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-29), 'South Devon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-45), 'South Dorset': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-44), 'South East Cornwall': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-44), 'South Holland and The Deepings': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-27), 'South Leicestershire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-32), 'South Norfolk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-29), 'South Northamptonshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-33), 'South Ribble': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-20), 'South Shields': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-14), 'South Shropshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-31), 'South Suffolk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-30), 'South West Devon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-45), 'South West Hertfordshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-35), 'South West Norfolk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-29), 'South West Wiltshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-41), 'Southampton Itchen': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-42), 'Southampton Test': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-42), 'Southend East and Rochford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-34), 'Southend West and Leigh': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-35), 'Southgate and Wood Green': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-35), 'Southport': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-19), 'Spelthorne': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-40), 'Spen Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-21), 'St Albans': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-34), 'St Austell and Newquay': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-44), 'St Helens North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-21), 'St Helens South and Whiston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-22), 'St Ives': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=43, y=-46), 'St Neots and Mid Cambridgeshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-31), 'Stafford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-28), 'Staffordshire Moorlands': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-27), 'Stalybridge and Hyde': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-24), 'Stevenage': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-33), 'Stockport': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-25), 'Stockton North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-16), 'Stockton West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-17), 'Stoke-on-Trent Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-28), 'Stoke-on-Trent North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-27), 'Stoke-on-Trent South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-29), 'Stone, Great Wyrley and Penkridge': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-28), 'Stourbridge': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-32), 'Stratford and Bow': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-38), 'Stratford-on-Avon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-35), 'Streatham and Croydon North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-42), 'Stretford and Urmston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-24), 'Stroud': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-37), 'Suffolk Coastal': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-29), 'Sunderland Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-15), 'Surrey Heath': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-39), 'Sussex Weald': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=70, y=-42), 'Sutton and Cheam': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-42), 'Sutton Coldfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-31), 'Swindon North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-39), 'Swindon South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-40), 'Tamworth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-30), 'Tatton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-26), 'Taunton and Wellington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-42), 'Telford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-29), 'Tewkesbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-36), 'The Wrekin': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-29), 'Thirsk and Malton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-18), 'Thornbury and Yate': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-36), 'Thurrock': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-36), 'Tipton and Wednesbury': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-31), 'Tiverton and Minehead': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-41), 'Tonbridge': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-41), 'Tooting': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-42), 'Torbay': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-44), 'Torridge and Tavistock': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-42), 'Tottenham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-37), 'Truro and Falmouth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-45), 'Tunbridge Wells': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=69, y=-42), 'Twickenham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-41), 'Tynemouth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-13), 'Uxbridge and South Ruislip': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-37), 'Vauxhall and Camberwell Green': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-41), 'Wakefield and Rothwell': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=59, y=-22), 'Wallasey': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-27), 'Walsall and Bloxwich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-30), 'Walthamstow': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-37), 'Warrington North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-23), 'Warrington South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-24), 'Warwick and Leamington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-35), 'Washington and Gateshead South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-15), 'Watford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-35), 'Waveney Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-28), 'Weald of Kent': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=70, y=-41), 'Wellingborough and Rushden': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=63, y=-30), 'Wells and Mendip Hills': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-40), 'Welwyn Hatfield': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=65, y=-33), 'West Bromwich': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-32), 'West Dorset': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-44), 'West Ham and Beckton': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=66, y=-38), 'West Lancashire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-21), 'West Suffolk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=67, y=-30), 'West Worcestershire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-35), 'Westmorland and Lonsdale': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-15), 'Weston-super-Mare': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-40), 'Wetherby and Easingwold': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=62, y=-20), 'Whitehaven and Workington': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-16), 'Widnes and Halewood': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-26), 'Wigan': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-20), 'Wimbledon': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-41), 'Winchester': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-40), 'Windsor': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-38), 'Wirral West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-28), 'Witham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=68, y=-33), 'Witney': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=56, y=-35), 'Woking': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=57, y=-40), 'Wokingham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=55, y=-38), 'Wolverhampton North East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-29), 'Wolverhampton South East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-30), 'Wolverhampton West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-30), 'Worcester': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-34), 'Worsley and Eccles': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-23), 'Worthing West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=64, y=-44), 'Wycombe': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=58, y=-36), 'Wyre Forest': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-33), 'Wythenshawe and Sale East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-26), 'Yeovil': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-42), 'York Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=60, y=-19), 'York Outer': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=61, y=-18), 'Belfast East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-17), 'Belfast North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-16), 'Belfast South and Mid Down': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-18), 'Belfast West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-17), 'East Antrim': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-15), 'East Londonderry': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=43, y=-15), 'Fermanagh and South Tyrone': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=42, y=-17), 'Foyle': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=42, y=-15), 'Lagan Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-18), 'Mid Ulster': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=43, y=-16), 'Newry and Armagh': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-19), 'North Antrim': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-15), 'North Down': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-16), 'South Antrim': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-16), 'South Down': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-18), 'Strangford': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-17), 'Upper Bann': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=43, y=-18), 'West Tyrone': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=42, y=-16), 'East Renfrewshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-11), 'Na h-Eileanan an Iar': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-2), 'Midlothian': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-11), 'North Ayrshire and Arran': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-10), 'Orkney and Shetland': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=0), 'Aberdeen North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-3), 'Aberdeen South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-4), 'Aberdeenshire North and Moray East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-3), 'Airdrie and Shotts': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-11), 'Alloa and Grangemouth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-7), 'Angus and Perthshire Glens': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-5), 'Arbroath and Broughty Ferry': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-5), 'Argyll, Bute and South Lochaber': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-5), 'Bathgate and Linlithgow': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-9), 'Caithness, Sutherland and Easter Ross': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-2), 'Coatbridge and Bellshill': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-12), 'Cowdenbeath and Kirkcaldy': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-7), 'Cumbernauld and Kirkintilloch': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-8), 'Dumfries and Galloway': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-13), 'Dumfriesshire, Clydesdale and Tweeddale': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-13), 'Dundee Central': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-6), 'Dunfermline and Dollar': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-7), 'East Kilbride and Strathaven': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-13), 'Edinburgh East and Musselburgh': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=54, y=-10), 'Edinburgh North and Leith': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-9), 'Edinburgh South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-10), 'Edinburgh South West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-10), 'Edinburgh West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-9), 'Falkirk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-8), 'Glasgow East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-10), 'Glasgow North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-9), 'Glasgow North East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-9), 'Glasgow South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-11), 'Glasgow South West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-10), 'Glasgow West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-8), 'Glenrothes and Mid Fife': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-6), 'Gordon and Buchan': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-4), 'Hamilton and Clyde Valley': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-12), 'Inverclyde and Renfrewshire West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-8), 'Inverness, Skye and West Ross-shire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-3), 'Livingston': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-11), 'Lothian East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-11), 'Mid Dunbartonshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-7), 'Moray West, Nairn and Strathspey': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-4), 'Motherwell, Wishaw and Carluke': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=52, y=-12), 'North East Fife': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-6), 'Paisley and Renfrewshire North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-9), 'Paisley and Renfrewshire South': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-10), 'Perth and Kinross-shire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-5), 'Rutherglen': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-12), 'Stirling and Strathallan': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-6), 'West Dunbartonshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-7), 'Ayr, Carrick and Cumnock': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-13), 'Berwickshire, Roxburgh and Selkirk': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=53, y=-12), 'Central Ayrshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-12), 'Kilmarnock and Loudoun': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-13), 'West Aberdeenshire and Kincardine': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=51, y=-4), 'Aberafan Maesteg': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-36), 'Alyn and Deeside': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-29), 'Bangor Aberconwy': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-31), 'Blaenau Gwent and Rhymney': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-33), 'Brecon, Radnor and Cwm Tawe': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-32), 'Bridgend': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-37), 'Caerfyrddin': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-32), 'Caerphilly': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-35), 'Cardiff East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-37), 'Cardiff North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-36), 'Cardiff South and Penarth': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-38), 'Cardiff West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-37), 'Ceredigion Preseli': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-34), 'Clwyd East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-30), 'Clwyd North': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-30), 'Dwyfor Meirionnydd': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-31), 'Gower': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-37), 'Llanelli': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-36), 'Merthyr Tydfil and Aberdare': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-34), 'Mid and South Pembrokeshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=44, y=-36), 'Monmouthshire': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-36), 'Montgomeryshire and Glyndwr': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-31), 'Neath and Swansea East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-35), 'Newport East': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-37), 'Newport West and Islwyn': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=49, y=-36), 'Pontypridd': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=48, y=-35), 'Rhondda and Ogmore': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-36), 'Swansea West': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=45, y=-37), 'Torfaen': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-34), 'Vale of Glamorgan': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=47, y=-38), 'Wrexham': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=50, y=-30), 'Ynys Môn': UKConstituencyBreakdownByConstituency(average_household_income_change=0.0, relative_household_income_change=0.0, x=46, y=-29)}, outcomes_by_region={'uk': {'Gain more than 5%': 0, 'Gain less than 5%': 0, 'No change': 650, 'Lose less than 5%': 0, 'Lose more than 5%': 0}, 'england': {'Gain more than 5%': 0, 'Gain less than 5%': 0, 'No change': 543, 'Lose less than 5%': 0, 'Lose more than 5%': 0}, 'scotland': {'Gain more than 5%': 0, 'Gain less than 5%': 0, 'No change': 57, 'Lose less than 5%': 0, 'Lose more than 5%': 0}, 'wales': {'Gain more than 5%': 0, 'Gain less than 5%': 0, 'No change': 32, 'Lose less than 5%': 0, 'Lose more than 5%': 0}, 'northern_ireland': {'Gain more than 5%': 0, 'Gain less than 5%': 0, 'No change': 18, 'Lose less than 5%': 0, 'Lose more than 5%': 0}}), cliff_impact=None)

Providing baseline and reform policies

The baseline and reform policies are dictionaries that represent the policy to simulate. You don’t have to provide a reform policy (if you don’t, the simulation will just simulate the baseline policy). You also don’t have to provide a baseline policy (if you don’t, the simulation will just compare your reform scenario against current law).

If you do, they should each follow this syntax:

{
    "gov.hmrc.income_tax.rate": { // Parameter address, in the country model's `parameters/` folder
        "2025": 0.2 // Value to set the parameter to in the year 2025
    }
}

You can also use this shorthand to set parameters for all years:

{
    "gov.hmrc.income_tax.rate": 0.2
}

Providing data

If you set scope to macro, you should provide either:

  • A Hugging Face .h5 dataset address in this format: "hf://policyengine/policyengine-us-data/cps_2023.h5" (hf://owner/dataset-name/path.h5).

  • An instance of policyengine_core.data.Dataset (advanced).

See policyengine.constants for the available datasets.

If you set scope to household, you should provide a dictionary that represents a household. This should look like:

{
    "people": { // Entity group
        "person": { // Entity name
            "age": { // Variable (in the country model's `variables/` folder)
                "2025": 30, // Time period and value
            }
        }
    },
    "households": {
        "household": {
            "members": ["person"], // Group entities need a `members` field
            "region": {
                "2025": "LONDON",
            }
        }
    }
}

See the country model’s repository for more information on what entity types are available.

Module documentation

Simulate tax-benefit policy and derive society-level output statistics.

class policyengine.simulation.Simulation(**options: SimulationOptions)

Simulate tax-benefit policy and derive society-level output statistics.

baseline_simulation: Simulation

The baseline tax-benefit simulation.

is_comparison: bool

Whether the simulation is a comparison between two scenarios.

reform_simulation: Simulation | None = None

The reform tax-benefit simulation.

pydantic model policyengine.simulation.SimulationOptions

Show JSON schema
{
   "title": "SimulationOptions",
   "type": "object",
   "properties": {
      "country": {
         "description": "The country to simulate.",
         "enum": [
            "uk",
            "us"
         ],
         "title": "Country",
         "type": "string"
      },
      "scope": {
         "description": "The scope of the simulation.",
         "enum": [
            "household",
            "macro"
         ],
         "title": "Scope",
         "type": "string"
      },
      "data": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "additionalProperties": true,
               "type": "object"
            },
            {},
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The data to simulate.",
         "title": "Data"
      },
      "time_period": {
         "default": 2025,
         "description": "The time period to simulate.",
         "title": "Time Period",
         "type": "integer"
      },
      "reform": {
         "anyOf": [
            {
               "$ref": "#/$defs/ParametricReform"
            },
            {},
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The reform to simulate.",
         "title": "Reform"
      },
      "baseline": {
         "anyOf": [
            {
               "$ref": "#/$defs/ParametricReform"
            },
            {},
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The baseline to simulate.",
         "title": "Baseline"
      },
      "region": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The region to simulate within the country.",
         "title": "Region"
      },
      "subsample": {
         "anyOf": [
            {
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "How many, if a subsample, households to randomly simulate.",
         "title": "Subsample"
      },
      "title": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": "[Analysis title]",
         "description": "The title of the analysis (for charts). If not provided, a default title will be generated.",
         "title": "Title"
      },
      "include_cliffs": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "type": "null"
            }
         ],
         "default": false,
         "description": "Whether to include tax-benefit cliffs in the simulation analyses. If True, cliffs will be included.",
         "title": "Include Cliffs"
      }
   },
   "$defs": {
      "ParameterChangeDict": {
         "additionalProperties": {
            "$ref": "#/$defs/ParameterChangeValue"
         },
         "description": "A dict of changes to a parameter, with custom date string as keys\nand various possible value types.\n\nKeys can be formatted one of two ways:\n1. A single year (e.g., \"YYYY\")\n2. A date range (e.g., \"YYYY-MM-DD.YYYY-MM-DD\")",
         "title": "ParameterChangeDict",
         "type": "object"
      },
      "ParameterChangeValue": {
         "description": "A value for a parameter change, which can be any primitive type or 'Infinity'/'-Infinity'",
         "title": "ParameterChangeValue"
      },
      "ParametricReform": {
         "additionalProperties": {
            "anyOf": [
               {
                  "$ref": "#/$defs/ParameterChangeValue"
               },
               {
                  "$ref": "#/$defs/ParameterChangeDict"
               }
            ]
         },
         "description": "A reform that just changes parameter values.\n\nThis is a dict that equates a parameter name to either a single value or a dict of changes.",
         "title": "ParametricReform",
         "type": "object"
      }
   },
   "required": [
      "country",
      "scope"
   ]
}

Fields:
field baseline: ParametricReform | Type[Reform] | None = None

The baseline to simulate.

field country: Literal['uk', 'us'] [Required]

The country to simulate.

field data: str | dict | Any | None = None

The data to simulate.

field include_cliffs: bool | None = False

Whether to include tax-benefit cliffs in the simulation analyses. If True, cliffs will be included.

field reform: ParametricReform | Type[Reform] | None = None

The reform to simulate.

field region: str | None = None

The region to simulate within the country.

field scope: Literal['household', 'macro'] [Required]

The scope of the simulation.

field subsample: int | None = None

How many, if a subsample, households to randomly simulate.

field time_period: int = 2025

The time period to simulate.

field title: str | None = '[Analysis title]'

The title of the analysis (for charts). If not provided, a default title will be generated.