Background
policyengine-uk-data PolicyEngine/policyengine-uk-data#428 imputes a household-level bus_fare_spending column from LCFS (COICOP 7.3.2 bus & coach fares). To be consumed by the model, policyengine-uk needs a matching input Variable — otherwise the column is silently skipped on load (simulation.py ignores columns with no registered variable).
This is the companion change to PolicyEngine/policyengine-uk-data#427 / #428.
What's needed
A standalone Household input variable, mirroring petrol_spending / diesel_spending (which are likewise COICOP sub-components of transport_consumption):
class bus_fare_spending(Variable):
label = "bus and coach fare spending"
entity = Household
definition_period = YEAR
value_type = float
unit = GBP
quantity_type = FLOW
uprating = "gov.economic_assumptions.indices.obr.consumer_price_index"
It is not added into the consumption total, which already counts bus fares via transport_consumption (avoids double-counting).
Why it matters
bus_fare_spending is the passenger fare households pay, distinct from bus_subsidy_spending (the ETB government-subsidy benefit-in-kind). It is the building block for modelling bus fare reforms (e.g. a £2 cap or free travel for young people), the bus analogue of the existing rail fare modelling.
Follow-on (separate work)
Reform parameters/variables (flat rate, eligibility age threshold), NTS-based person-level allocation by age, and a bus-fare calibration target — tracked in PolicyEngine/policyengine-uk-data#427.
Background
policyengine-uk-dataPolicyEngine/policyengine-uk-data#428 imputes a household-levelbus_fare_spendingcolumn from LCFS (COICOP 7.3.2 bus & coach fares). To be consumed by the model,policyengine-ukneeds a matching inputVariable— otherwise the column is silently skipped on load (simulation.pyignores columns with no registered variable).This is the companion change to PolicyEngine/policyengine-uk-data#427 / #428.
What's needed
A standalone Household input variable, mirroring
petrol_spending/diesel_spending(which are likewise COICOP sub-components oftransport_consumption):It is not added into the
consumptiontotal, which already counts bus fares viatransport_consumption(avoids double-counting).Why it matters
bus_fare_spendingis the passenger fare households pay, distinct frombus_subsidy_spending(the ETB government-subsidy benefit-in-kind). It is the building block for modelling bus fare reforms (e.g. a £2 cap or free travel for young people), the bus analogue of the existing rail fare modelling.Follow-on (separate work)
Reform parameters/variables (flat rate, eligibility age threshold), NTS-based person-level allocation by age, and a bus-fare calibration target — tracked in PolicyEngine/policyengine-uk-data#427.