party2d

Code and processed model inputs for generating two-dimensional party-position estimates from text and expert data. The model combines manifesto and media text indicators with expert survey placements in a Bayesian dynamic item-response framework.

Repository contents

  • data-setup/ — optional scripts and source manifest for rebuilding model-ready inputs from local raw files.
  • src/julia/ — Stan data preparation, model fitting, post-estimation, enrichment, and validation.
  • models/ — Stan model specification.
  • data/ — five processed party-level inputs used by the Julia/Stan model.
  • metadata/ — data dictionary and source-support documentation.
  • docs/ — raw data source documentation, coding decisions, and operational notes.

Processed inputs needed by the model are included in data/ so the estimation step can be reproduced from the model-ready data.

Running the pipeline

Run the full workflow with:

bash run_estimation.sh full

This checks that model-ready inputs are present, then executes the Julia/Stan workflow scripts:

bash scripts/01_prepare_data.sh   # checks model-ready inputs; does not rebuild raw data
bash scripts/02_fit_model.sh
bash scripts/03_extract_estimates.sh
bash scripts/04_enrich_estimates.sh
bash scripts/05_validate_estimates.sh

The numbered scripts can also be run manually in that order.

The Bayesian model is computationally expensive. The production run used 4 cores on an AMD Ryzen 9 7945HX and took 60,372 seconds, approximately 16 hours 46 minutes.

If model output is already available, rebuild estimates without refitting Stan:

bash run_estimation.sh reuse

reuse verifies the model-ready inputs, then reruns post-estimation, enrichment, and validation while skipping the Stan fitting step.

To check the local setup without fitting the model, run:

bash run_estimation.sh dry-run

Data inputs

The model-ready inputs are included under data/:

  • text_data.csv
  • expert.csv
  • lr_data.csv
  • union_mapping.csv
  • party_families.csv

Original raw source files are not redistributed. See docs/RAW_DATA_SOURCES.md and data-setup/ for the list of original data sources, access information, and expected local filenames for regenerating the processed inputs. Rebuilding inputs from raw files is separate from the normal estimation workflow and writes only to ignored _local/ test directories; it never replaces committed data/ inputs automatically.

Output variables

The two position variables are scaled from 0 to 1:

  • economic_lr: economic left to economic right.
  • galtan: cosmopolitan/socially liberal to traditionalist/nationalist.

Column definitions are in metadata/data_dictionary.csv.

S
Description
Two-dimensional party position estimates release repository
Readme 6.2 MiB
Languages
Julia 64.7%
R 27.3%
Stan 5.9%
Shell 2.1%