euromod_linking.methods.lma_labour_alignment

lma_labour_alignment — align EUROMOD microdata to external labour-market targets and drive the LMA add-on.

Works over any population cells the shock table defines, on full-population input, deterministically. Methodology is fixed here; scenarios can only set the declared params (period, tolerance_pct).

Submodules

Attributes

Classes

LmaLabourAlignment

See module docstring. Instances are stateless between calls.

Functions

fulltime_hours(→ tuple[float | None, str])

The country's standard full-time week, from the model's own $lhw constant.

Package Contents

class euromod_linking.methods.lma_labour_alignment.LmaLabourAlignment[source]

See module docstring. Instances are stateless between calls.

apply(data: pandas.DataFrame, shocks: pandas.DataFrame, params: dict, ctx: euromod_linking.methods.base.MethodContext) euromod_linking.methods.base.MethodResult[source]
baseline_transform(data: pandas.DataFrame, ctx: euromod_linking.methods.base.MethodContext) pandas.DataFrame[source]

Neutral LMA columns: identical for every shock table/period, so the baseline simulation is shared via the cache.

The baseline runs WITH the LMA add-on active but lma=0 for everyone (no transitions), rather than without the add-on: both runs then go through an identical policy configuration, so the baseline/ counterfactual delta isolates the labour-market transitions and cannot pick up incidental differences from toggling the add-on itself.

check_dataset(columns, shocks: pandas.DataFrame) list[str][source]
preview(data: pandas.DataFrame, shocks: pandas.DataFrame, params: dict, ctx: euromod_linking.methods.base.MethodContext) dict[source]

What apply() would target, without fitting or aligning anything.

Cheap enough to run at validation time, which is where a mis-sized shock has to be caught: after the run there is nothing left to do but discard two simulations.

euromod_linking.methods.lma_labour_alignment.fulltime_hours(country_code: str, system_name: str) tuple[float | None, str][source]

The country’s standard full-time week, from the model’s own $lhw constant.

Full-time differs by country (35 in FR, 38 in DK, 42 in AT), so the hardcoded 40 above would misstate entrants’ earnings. Returns (hours, note); hours is None when $lhw is absent (IE, LV, NL) or implausible, and the default applies.

euromod_linking.methods.lma_labour_alignment.DEFAULT_FULLTIME_HOURS_PER_WEEK = 40.0
euromod_linking.methods.lma_labour_alignment.FULLTIME_HOURS_BOUNDS = (10.0, 60.0)
euromod_linking.methods.lma_labour_alignment.INJECTED = ('lma', 'yem_a', 'yemmy_a', 'lhw_a')
euromod_linking.methods.lma_labour_alignment.MONTHS_PER_YEAR = 12
euromod_linking.methods.lma_labour_alignment.WEEKS_PER_MONTH = 4.3333