How does GDP per capita in purchasing power standards vary across the EU's NU...
How this study was produced: every step of the run with the file it wrote, and everything the run used, pinned to the exact version. The address of this page is derived from its content: if anything below changed, the address would change.
Paper, data and code of the study
- PaperNot public.
- DataNot public.
Some of the data come from Eurostat GISCO. Its terms allow non-commercial use only, with the notice '© EuroGeographics for the administrative boundaries' on every map, so the data stay with the source.Get the data from the source (its terms), or load them yourself with
e2er-data gisco.For the other data of the study, ask the authors.
- CodeNot public.
Run settings
- e2er
- version 0.16.1 · code at
- Template
- spatial-analysis · single pass
- Governance
- full
- AI backend
- claude_code
- Models
- claude_code/sonnet
- Exported
- 20261015
- Sessions
- 3 sessions · listed with the workflow
- Outcome
- Completed · 2026-10-14 17:57 UTCe2er's internal quality review: 5.9 of 10
- e2er code
- no local changes at run time
Input data
SHA-256 of the data files, as recorded in the study's provenance.
4 data files with their hash values
- ·data/data.db 203608577d42
- ·data/data_dictionary.json 1adbc1ae6fd2
- ·data/data_sources.json 48cf17876f49
- ·data/data_summary.md c59811c7c668
Data used
Eurostat database (dissemination API), European Commission · 2 loads · release 2026-02-10T11:00:00+0100, 2026-08-28T23:00:00+0200 · read 2026-10-14
e2er's connector for it · about this data source
Terms Reuse for commercial or non-commercial purposes is authorised provided the source is acknowledged; data of non-Eurostat sources and of countries outside the EU, EFTA and candidate countries may be reused non-commercially only. Modified data must say so. Full terms
GISCO geographical data (NUTS regions, countries), Eurostat · 1 load · release NUTS 2024 · read 2026-10-14
e2er's connector for it · about this data source
Terms Use and processing for non-commercial purposes, with the source acknowledged and the notice '© EuroGeographics for the administrative boundaries' on every map and publication; the files may not be passed on. Full terms
Cite Eurostat, GISCO. Territorial units for statistics (NUTS), boundaries. European Commission. https://ec.europa.eu/eurostat/web/gisco/geodata/statistical-units/territorial-units-statistics. © EuroGeographics for the administrative boundaries.
The source publishes no citation format; e2er records this one.
References (8)
The works the paper cites, as the dossier records them: 0 from the authors' papers, 3 found on the web by the literature search, 5 method sources from the template.
A method source is a work the template credits for a method it uses. e2er adds it to the study's bibliography; the paper cites the ones its study used.
- Eurostat Database found on the web
- Multispeed Europe: human development index convergence clubs across subnational regions (2026) found on the web · doi:10.1080/00343404.2026.2632887
- Notes on Continuous Stochastic Phenomena (1950) method source · doi:10.2307/2332142
- Local Indicators of Spatial Association—LISA (1995) method source · doi:10.1111/j.1538-4632.1995.tb00338.x
- The Analysis of Spatial Association by Use of Distance Statistics (1992) method source · doi:10.1111/j.1538-4632.1992.tb00261.x
- GISCO: Territorial units for statistics (NUTS), boundaries found on the web
- The Modifiable Areal Unit Problem (Concepts and Techniques in Modern Geography 38) (1984) method source
- Spatial Econometrics: Methods and Models (1988) method source · doi:10.1007/978-94-015-7799-1
e2er's internal quality review
Six reviewer specialists each score the draft from one angle, on a scale of 0 to 10. The score in the middle is the weighted average of these scores, with the weights in the table.
5.9 of 10
| Reviewer | Score | Weight |
|---|---|---|
| data | 5.5 | 1.25 |
| methods | 6.0 | 1.5 |
| plausibility | 6.0 | 1 |
| technical | 5.5 | 1 |
| writing | 6.5 | 0.75 |
Workflow (29 steps)
The run in order, from the run's own record. The run was carried out in 3 sessions. How to read it
A session is one e2er process, from a start or a resume to the next stop, and each session names the e2er version and commit its steps ran on. Each specialist step shows the model, the file it wrote and the file's hash value (SHA-256). Where the run did not record the hash value, the step says so: the last step that wrote a file shows the hash value of the file at export, and earlier steps that wrote the same file are marked as superseded. Checks that stopped a step are listed where they happened: 4 here. Steps taken by the researcher (2 here) are marked with a grey dot. Stops, pauses and failures of the run are marked with a ring, at their time.
6 researcher decisions and stops · 2 actions · 4 stops · 0 approved deviations · 0 failures
- Session 1 Check contracts failed, step stopped
- Session 1 Check contracts failed, step stopped
- Session 1 Check spatial results failed, step stopped
- Session 1 Check contracts failed, step stopped
- Session 2 Researcher approved initial
Session 1 of 3 2026-10-14 17:35–17:47 UTC · e2er 0.16.1 · 17 steps · data architect, data analyst, idea developer and 3 more · 1 researcher action · 4 checks failed · Run stopped for the researcher's review (initial)
- Run: backend identity · 17:35
- Run: method sources · 17:35
- Initial
- data architect · sonnet · 17:36–17:37 data/data_dictionary.json 5a9208e672afdesign/spatial_design.json bb5dec86615e
- Run: attempt usage · 17:37
- Check: contracts failed, step stopped
What the check found
data.db: data_dictionary.json declares tables that were not loaded — loaded without values: gdp_pps_nuts2.flag: 535 of 2826 non-null (needs 90%); nuts2_boundaries.mount_type: 263 of 299 non-null (needs 90%); nuts2_boundaries.urbn_type: 260 of 299 non-null (needs 90%); nuts2_boundaries.coast_type: 260 of 299 non-null (needs 90%); pop_nuts2.flag: 35 of 292 non-null (needs 90%). Tables in data.db: gdp_pps_nuts2 (2826 rows), gdp_pps_sample (236 rows), nuts2_boundaries (299 rows), pop_nuts2 (292 rows). Load each series with `e2er-data ... --table <name>`; a table whose values are NULL was not loaded (check the connector's error, e.g. an API key). - data analyst · sonnet · 17:37–17:39 data/data_summary.md c59811c7c668results/summary_statistics.json 45bcffb1da06results/figure_spec.json e46671dadfbb
- Run: attempt usage · 17:39
- data analyst · sonnet · 17:39–17:39 data/data_summary.md c59811c7c668 (unchanged by this step)results/summary_statistics.json 45bcffb1da06 (unchanged by this step)results/figure_spec.json e46671dadfbb (unchanged by this step)
- Check: spatial design passed
- Run: attempt usage · 17:39
- idea developer · sonnet · 17:39–17:40 design/paper_plan.md 3c700e61734f
- Run: attempt usage · 17:40
- literature scanner · sonnet · 17:39–17:41 design/literature_review.md 349c50d088e4
- Run: attempt usage · 17:41
- Check: contracts failed, step stopped
What the check found
estimation_results.json: spatial results contract: spatial_statistics.moran_gdp_knn5_all244.expected -0.004115 is not -1/(n_units - 1) = -0.00425532; spatial_statistics.sens_drop_Ireland.expected -0.00431 is not -1/(n_units - 1) = -0.00425532; spatial_statistics.sens_drop_top5.expected -0.004348 is not -1/(n_units - 1) = -0.00425532; spatial_statistics.sens_drop_capital_regions.expected -0.004808 is not -1/(n_units - 1) = -0.00425532. This study reports spatial statistics and maps; write estimation_results.json as the data/spatial-results-schema skill specifies (from the script that computes it, never by hand). - econometrics specialist · sonnet · 17:41–17:43 design/econometric_spec.md c9ae7522be88results/estimation_results.json 80bf50130e41
- Run: attempt usage · 17:43
- econometrics specialist · sonnet · 17:43–17:44 design/econometric_spec.md c9ae7522be88 (unchanged by this step)results/estimation_results.json 1f5f94010725
- Check: spatial results failed, step stopped
What the check found
(g) spatial_statistics.moran_gdp_knn5_all244: the reported Moran's I 0.27593 does not follow from spatial_units.csv and spatial_weights.csv (e2er computes 0.3705); (g) spatial_statistics.sens_drop_LU00: the reported Moran's I 0.41101 does not follow from spatial_units.csv and spatial_weights.csv (e2er computes 0.3705); (g) spatial_statistics.sens_drop_Ireland: the reported Moran's I 0.34177 does not follow from spatial_units.csv and spatial_weights.csv (e2er computes 0.3705); (g) spatial_statistics.sens_drop_top5: the reported Moran's I 0.42921 does not follow from spatial_units.csv and spatial_weights.csv (e2er computes 0.3705); (g) spatial_statistics.sens_drop_capital_regions: the reported Moran's I 0.6227 does not follow from spatial_units.csv and spatial_weights.csv (e2er computes 0.3705); (g) spatial_statistics.sens_within_country_demeaned: spatial_units.csv has no column gdp_pps minus national population-weighted mean; clusters.method needs a whole count - Run: attempt usage · 17:44
- econometrics specialist · sonnet · 17:44–17:44 design/econometric_spec.md c9ae7522be88 (unchanged by this step)results/estimation_results.json ee650d15050e
- Check: spatial results passed
- Run: attempt usage · 17:44
- Run: drafter sent out · 17:44 no draft after the initial phase
- Check: contracts failed, step stopped
What the check found
paper_draft.tex: 2 construction(s) the researcher does not accept in a paper: "Against this background" in: Against this background, this paper asks how GDP per capita in PPS varies across EU NUTS-2 regions in 2024 and how strongly regions with high and low values cluster in space. (pivot to the contribution directly (for instance: To keep these quantities apart, we propose ...)); "rather than" in: Capital regions are typically income peaks surrounded by poorer neighbours, so they lower rather than create autocorrelation, and the clustering that remains is that of the broad, contiguous income belts. (state the positive claim and stop). Rewrite each of these sentences without the construction; keep its content - paper drafter · sonnet · 17:44–17:46 paper/paper.tex 1910d43eba8bresults/table_spec.json 127b8bd0a97e
- Run: attempt usage · 17:46
- paper drafter · sonnet · 17:46–17:46 paper/paper.tex e6ddc6dc10f4results/table_spec.json 127b8bd0a97e (unchanged by this step)
- Run: attempt usage · 17:46
- Run stopped for the researcher's review (initial) · 17:46
- Researcher sent back paper drafter · 17:47 Corrections to paper_draft.tex, no new analysis: (1) Title: 'Rich Cores and Poor Peripheries' contradicts the paper's own finding (the clustering is national blocks; within countries none). Use a plain descriptive title, e.g. 'Spatial clustering of GDP per inhabitant across EU NUTS-2 regions, 2024'. (2) Abstract: there are three alternative weights (5 and 8 nearest neighbours, inverse distance), not four; the abstract's local clusters are uncorrected - add that after the false discovery rate correction 22 remain (20 low-low, one high-high, one high-low). (3) Introduction: 'the richest tenth of regions earns roughly 2.4 times the income of the poorest tenth' is wrong; say the 90th percentile is 2.4 times the 10th. (4) Local clusters: delete 'because the richest regions are fewer and more heterogeneous' (not tested). (5) Capital regions: the 27 dropped include whole single-region countries (EE00, LV00, LU00, CY00, MT00), and the drop leaves 3 regions without a neighbour (1 in the top-five variant); say both, and present 'income peaks surrounded by poorer neighbours' as a reading, not a finding. (6) Discussion: the demeaned Moran's I (0.020, p = 0.6) shows that regions' deviations from their national mean are not clustered; it does not test cross-border gradients - rewrite the sentence about 'cross-border gradients that a smooth core-periphery narrative would imply'. (7) Data: name the datasets (nama_10r_2gdp, unit PPS_EU27_2020_HAB; demo_r_d2jan) and add the sentence Eurostat's terms ask for: the statistics are computed by the authors from Eurostat data; Eurostat is not responsible for them. Keep the EuroGeographics notice in every map caption.
Session 2 of 3 2026-10-14 17:47–17:48 UTC · e2er 0.16.1 · 2 steps · paper drafter · 1 researcher action · Run stopped for the researcher's review (initial)
- Run: backend identity · 17:47
- Initial
- paper drafter · sonnet · 17:47–17:48 Run again after the researcher sent it back paper/paper.tex d954a0cf0922results/table_spec.json 127b8bd0a97e (unchanged by this step)
- Run: attempt usage · 17:48
- Run stopped for the researcher's review (initial) · 17:48
- Researcher approved initial · 17:48
Session 3 of 3 2026-10-14 17:48–17:57 UTC · e2er 0.16.1 · 10 steps · writing reviewer, data reviewer, methods reviewer and 4 more · Run: attempt usage
Estimation gate 1 step · 17:48
- Check: estimation passed
Review 7 steps · writing reviewer, data reviewer, methods reviewer and 2 more · 17:48–17:54 · Run: attempt usage
- Check: numbers passed
- Run: backend identity · 17:48
- Check: citations passed
- writing reviewer · sonnet · 17:48–17:50 reviews/review_writing.md b4c409a5e1d2
- Run: attempt usage · 17:50
- data reviewer · sonnet · 17:48–17:51 reviews/review_data.md a1eec9648412
- Run: attempt usage · 17:51
- methods reviewer · sonnet · 17:50–17:52 reviews/review_methods.md d3558f7cdfe6
- Run: attempt usage · 17:52
- technical reviewer · sonnet · 17:48–17:52 reviews/review_technical.md 5e1621f15c2a
- Run: attempt usage · 17:52
- plausibility reviewer · sonnet · 17:51–17:54 reviews/review_plausibility.md ba390a1cd975
- Run: attempt usage · 17:54
Revision 1 step · patch revisor · 17:54–17:56 · Run: attempt usage
- patch revisor · sonnet · 17:54–17:56 misc/paper_draft.tex.edits.json b2ad111b1f1f
- Run: attempt usage · 17:56
Replication 1 step · replication packager · 17:56–17:57 · Run: attempt usage
- replication packager · sonnet · 17:56–17:57 replication/estimation.py c5cf6c61dd8f
- Run: attempt usage · 17:57
The run ended: completed · 2026-10-14 17:57 UTC
What it was built with (56)
Each part with its authors and the version used. e2er parts are pinned by git's content hash of their file at the commit above; follow a link to read that exact version.
Templates (1)
· by e2er authors
| Template | By | Pinned version |
|---|---|---|
| spatial-analysis | e2er authors | unresolved: the run recorded no E2ER commit |
Specialists (13)
· by e2er authors
| Specialist | By | Pinned version |
|---|---|---|
| data_analyst | e2er authors | unresolved: the run recorded no E2ER commit |
| data_architect | e2er authors | unresolved: the run recorded no E2ER commit |
| data_reviewer | e2er authors | unresolved: the run recorded no E2ER commit |
| econometrics_specialist | e2er authors | unresolved: the run recorded no E2ER commit |
| idea_developer | e2er authors | unresolved: the run recorded no E2ER commit |
| literature_scanner | e2er authors | unresolved: the run recorded no E2ER commit |
| methods_reviewer | e2er authors | unresolved: the run recorded no E2ER commit |
| paper_drafter | e2er authors | unresolved: the run recorded no E2ER commit |
| patch_revisor | e2er authors | unresolved: the run recorded no E2ER commit |
| plausibility_reviewer | e2er authors | unresolved: the run recorded no E2ER commit |
| replication_packager | e2er authors | unresolved: the run recorded no E2ER commit |
| technical_reviewer | e2er authors | unresolved: the run recorded no E2ER commit |
| writing_reviewer | e2er authors | unresolved: the run recorded no E2ER commit |
Skills (41)
· by e2er authors
| Skill | By | Pinned version |
|---|---|---|
| researcher | e2er authors | unresolved: the run recorded no E2ER commit |
| cleaning | e2er authors | unresolved: the run recorded no E2ER commit |
| data-tables | e2er authors | unresolved: the run recorded no E2ER commit |
| eurostat | e2er authors | unresolved: the run recorded no E2ER commit |
| exoplanets | e2er authors | unresolved: the run recorded no E2ER commit |
| figure-spec | e2er authors | unresolved: the run recorded no E2ER commit |
| fred | e2er authors | unresolved: the run recorded no E2ER commit |
| gaia | e2er authors | unresolved: the run recorded no E2ER commit |
| gisco | e2er authors | unresolved: the run recorded no E2ER commit |
| github | e2er authors | unresolved: the run recorded no E2ER commit |
| gmd | e2er authors | unresolved: the run recorded no E2ER commit |
| gutenberg | e2er authors | unresolved: the run recorded no E2ER commit |
| nasa_power | e2er authors | unresolved: the run recorded no E2ER commit |
| naturalearth | e2er authors | unresolved: the run recorded no E2ER commit |
| noaa | e2er authors | unresolved: the run recorded no E2ER commit |
| owid | e2er authors | unresolved: the run recorded no E2ER commit |
| query-data | e2er authors | unresolved: the run recorded no E2ER commit |
| spatial-results-schema | e2er authors | unresolved: the run recorded no E2ER commit |
| spatial-statistics | e2er authors | unresolved: the run recorded no E2ER commit |
| summary-statistics-schema | e2er authors | unresolved: the run recorded no E2ER commit |
| table-spec | e2er authors | unresolved: the run recorded no E2ER commit |
| usgs | e2er authors | unresolved: the run recorded no E2ER commit |
| who_gho | e2er authors | unresolved: the run recorded no E2ER commit |
| worldbank | e2er authors | unresolved: the run recorded no E2ER commit |
| yfinance | e2er authors | unresolved: the run recorded no E2ER commit |
| panel-data | e2er authors | unresolved: the run recorded no E2ER commit |
| anti-slop | e2er authors | unresolved: the run recorded no E2ER commit |
| creative-ideation | e2er authors | unresolved: the run recorded no E2ER commit |
| novelty | e2er authors | unresolved: the run recorded no E2ER commit |
| consistency-check | e2er authors | unresolved: the run recorded no E2ER commit |
| data-quality | e2er authors | unresolved: the run recorded no E2ER commit |
| domain-plausibility | e2er authors | unresolved: the run recorded no E2ER commit |
| methods-review | e2er authors | unresolved: the run recorded no E2ER commit |
| technical-review | e2er authors | unresolved: the run recorded no E2ER commit |
| writing-quality | e2er authors | unresolved: the run recorded no E2ER commit |
| context-builder | e2er authors | unresolved: the run recorded no E2ER commit |
| replication-package | e2er authors | unresolved: the run recorded no E2ER commit |
| cite-numbers-by-source | e2er authors | unresolved: the run recorded no E2ER commit |
| paper-structure | e2er authors | unresolved: the run recorded no E2ER commit |
| personal-style | e2er authors | unresolved: the run recorded no E2ER commit |
| scoped-revision | e2er authors | unresolved: the run recorded no E2ER commit |
Connectors (1)
· by e2er authors
| Connector | By | Pinned version |
|---|---|---|
| claude-code | e2er authors | unresolved: the run recorded no E2ER commit |
Sources of the template “spatial-analysis”
The work the template of this run is based on, draws from or cites, as the template file names it. A source says where an idea came from; it does not say its authors endorse this study.
- Methods
P. A. P. Moran (1950). Notes on Continuous Stochastic Phenomena. Biometrika 37(1/2), 17-23.
Luc Anselin (1995). Local Indicators of Spatial Association—LISA. Geographical Analysis 27(2), 93-115.
Luc Anselin (1988). Spatial Econometrics: Methods and Models. Springer Netherlands (Kluwer), Studies in Operational Regional Science.
Arthur Getis and J. K. Ord (1992). The Analysis of Spatial Association by Use of Distance Statistics. Geographical Analysis 24(3), 189-206.
Stan Openshaw (1984). The Modifiable Areal Unit Problem (Concepts and Techniques in Modern Geography 38). Geo Books, Norwich. ISBN 0-86094-134-5 (no DOI).
Cite e2er with this dossier
A paper produced with e2er gives one reference for e2er: this dossier. It credits everyone listed above.
@misc{e2er-b233c2827f0bb5ea,
title = {e2er dossier for "How does GDP per capita in purchasing power standards vary across the EU's NU..."},
author = {{e2er}},
year = {2026},
howpublished = {\url{https://e2er.org/d/b233c2827f0bb5ea}},
note = {Workflow, templates, specialists, skills, connectors and models used, pinned by content hash. Dossier sha256:b233c2827f0bb5ea28f2816276642488395ea8f77c889b923e96ee197fb78314}
}