euromod_linking.income_lists¶
The standardised ils_udb_* income lists, and the descriptive names for them.
A scale shock names what it moves. That can be a raw input variable
(yem), an income list (ils_udb_yem), or — because neither of those is
how anyone says it out loud — the concept itself: "employment income".
Why the list and not the variable¶
“Employment income” as an economic concept is not one column. The model’s own
ils_udb_yem covers every component EUROMOD counts under that concept, which
is country- and extension-specific: 26 distinct data-reported components across
the EU-27, and a different subset in each country. Naming the list keeps a shock
consistent with the model’s own accounting instead of a guess about which raw
variables belong to it.
So the catalogue below is a naming aid only. Membership is never tabulated
here — it is resolved against the live model at run time by
euromod_linking.query.income_list_components(), and a name a given system
does not define fails with the names it does.
Where the names come from¶
label is the list’s own DefIl comment in the country XML, taken as the
majority spelling across the EU-27 country files. aliases are the other
comments the model itself uses for the same list in other countries, plus the
short forms an analyst is likely to type. Both are accepted; matching ignores
case, underscores, hyphens and punctuation, so "Employment income",
employment_income and EMPLOYMENT INCOME are one name.
Resolution happens in euromod_linking.shock_table.normalize(), the way
group keys are canonicalised there, so the canonical table always holds the
ils_udb_* name. That is what keeps the content id a property of the
scenario rather than of how it was spelled.
What is worth scaling¶
group splits the catalogue by what its components actually are, counted over
all 27 country files:
market incomeData-reported throughout —
ils_udb_yiy,ypr,ypp,ypt,yot,kfbccandxmpresolve to no simulated component in any country, andyem/yseto three apiece against 26 and 23 reported ones. Scaling these changes what the model is given, which is the point.benefits and taxesMixed to overwhelmingly simulated:
ils_udb_tisis one reported component against 121 simulated ones. EUROMOD recomputes a simulated component from the rules during the run, so scaling it changes nothing and it is reported asskipped_not_in_input. To change what a benefit or tax pays out, shock its policy parameters through theconstantchannel instead.aggregateils_udb_ydsis disposable income: it holds no variables of its own, only the other twenty lists, taxes included. Scaling it fans out over all of them at once, which is almost never a shock anyone meant to write.
Attributes¶
Classes¶
One standardised |
Functions¶
|
The |
|
The catalogue as plain data: what each list covers and what it answers to. |
|
The catalogued |
|
|
|
The catalogued names closest to what was written, for an error message. |
Module Contents¶
- class euromod_linking.income_lists.IncomeList[source]¶
One standardised
ils_udb_*list and the names that reach it.
- euromod_linking.income_lists.canonical_metric(metric: str) str | None[source]¶
The
ils_udb_*name a descriptive metric denotes, or None.Returns None for anything not in the catalogue — a raw variable name, an
alignmetric, a list this catalogue does not carry.
- euromod_linking.income_lists.catalogue() dict[source]¶
The catalogue as plain data: what each list covers and what it answers to.
- euromod_linking.income_lists.names() list[str][source]¶
The catalogued
ils_udb_*names, in catalogue order.
- euromod_linking.income_lists.resolve_metric(metric: str) tuple[str, str | None][source]¶
(canonical metric, problem)for ascalemetric.A catalogued spelling resolves to its
ils_udb_*name. Anything else is returned unchanged — except a metric carrying whitespace, which no EUROMOD variable or income list name ever does: whoever wrote it meant a concept and misspelled it, and saying so here is cheaper than a later “not a column of the input dataset”.
- euromod_linking.income_lists.suggestions(metric: str, n: int = 3) list[str][source]¶
The catalogued names closest to what was written, for an error message.
- euromod_linking.income_lists.BY_NAME: dict[str, IncomeList]¶
- euromod_linking.income_lists.CATALOGUE: tuple[IncomeList, ...]¶
- euromod_linking.income_lists.GROUPS = ('market income', 'benefits and taxes', 'aggregate')¶
- euromod_linking.income_lists.GROUP_NOTES¶