Add diagnostics report workflow
This commit is contained in:
@@ -6,6 +6,10 @@ outputs/
|
||||
data/raw/
|
||||
data/staging/
|
||||
data/releases/
|
||||
!data/releases/
|
||||
data/releases/*
|
||||
!data/releases/SHA256SUMS
|
||||
!data/releases/party_2d_diagnostics_report_*.md
|
||||
data/*.csv
|
||||
!data/text_data.csv
|
||||
!data/expert.csv
|
||||
|
||||
@@ -10,6 +10,7 @@ Code and processed model inputs for generating two-dimensional party-position es
|
||||
- `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.
|
||||
- `diagnostics/` — repository diagnostics report regenerated after model estimation.
|
||||
|
||||
Processed inputs needed by the model are included in `data/` so the estimation step can be reproduced from the model-ready data.
|
||||
|
||||
@@ -80,6 +81,14 @@ To check the local setup without fitting the model, run:
|
||||
bash run_estimation.sh dry-run
|
||||
```
|
||||
|
||||
After estimation and validation have been run, regenerate the diagnostics report with:
|
||||
|
||||
```bash
|
||||
Rscript diagnostics/generate_diagnostics.R
|
||||
```
|
||||
|
||||
The report is written to `diagnostics/generated/diagnostics_report.md` and copied to `data/releases/party_2d_diagnostics_report_v0.md`.
|
||||
|
||||
## Data inputs
|
||||
|
||||
The model-ready inputs are included under `data/`:
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
b110155089daec726f781c5ab49d4ba5cb378f4402d1eddbbf34007b4b734dc8 party_2d_election_year_panel_v0.csv.gz
|
||||
86773993d65f34d5813ca3ce1ebdde643d1c3a9993ccc342301fae3d1b106304 party_2d_annual_model_output_v0.csv.gz
|
||||
2331fb6b1f7971be812c28b65dac743951030571e8146ca7b1fdd2f3237b4dbe party_2d_diagnostics_report_v0.md
|
||||
@@ -0,0 +1,237 @@
|
||||
# Diagnostics report
|
||||
|
||||
Generated: 2026-06-15 16:21:39 CEST
|
||||
Release: v0
|
||||
Model positions source: `party_positions_2026-06-12_16-35-01.csv`
|
||||
|
||||
## Overview
|
||||
|
||||
This report collects the large technical diagnostics that support the Scientific Data Data Descriptor. It follows the structure of the earlier technical appendix: data and item coverage, coding and scale orientation, party-union harmonization, model convergence, and validation. The report is generated from the model-ready inputs and completed model outputs; it is not part of the raw-data setup workflow.
|
||||
|
||||
## Data and item coverage
|
||||
|
||||
The model combines text-coded item counts, dimension-specific expert placements, and general left-right expert placements. Text items enter as positive/sample counts, expert items enter as aggregated ratings with scale and expert-count information, and general left-right ratings anchor the relationship between the two dimensions.
|
||||
|
||||
| source_file | dimension | items |
|
||||
| --- | --- | --- |
|
||||
| expert.csv | cultural cosmopolitan--traditionalist | 7 |
|
||||
| expert.csv | economic left-right | 5 |
|
||||
| lr_data.csv | general left-right | 3 |
|
||||
| text_data.csv | cultural cosmopolitan--traditionalist | 11 |
|
||||
| text_data.csv | economic left-right | 6 |
|
||||
|
||||
### Source coverage
|
||||
|
||||
| source_file | source | items | observations | party_years | parties | countries | min_year | max_year |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| expert.csv | CHES | 2 | 2639 | 1320 | 390 | 44 | 1999 | 2024 |
|
||||
| expert.csv | GPS | 2 | 538 | 271 | 271 | 62 | 2019 | 2019 |
|
||||
| expert.csv | POPPA | 1 | 413 | 413 | 225 | 31 | 2018 | 2023 |
|
||||
| expert.csv | V-Party | 7 | 21488 | 3076 | 589 | 65 | 1970 | 2019 |
|
||||
| lr_data.csv | CHES | 1 | 1320 | 1320 | 390 | 44 | 1999 | 2024 |
|
||||
| lr_data.csv | Morgan | 1 | 471 | 471 | 72 | 11 | 1945 | 1973 |
|
||||
| lr_data.csv | POPPA | 1 | 416 | 416 | 225 | 31 | 2018 | 2023 |
|
||||
| text_data.csv | Manifesto Project | 8 | 36008 | 4501 | 713 | 65 | 1920 | 2025 |
|
||||
| text_data.csv | PolDem | 9 | 2194 | 406 | 93 | 15 | 1972 | 2017 |
|
||||
|
||||
## Data coding and item orientation
|
||||
|
||||
All indicators are oriented toward the two reported dimensions: economic left-right and cultural cosmopolitan--traditionalist. For interpretability, generated diagnostics report whether higher observed values point toward the public high pole or are reversed for reporting. Original source variable names are preserved in the tables.
|
||||
|
||||
### Reversed items
|
||||
|
||||
| item | source | dimension | higher_values_indicate | observations | min_year | max_year |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| internationalism_manifesto | Manifesto Project | cultural cosmopolitan--traditionalist | cosmopolitan | 4501 | 1920 | 2025 |
|
||||
| multiculturalism_manifesto | Manifesto Project | cultural cosmopolitan--traditionalist | cosmopolitan | 4501 | 1920 | 2025 |
|
||||
| economic_intervention_manifesto | Manifesto Project | economic left-right | pro_welfare | 4501 | 1920 | 2025 |
|
||||
| social_services_manifesto | Manifesto Project | economic left-right | pro_welfare | 4501 | 1920 | 2025 |
|
||||
| cultlib_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 299 | 1972 | 2017 |
|
||||
| euro_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 93 | 1978 | 2017 |
|
||||
| europe_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 217 | 1972 | 2017 |
|
||||
| immig_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 236 | 1972 | 2017 |
|
||||
| welfare_poldem | PolDem | economic left-right | pro_welfare | 349 | 1972 | 2017 |
|
||||
|
||||
## Party unions and electoral coalitions
|
||||
|
||||
Alliance and union labels are handled through constituent mappings so the released party identifiers represent individual parties. Shared text evidence can inform constituent parties through the union mapping while expert data continue to constrain individual parties directly.
|
||||
|
||||
| metric | category | value |
|
||||
| --- | --- | --- |
|
||||
| constituent_mappings | all | 106 |
|
||||
| unique_union_or_alliance_ids | all | 76 |
|
||||
| unique_constituent_party_ids | all | 100 |
|
||||
| mappings_by_country | AR | 5 |
|
||||
| mappings_by_country | AU | 2 |
|
||||
| mappings_by_country | BA | 1 |
|
||||
| mappings_by_country | BE | 4 |
|
||||
| mappings_by_country | BG | 5 |
|
||||
| mappings_by_country | BR | 6 |
|
||||
| mappings_by_country | CH | 1 |
|
||||
| mappings_by_country | CL | 8 |
|
||||
| mappings_by_country | CZ | 4 |
|
||||
| mappings_by_country | DE | 3 |
|
||||
| mappings_by_country | EC | 1 |
|
||||
| mappings_by_country | EE | 3 |
|
||||
| mappings_by_country | ES | 3 |
|
||||
| mappings_by_country | FR | 4 |
|
||||
| mappings_by_country | GR | 3 |
|
||||
| mappings_by_country | HR | 4 |
|
||||
| mappings_by_country | IE | 1 |
|
||||
| mappings_by_country | IL | 2 |
|
||||
| mappings_by_country | IT | 8 |
|
||||
| mappings_by_country | LK | 3 |
|
||||
| mappings_by_country | LT | 4 |
|
||||
| mappings_by_country | LU | 1 |
|
||||
| mappings_by_country | LV | 6 |
|
||||
| mappings_by_country | MD | 1 |
|
||||
| mappings_by_country | ME | 1 |
|
||||
| mappings_by_country | MX | 2 |
|
||||
| mappings_by_country | NL | 1 |
|
||||
|
||||
## Party-family coverage
|
||||
|
||||
Party-family classifications are used for construct-validity diagnostics and coverage summaries. The table below reports coverage in the completed model output by family code.
|
||||
|
||||
| family | parties | party_years | countries | min_year | max_year |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| soc | 86 | 2892 | 37 | 1944 | 2025 |
|
||||
| con | 82 | 2425 | 34 | 1944 | 2024 |
|
||||
| lib | 81 | 2063 | 35 | 1944 | 2025 |
|
||||
| chr | 41 | 1596 | 24 | 1945 | 2025 |
|
||||
| com | 49 | 1241 | 27 | 1944 | 2025 |
|
||||
| right | 50 | 975 | 26 | 1946 | 2025 |
|
||||
| eco | 30 | 723 | 24 | 1960 | 2024 |
|
||||
| agr | 12 | 592 | 10 | 1944 | 2024 |
|
||||
| spec | 25 | 520 | 14 | 1949 | 2024 |
|
||||
| other | 2 | 40 | 2 | 1992 | 2024 |
|
||||
|
||||
### Construct-validity family means
|
||||
|
||||
Substantive party-family means provide a construct-validity check: families should follow the expected ordering on the economic left-right and cultural cosmopolitan--traditionalist dimensions.
|
||||
|
||||
| family_name | n_parties | n_obs | mean_economic | sd_economic | mean_cultural | sd_cultural |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| Communist/Far Left | 49 | 1241 | 0.12 | 0.09 | 0.383 | 0.18 |
|
||||
| Green/Ecological | 30 | 723 | 0.267 | 0.115 | 0.251 | 0.092 |
|
||||
| Social Democratic | 86 | 2892 | 0.331 | 0.124 | 0.378 | 0.138 |
|
||||
| Christian Democratic | 41 | 1596 | 0.596 | 0.119 | 0.529 | 0.14 |
|
||||
| Radical Right | 50 | 975 | 0.622 | 0.19 | 0.72 | 0.151 |
|
||||
| Conservative | 82 | 2425 | 0.652 | 0.178 | 0.538 | 0.143 |
|
||||
| Liberal | 81 | 2063 | 0.657 | 0.152 | 0.371 | 0.132 |
|
||||
|
||||
### Temporal-stability flags
|
||||
|
||||
The model permits movement through random walks, but unusually large one-year changes are flagged for inspection rather than treated as automatic errors.
|
||||
|
||||
| party_id | country | dimension | year_from | year_to | val_from | val_to | annual_change |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 556 | LT | cultural cosmopolitan--traditionalist | 2019 | 2020 | 0.771 | 0.529 | 0.242 |
|
||||
| 1663 | IL | cultural cosmopolitan--traditionalist | 2021 | 2022 | 0.142 | 0.356 | 0.214 |
|
||||
| 455 | IL | cultural cosmopolitan--traditionalist | 1997 | 1998 | 0.457 | 0.643 | 0.186 |
|
||||
| 455 | IL | cultural cosmopolitan--traditionalist | 1996 | 1997 | 0.277 | 0.457 | 0.18 |
|
||||
| 8393 | LV | cultural cosmopolitan--traditionalist | 2018 | 2019 | 0.439 | 0.263 | 0.176 |
|
||||
| 281 | BE | cultural cosmopolitan--traditionalist | 1977 | 1978 | 0.671 | 0.843 | 0.173 |
|
||||
| 556 | LT | cultural cosmopolitan--traditionalist | 2001 | 2002 | 0.319 | 0.491 | 0.172 |
|
||||
| 964 | IS | economic left-right | 2016 | 2017 | 0.691 | 0.521 | 0.17 |
|
||||
| 298 | NL | cultural cosmopolitan--traditionalist | 2018 | 2019 | 0.761 | 0.593 | 0.168 |
|
||||
| 901 | FI | economic left-right | 1992 | 1993 | 0.486 | 0.647 | 0.161 |
|
||||
| 467 | SI | cultural cosmopolitan--traditionalist | 2018 | 2019 | 0.564 | 0.404 | 0.16 |
|
||||
| 1221 | IT | economic left-right | 2007 | 2008 | 0.56 | 0.4 | 0.159 |
|
||||
| 901 | FI | economic left-right | 1991 | 1992 | 0.327 | 0.486 | 0.159 |
|
||||
| 455 | IL | cultural cosmopolitan--traditionalist | 1998 | 1999 | 0.643 | 0.797 | 0.154 |
|
||||
| 1221 | IT | economic left-right | 2006 | 2007 | 0.709 | 0.56 | 0.149 |
|
||||
| 2211 | UA | economic left-right | 2006 | 2007 | 0.417 | 0.562 | 0.145 |
|
||||
| 631 | CH | economic left-right | 2018 | 2019 | 0.613 | 0.757 | 0.144 |
|
||||
| 298 | NL | cultural cosmopolitan--traditionalist | 2019 | 2020 | 0.593 | 0.735 | 0.142 |
|
||||
| 556 | LT | cultural cosmopolitan--traditionalist | 2000 | 2001 | 0.181 | 0.319 | 0.138 |
|
||||
| 1417 | IL | cultural cosmopolitan--traditionalist | 1968 | 1969 | 0.498 | 0.635 | 0.137 |
|
||||
|
||||
## Model convergence diagnostics
|
||||
|
||||
Convergence is assessed using split R-hat and effective sample size over monitored parameters.
|
||||
|
||||
| metric | count | percentage |
|
||||
| --- | --- | --- |
|
||||
| R-hat < 1.01 | 35258 | 100 |
|
||||
| R-hat 1.01-1.05 | 0 | 0 |
|
||||
| R-hat > 1.05 | 0 | 0 |
|
||||
| ESS > 1000 | 34853 | 98.85 |
|
||||
| ESS 400-1000 | 405 | 1.15 |
|
||||
| ESS < 400 | 0 | 0 |
|
||||
|
||||
### Convergence by parameter group
|
||||
|
||||
| dimension | parameters | mean_rhat | max_rhat | min_ess_bulk | mean_ess_bulk |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| cultural cosmopolitan--traditionalist | 17585 | 1.001 | 1.006 | 810.509 | 6889.246 |
|
||||
| economic left-right | 17585 | 1 | 1.004 | 670.708 | 5573.456 |
|
||||
| lr_country_offset | 65 | 1.001 | 1.004 | 1078.198 | 5434.868 |
|
||||
| lr_decade_offset | 8 | 1 | 1.001 | 2069.676 | 3372.016 |
|
||||
| lr_sigma | 3 | 1.001 | 1.002 | 1956.611 | 2582.401 |
|
||||
| lr_source_offset | 3 | 1 | 1 | 3477.519 | 3814.374 |
|
||||
| lr_weight | 3 | 1.002 | 1.002 | 1540.806 | 1560.217 |
|
||||
| mean_sigma | 6 | 1.005 | 1.009 | 534.811 | 918.502 |
|
||||
|
||||
## Posterior uncertainty
|
||||
|
||||
The completed party-position output reports posterior standard errors and interval endpoints for both dimensions. These summaries describe the typical uncertainty in the release file used by the report.
|
||||
|
||||
| rows | parties | countries | min_year | max_year | mean_economic_se | median_economic_se | mean_cultural_se | median_cultural_se |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 17585 | 708 | 65 | 1944 | 2025 | 0.065 | 0.063 | 0.058 | 0.055 |
|
||||
|
||||
## Validation diagnostics
|
||||
|
||||
The validation diagnostics combine convergent and discriminant comparisons with expert surveys, posterior predictive coverage, construct checks, and out-of-sample validation when the corresponding outputs are available.
|
||||
|
||||
| diagnostic | dimension | n | pearson_r | spearman_r | mae | coverage |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| convergent validity | economic left-right | 4637 | 0.904 | 0.901 | 0.076 | NA |
|
||||
| convergent validity | cultural cosmopolitan--traditionalist | 1425 | 0.96 | 0.967 | 0.079 | NA |
|
||||
| posterior predictive coverage | economic left-right | 7455 | NA | NA | NA | 0.899 |
|
||||
| posterior predictive coverage | cultural cosmopolitan--traditionalist | 15539 | NA | NA | NA | 0.848 |
|
||||
|
||||
### Discriminant validity
|
||||
|
||||
| model_dim | expert_dim | r_pearson | r_spearman | n | type | diagnostic |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| economic left-right | economic | 0.904 | 0.901 | 4637 | convergent | discriminant validity |
|
||||
| cultural cosmopolitan--traditionalist | economic | 0.422 | 0.435 | 4637 | discriminant | discriminant validity |
|
||||
| cultural cosmopolitan--traditionalist | cultural cosmopolitan--traditionalist | 0.96 | 0.967 | 1425 | convergent | discriminant validity |
|
||||
| economic left-right | cultural cosmopolitan--traditionalist | 0.393 | 0.398 | 1425 | discriminant | discriminant validity |
|
||||
|
||||
### External validation correlations
|
||||
|
||||
| var | dimension | n | pearson_r | mean_absolute_error | coverage_95 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| culsup_vparty | cultural cosmopolitan--traditionalist | 536 | 0.812 | 0.128 | 0.384 |
|
||||
| galtan_ches | cultural cosmopolitan--traditionalist | 222 | 0.959 | 0.079 | 0.523 |
|
||||
| gender_vparty | cultural cosmopolitan--traditionalist | 545 | 0.563 | 0.169 | 0.29 |
|
||||
| immig_vparty | cultural cosmopolitan--traditionalist | 537 | 0.743 | 0.103 | 0.49 |
|
||||
| lgbt_vparty | cultural cosmopolitan--traditionalist | 541 | 0.794 | 0.094 | 0.551 |
|
||||
| relig_vparty | cultural cosmopolitan--traditionalist | 548 | 0.676 | 0.303 | 0.047 |
|
||||
| lrecon_ches | economic left-right | 223 | 0.974 | 0.055 | 0.812 |
|
||||
| lrecon_poppa | economic left-right | 74 | 0.98 | 0.066 | 0.662 |
|
||||
| lrecon_vparty | economic left-right | 534 | 0.866 | 0.088 | 0.674 |
|
||||
| welf_vparty | economic left-right | 534 | 0.682 | 0.176 | 0.363 |
|
||||
|
||||
## Generated tables
|
||||
|
||||
- `alliance_union_harmonization.csv`
|
||||
- `construct_family_positions.csv`
|
||||
- `construct_temporal_stability_flags.csv`
|
||||
- `external_validation_correlations.csv`
|
||||
- `item_coding_orientation.csv`
|
||||
- `item_coverage.csv`
|
||||
- `model_convergence_by_dimension.csv`
|
||||
- `model_convergence_summary.csv`
|
||||
- `party_family_coverage.csv`
|
||||
- `party_year_source_coverage.csv`
|
||||
- `posterior_uncertainty_summary.csv`
|
||||
- `posterior_validation_convergent_summary.csv`
|
||||
- `posterior_validation_discriminant_summary.csv`
|
||||
- `posterior_validation_uncertainty_summary.csv`
|
||||
- `reversed_items.csv`
|
||||
- `source_coverage.csv`
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# Diagnostics
|
||||
|
||||
This folder contains the repository diagnostics report for the Scientific Data Data Descriptor. It is generated from the model-ready inputs and the completed model/post-estimation outputs, so it can only be rerun after the estimation workflow has produced party-position, convergence, and validation artifacts.
|
||||
|
||||
Regenerate from the repository root with:
|
||||
|
||||
```bash
|
||||
Rscript diagnostics/generate_diagnostics.R
|
||||
```
|
||||
|
||||
If model outputs are stored outside the repository root, point the script to them:
|
||||
|
||||
```bash
|
||||
PARTY2D_OUTPUTS_DIR=/path/to/outputs Rscript diagnostics/generate_diagnostics.R
|
||||
```
|
||||
|
||||
Generated files are written to `diagnostics/generated/`. The Markdown report is also copied to `data/releases/party_2d_diagnostics_report_v0.md` for the release bundle.
|
||||
@@ -0,0 +1,387 @@
|
||||
#!/usr/bin/env Rscript
|
||||
|
||||
suppressPackageStartupMessages(library(tidyverse))
|
||||
|
||||
find_repo_root <- function() {
|
||||
args <- commandArgs(trailingOnly = FALSE)
|
||||
file_arg <- "--file="
|
||||
script_arg <- args[startsWith(args, file_arg)][1]
|
||||
if (!is.na(script_arg)) {
|
||||
return(normalizePath(file.path(dirname(sub(file_arg, "", script_arg)), "..")))
|
||||
}
|
||||
if (file.exists("data/text_data.csv")) return(normalizePath(getwd()))
|
||||
stop("Cannot find repository root. Run from the party2d repository root.")
|
||||
}
|
||||
|
||||
repo_root <- find_repo_root()
|
||||
setwd(repo_root)
|
||||
|
||||
release_version <- Sys.getenv("PARTY2D_RELEASE_VERSION", "v0")
|
||||
outputs_dir <- Sys.getenv("PARTY2D_OUTPUTS_DIR", "outputs")
|
||||
if (!grepl("^/", outputs_dir)) outputs_dir <- file.path(repo_root, outputs_dir)
|
||||
if (!dir.exists(outputs_dir)) {
|
||||
stop("Model output directory not found: ", outputs_dir, ". Run estimation/validation first or set PARTY2D_OUTPUTS_DIR.")
|
||||
}
|
||||
|
||||
generated_dir <- file.path(repo_root, "diagnostics", "generated")
|
||||
release_dir <- file.path(repo_root, "data", "releases")
|
||||
dir.create(generated_dir, recursive = TRUE, showWarnings = FALSE)
|
||||
dir.create(release_dir, recursive = TRUE, showWarnings = FALSE)
|
||||
|
||||
required_inputs <- c(
|
||||
"data/text_data.csv",
|
||||
"data/expert.csv",
|
||||
"data/lr_data.csv",
|
||||
"data/union_mapping.csv",
|
||||
"data/party_families.csv"
|
||||
)
|
||||
missing_inputs <- required_inputs[!file.exists(required_inputs)]
|
||||
if (length(missing_inputs) > 0) {
|
||||
stop("Missing required model input files: ", paste(missing_inputs, collapse = ", "))
|
||||
}
|
||||
|
||||
latest_file <- function(path, pattern) {
|
||||
if (!dir.exists(path)) return(NA_character_)
|
||||
files <- list.files(path, pattern = pattern, full.names = TRUE)
|
||||
if (length(files) == 0) return(NA_character_)
|
||||
sort(files)[length(files)]
|
||||
}
|
||||
|
||||
read_if_exists <- function(path) {
|
||||
if (is.na(path) || !file.exists(path)) return(tibble())
|
||||
readr::read_csv(path, show_col_types = FALSE)
|
||||
}
|
||||
|
||||
public_dimension <- function(x) {
|
||||
dplyr::recode(as.character(x),
|
||||
economic_lr = "economic left-right",
|
||||
galtan = "cultural cosmopolitan--traditionalist",
|
||||
Economic = "economic left-right",
|
||||
Cultural = "cultural cosmopolitan--traditionalist",
|
||||
`Economic Left-Right` = "economic left-right",
|
||||
.default = as.character(x)
|
||||
)
|
||||
}
|
||||
|
||||
infer_dimension <- function(type_low, type_high) {
|
||||
dplyr::case_when(
|
||||
type_low %in% c("pro_market", "pro_welfare", "left", "right") |
|
||||
type_high %in% c("pro_market", "pro_welfare", "left", "right") ~ "economic left-right",
|
||||
type_low %in% c("cosmopolitan", "traditional") |
|
||||
type_high %in% c("cosmopolitan", "traditional") ~ "cultural cosmopolitan--traditionalist",
|
||||
TRUE ~ "general left-right"
|
||||
)
|
||||
}
|
||||
|
||||
is_reversed_for_reporting <- function(type_high) {
|
||||
type_high %in% c("pro_welfare", "left", "cosmopolitan")
|
||||
}
|
||||
|
||||
fmt_num <- function(x, digits = 3) {
|
||||
ifelse(is.na(x), "NA", formatC(x, digits = digits, format = "f"))
|
||||
}
|
||||
|
||||
display_path <- function(path) {
|
||||
if (is.na(path) || !nzchar(path)) return("not available")
|
||||
normalized <- normalizePath(path, mustWork = FALSE)
|
||||
root_prefix <- paste0(normalizePath(repo_root, mustWork = FALSE), .Platform$file.sep)
|
||||
if (startsWith(normalized, root_prefix)) return(sub(root_prefix, "", normalized, fixed = TRUE))
|
||||
basename(path)
|
||||
}
|
||||
|
||||
md_table <- function(df, n = Inf) {
|
||||
if (nrow(df) == 0) return("_No rows available._\n")
|
||||
df <- head(df, n)
|
||||
df <- mutate(df, across(everything(), as.character))
|
||||
header <- paste0("| ", paste(names(df), collapse = " | "), " |")
|
||||
sep <- paste0("| ", paste(rep("---", ncol(df)), collapse = " | "), " |")
|
||||
rows <- apply(df, 1, function(x) paste0("| ", paste(x, collapse = " | "), " |"))
|
||||
paste(c(header, sep, rows), collapse = "\n")
|
||||
}
|
||||
|
||||
text_data <- read_csv("data/text_data.csv", show_col_types = FALSE)
|
||||
expert <- read_csv("data/expert.csv", show_col_types = FALSE)
|
||||
lr_data <- read_csv("data/lr_data.csv", show_col_types = FALSE)
|
||||
union_mapping <- read_csv("data/union_mapping.csv", show_col_types = FALSE)
|
||||
party_families <- read_csv("data/party_families.csv", show_col_types = FALSE)
|
||||
|
||||
excluded_poldem <- text_data %>%
|
||||
filter(project == "PolDem", str_detect(str_to_lower(var), "reform"))
|
||||
if (nrow(excluded_poldem) > 0) {
|
||||
stop("Excluded PolDem reform item is present in data/text_data.csv. Final-model diagnostics must be regenerated after removing it.")
|
||||
}
|
||||
|
||||
annual_release <- file.path(release_dir, paste0("party_2d_annual_model_output_", release_version, ".csv.gz"))
|
||||
panel_release <- file.path(release_dir, paste0("party_2d_election_year_panel_", release_version, ".csv.gz"))
|
||||
model_positions_file <- latest_file(file.path(outputs_dir, "estimations", "latest"), "^party_positions_.*\\.csv$")
|
||||
if (is.na(model_positions_file)) {
|
||||
stop("No post-estimation party-position output found under ", outputs_dir, ". Run model estimation/post-estimation first, or set PARTY2D_OUTPUTS_DIR to an outputs directory.")
|
||||
}
|
||||
positions <- read_csv(model_positions_file, show_col_types = FALSE)
|
||||
|
||||
item_rows <- bind_rows(
|
||||
text_data %>%
|
||||
mutate(source_file = "text_data.csv") %>%
|
||||
group_by(source_file, item = var, source = project, type_low, type_high) %>%
|
||||
summarise(observations = n(), party_years = n_distinct(party, year), parties = n_distinct(party), countries = n_distinct(country), min_year = min(year), max_year = max(year), .groups = "drop"),
|
||||
expert %>%
|
||||
mutate(source_file = "expert.csv") %>%
|
||||
group_by(source_file, item = var, source = project, type_low, type_high) %>%
|
||||
summarise(observations = n(), party_years = n_distinct(party, year), parties = n_distinct(party), countries = n_distinct(country), min_year = min(year), max_year = max(year), .groups = "drop"),
|
||||
lr_data %>%
|
||||
mutate(source_file = "lr_data.csv", type_low = NA_character_, type_high = NA_character_) %>%
|
||||
group_by(source_file, item = var, source = project, type_low, type_high) %>%
|
||||
summarise(observations = n(), party_years = n_distinct(party, year), parties = n_distinct(party), countries = n_distinct(country), min_year = min(year), max_year = max(year), .groups = "drop")
|
||||
) %>%
|
||||
mutate(
|
||||
dimension = infer_dimension(type_low, type_high),
|
||||
higher_values_indicate = if_else(is.na(type_high), "source-coded left-right", type_high),
|
||||
reversed_for_reporting = if_else(is_reversed_for_reporting(type_high), "yes", "no")
|
||||
) %>%
|
||||
select(source_file, item, source, dimension, type_low, type_high, higher_values_indicate, reversed_for_reporting, observations, party_years, parties, countries, min_year, max_year) %>%
|
||||
arrange(source_file, source, dimension, item)
|
||||
|
||||
source_coverage <- bind_rows(
|
||||
text_data %>% transmute(source_file = "text_data.csv", source = project, item = var, party, country, year),
|
||||
expert %>% transmute(source_file = "expert.csv", source = project, item = var, party, country, year),
|
||||
lr_data %>% transmute(source_file = "lr_data.csv", source = project, item = var, party, country, year)
|
||||
) %>%
|
||||
group_by(source_file, source) %>%
|
||||
summarise(items = n_distinct(item), observations = n(), party_years = n_distinct(party, year), parties = n_distinct(party), countries = n_distinct(country), min_year = min(year), max_year = max(year), .groups = "drop") %>%
|
||||
arrange(source_file, source)
|
||||
|
||||
party_year_source_coverage <- bind_rows(
|
||||
text_data %>% distinct(party, country, year) %>% mutate(has_text = TRUE, has_expert = FALSE, has_general_lr = FALSE),
|
||||
expert %>% distinct(party, country, year) %>% mutate(has_text = FALSE, has_expert = TRUE, has_general_lr = FALSE),
|
||||
lr_data %>% distinct(party, country, year) %>% mutate(has_text = FALSE, has_expert = FALSE, has_general_lr = TRUE)
|
||||
) %>%
|
||||
group_by(party, country, year) %>%
|
||||
summarise(has_text = any(has_text), has_expert = any(has_expert), has_general_lr = any(has_general_lr), n_source_types = has_text + has_expert + has_general_lr, .groups = "drop") %>%
|
||||
arrange(year, country, party)
|
||||
|
||||
alliance_union_harmonization <- bind_rows(
|
||||
tibble(metric = "constituent_mappings", category = "all", value = nrow(union_mapping)),
|
||||
tibble(metric = "unique_union_or_alliance_ids", category = "all", value = n_distinct(union_mapping$manifesto_pf_id)),
|
||||
tibble(metric = "unique_constituent_party_ids", category = "all", value = n_distinct(union_mapping$expert_pf_id)),
|
||||
union_mapping %>% count(country, name = "value") %>% transmute(metric = "mappings_by_country", category = country, value),
|
||||
union_mapping %>% count(relationship, name = "value") %>% transmute(metric = "mappings_by_relationship", category = relationship, value),
|
||||
union_mapping %>% count(status, name = "value") %>% transmute(metric = "mappings_by_status", category = status, value)
|
||||
)
|
||||
|
||||
party_col <- if ("party_id" %in% names(positions)) "party_id" else "party"
|
||||
party_family_coverage <- positions %>%
|
||||
transmute(partyfacts_id = .data[[party_col]], country, year) %>%
|
||||
inner_join(party_families, by = "partyfacts_id") %>%
|
||||
group_by(family) %>%
|
||||
summarise(parties = n_distinct(partyfacts_id), party_years = n(), countries = n_distinct(country), min_year = min(year), max_year = max(year), .groups = "drop") %>%
|
||||
arrange(desc(party_years))
|
||||
|
||||
convergence_summary_file <- latest_file(file.path(outputs_dir, "diagnostics"), "^convergence_summary_.*\\.csv$")
|
||||
convergence_detail_file <- latest_file(file.path(outputs_dir, "diagnostics"), "^convergence_diagnostics_.*\\.csv$")
|
||||
if (is.na(convergence_summary_file) || is.na(convergence_detail_file)) {
|
||||
stop("Convergence diagnostics not found under ", outputs_dir, ". Run the model diagnostics before generating the report.")
|
||||
}
|
||||
model_convergence_summary <- read_if_exists(convergence_summary_file) %>%
|
||||
mutate(source_file = convergence_summary_file)
|
||||
model_convergence_by_dimension <- read_if_exists(convergence_detail_file) %>%
|
||||
group_by(dimension) %>%
|
||||
summarise(parameters = n(), mean_rhat = mean(rhat, na.rm = TRUE), max_rhat = max(rhat, na.rm = TRUE), min_ess_bulk = min(ess_bulk, na.rm = TRUE), mean_ess_bulk = mean(ess_bulk, na.rm = TRUE), .groups = "drop") %>%
|
||||
mutate(dimension = public_dimension(dimension), source_file = convergence_detail_file) %>%
|
||||
arrange(dimension)
|
||||
|
||||
convergent_summary_file <- latest_file(file.path(outputs_dir, "validation", "latest"), "^convergent_summary_.*\\.csv$")
|
||||
discriminant_summary_file <- latest_file(file.path(outputs_dir, "validation", "latest"), "^discriminant_summary_.*\\.csv$")
|
||||
uncertainty_summary_file <- latest_file(file.path(outputs_dir, "validation", "latest"), "^uncertainty_cic_summary_.*\\.csv$")
|
||||
external_validation_file <- latest_file(file.path(outputs_dir, "validation", "latest"), "^external_validation_.*\\.csv$")
|
||||
construct_families_file <- latest_file(file.path(outputs_dir, "validation", "latest"), "^construct_families_.*\\.csv$")
|
||||
construct_unstable_file <- latest_file(file.path(outputs_dir, "validation", "latest"), "^construct_unstable_.*\\.csv$")
|
||||
if (any(is.na(c(convergent_summary_file, discriminant_summary_file, uncertainty_summary_file, external_validation_file, construct_families_file, construct_unstable_file)))) {
|
||||
stop("Validation diagnostics not found under ", outputs_dir, ". Run validation before generating the report.")
|
||||
}
|
||||
|
||||
convergent_summary <- read_if_exists(convergent_summary_file) %>%
|
||||
mutate(diagnostic = "convergent validity", dimension = public_dimension(dimension))
|
||||
discriminant_summary <- read_if_exists(discriminant_summary_file) %>%
|
||||
mutate(diagnostic = "discriminant validity", model_dim = public_dimension(model_dim), expert_dim = public_dimension(expert_dim))
|
||||
uncertainty_summary <- read_if_exists(uncertainty_summary_file) %>%
|
||||
mutate(diagnostic = "posterior predictive coverage", dimension = public_dimension(dimension))
|
||||
|
||||
external_validation_correlations <- read_if_exists(external_validation_file) %>%
|
||||
group_by(var, dimension) %>%
|
||||
summarise(n = n(), pearson_r = cor(expert_val, model_val, use = "complete.obs"), mean_absolute_error = mean(abs_error, na.rm = TRUE), coverage_95 = mean(covered_95, na.rm = TRUE), .groups = "drop") %>%
|
||||
mutate(dimension = public_dimension(dimension), source_file = external_validation_file) %>%
|
||||
arrange(dimension, var)
|
||||
construct_family_positions <- read_if_exists(construct_families_file) %>%
|
||||
rename(mean_cultural = mean_galtan, sd_cultural = sd_galtan) %>%
|
||||
mutate(source_file = construct_families_file) %>%
|
||||
arrange(mean_economic)
|
||||
construct_temporal_stability <- read_if_exists(construct_unstable_file) %>%
|
||||
mutate(dimension = public_dimension(dimension), source_file = construct_unstable_file) %>%
|
||||
arrange(desc(annual_change))
|
||||
|
||||
posterior_uncertainty <- positions %>%
|
||||
summarise(
|
||||
rows = n(),
|
||||
parties = n_distinct(.data[[party_col]]),
|
||||
countries = n_distinct(country),
|
||||
min_year = min(year),
|
||||
max_year = max(year),
|
||||
mean_economic_se = mean(economic_lr_se, na.rm = TRUE),
|
||||
median_economic_se = median(economic_lr_se, na.rm = TRUE),
|
||||
mean_cultural_se = mean(galtan_se, na.rm = TRUE),
|
||||
median_cultural_se = median(galtan_se, na.rm = TRUE)
|
||||
)
|
||||
|
||||
write_csv(item_rows, file.path(generated_dir, "item_coverage.csv"))
|
||||
write_csv(source_coverage, file.path(generated_dir, "source_coverage.csv"))
|
||||
write_csv(party_year_source_coverage, file.path(generated_dir, "party_year_source_coverage.csv"))
|
||||
write_csv(item_rows, file.path(generated_dir, "item_coding_orientation.csv"))
|
||||
write_csv(filter(item_rows, reversed_for_reporting == "yes"), file.path(generated_dir, "reversed_items.csv"))
|
||||
write_csv(alliance_union_harmonization, file.path(generated_dir, "alliance_union_harmonization.csv"))
|
||||
write_csv(party_family_coverage, file.path(generated_dir, "party_family_coverage.csv"))
|
||||
write_csv(model_convergence_summary, file.path(generated_dir, "model_convergence_summary.csv"))
|
||||
write_csv(model_convergence_by_dimension, file.path(generated_dir, "model_convergence_by_dimension.csv"))
|
||||
write_csv(convergent_summary, file.path(generated_dir, "posterior_validation_convergent_summary.csv"))
|
||||
write_csv(discriminant_summary, file.path(generated_dir, "posterior_validation_discriminant_summary.csv"))
|
||||
write_csv(uncertainty_summary, file.path(generated_dir, "posterior_validation_uncertainty_summary.csv"))
|
||||
write_csv(external_validation_correlations, file.path(generated_dir, "external_validation_correlations.csv"))
|
||||
write_csv(construct_family_positions, file.path(generated_dir, "construct_family_positions.csv"))
|
||||
write_csv(construct_temporal_stability, file.path(generated_dir, "construct_temporal_stability_flags.csv"))
|
||||
write_csv(posterior_uncertainty, file.path(generated_dir, "posterior_uncertainty_summary.csv"))
|
||||
|
||||
item_counts <- item_rows %>% count(source_file, dimension, name = "items")
|
||||
source_counts <- source_coverage %>% select(source_file, source, items, observations, party_years, parties, countries, min_year, max_year)
|
||||
reversed_items <- filter(item_rows, reversed_for_reporting == "yes") %>% select(item, source, dimension, higher_values_indicate, observations, min_year, max_year)
|
||||
conv_display <- model_convergence_summary %>% select(-any_of("source_file"))
|
||||
conv_dim_display <- model_convergence_by_dimension %>% select(-any_of("source_file")) %>% mutate(across(where(is.numeric), ~ round(.x, 3)))
|
||||
val_display <- bind_rows(
|
||||
convergent_summary %>% transmute(diagnostic, dimension, n, pearson_r = round(r_pearson, 3), spearman_r = round(r_spearman, 3), mae = round(mae, 3), coverage = NA_real_),
|
||||
uncertainty_summary %>% transmute(diagnostic, dimension, n, pearson_r = NA_real_, spearman_r = NA_real_, mae = NA_real_, coverage = round(cic, 3))
|
||||
)
|
||||
|
||||
report_lines <- c(
|
||||
"# Diagnostics report",
|
||||
"",
|
||||
paste0("Generated: ", format(Sys.time(), "%Y-%m-%d %H:%M:%S %Z")),
|
||||
paste0("Release: ", release_version),
|
||||
paste0("Model positions source: `", display_path(model_positions_file), "`"),
|
||||
"",
|
||||
"## Overview",
|
||||
"",
|
||||
"This report collects the large technical diagnostics that support the Scientific Data Data Descriptor. It follows the structure of the earlier technical appendix: data and item coverage, coding and scale orientation, party-union harmonization, model convergence, and validation. The report is generated from the model-ready inputs and completed model outputs; it is not part of the raw-data setup workflow.",
|
||||
"",
|
||||
"## Data and item coverage",
|
||||
"",
|
||||
"The model combines text-coded item counts, dimension-specific expert placements, and general left-right expert placements. Text items enter as positive/sample counts, expert items enter as aggregated ratings with scale and expert-count information, and general left-right ratings anchor the relationship between the two dimensions.",
|
||||
"",
|
||||
md_table(item_counts),
|
||||
"",
|
||||
"### Source coverage",
|
||||
"",
|
||||
md_table(source_counts),
|
||||
"",
|
||||
"## Data coding and item orientation",
|
||||
"",
|
||||
"All indicators are oriented toward the two reported dimensions: economic left-right and cultural cosmopolitan--traditionalist. For interpretability, generated diagnostics report whether higher observed values point toward the public high pole or are reversed for reporting. Original source variable names are preserved in the tables.",
|
||||
"",
|
||||
"### Reversed items",
|
||||
"",
|
||||
md_table(reversed_items),
|
||||
"",
|
||||
"## Party unions and electoral coalitions",
|
||||
"",
|
||||
"Alliance and union labels are handled through constituent mappings so the released party identifiers represent individual parties. Shared text evidence can inform constituent parties through the union mapping while expert data continue to constrain individual parties directly.",
|
||||
"",
|
||||
md_table(alliance_union_harmonization %>% head(30)),
|
||||
"",
|
||||
"## Party-family coverage",
|
||||
"",
|
||||
"Party-family classifications are used for construct-validity diagnostics and coverage summaries. The table below reports coverage in the completed model output by family code.",
|
||||
"",
|
||||
md_table(party_family_coverage),
|
||||
"",
|
||||
"### Construct-validity family means",
|
||||
"",
|
||||
"Substantive party-family means provide a construct-validity check: families should follow the expected ordering on the economic left-right and cultural cosmopolitan--traditionalist dimensions.",
|
||||
"",
|
||||
md_table(construct_family_positions %>% select(family_name, n_parties, n_obs, mean_economic, sd_economic, mean_cultural, sd_cultural) %>% mutate(across(where(is.numeric), ~ round(.x, 3)))),
|
||||
"",
|
||||
"### Temporal-stability flags",
|
||||
"",
|
||||
"The model permits movement through random walks, but unusually large one-year changes are flagged for inspection rather than treated as automatic errors.",
|
||||
"",
|
||||
md_table(construct_temporal_stability %>% select(party_id, country, dimension, year_from, year_to, val_from, val_to, annual_change) %>% mutate(across(where(is.numeric), ~ round(.x, 3))), n = 20),
|
||||
"",
|
||||
"## Model convergence diagnostics",
|
||||
"",
|
||||
if (nrow(model_convergence_summary) > 0) "Convergence is assessed using split R-hat and effective sample size over monitored parameters." else "Convergence summary files were not found in the configured outputs directory.",
|
||||
"",
|
||||
md_table(conv_display),
|
||||
"",
|
||||
"### Convergence by parameter group",
|
||||
"",
|
||||
md_table(conv_dim_display),
|
||||
"",
|
||||
"## Posterior uncertainty",
|
||||
"",
|
||||
"The completed party-position output reports posterior standard errors and interval endpoints for both dimensions. These summaries describe the typical uncertainty in the release file used by the report.",
|
||||
"",
|
||||
md_table(posterior_uncertainty %>% mutate(across(where(is.numeric), ~ round(.x, 3)))),
|
||||
"",
|
||||
"## Validation diagnostics",
|
||||
"",
|
||||
"The validation diagnostics combine convergent and discriminant comparisons with expert surveys, posterior predictive coverage, construct checks, and out-of-sample validation when the corresponding outputs are available.",
|
||||
"",
|
||||
md_table(val_display),
|
||||
"",
|
||||
"### Discriminant validity",
|
||||
"",
|
||||
md_table(discriminant_summary %>% select(-any_of("source_file")) %>% mutate(across(where(is.numeric), ~ round(.x, 3)))),
|
||||
"",
|
||||
"### External validation correlations",
|
||||
"",
|
||||
md_table(external_validation_correlations %>% select(-any_of("source_file")) %>% mutate(across(where(is.numeric), ~ round(.x, 3)))),
|
||||
"",
|
||||
"## Generated tables",
|
||||
"",
|
||||
paste0("- `", list.files(generated_dir, pattern = "\\.csv$"), "`"),
|
||||
""
|
||||
)
|
||||
|
||||
report_path <- file.path(generated_dir, "diagnostics_report.md")
|
||||
writeLines(report_lines, report_path)
|
||||
release_report <- file.path(release_dir, paste0("party_2d_diagnostics_report_", release_version, ".md"))
|
||||
invisible(file.copy(report_path, release_report, overwrite = TRUE))
|
||||
|
||||
generated_readme <- c(
|
||||
"# Generated diagnostics",
|
||||
"",
|
||||
"These files are generated by:",
|
||||
"",
|
||||
"```bash",
|
||||
"Rscript diagnostics/generate_diagnostics.R",
|
||||
"```",
|
||||
"",
|
||||
"The command requires completed model/post-estimation outputs. If those outputs are outside the repository root, set `PARTY2D_OUTPUTS_DIR` before running the script.",
|
||||
"",
|
||||
"The main Markdown report is `diagnostics_report.md`; the same report is copied into `data/releases/` for the release files."
|
||||
)
|
||||
writeLines(generated_readme, file.path(generated_dir, "README.md"))
|
||||
|
||||
sha_file <- file.path(release_dir, "SHA256SUMS")
|
||||
release_files_for_sha <- c(
|
||||
paste0("party_2d_election_year_panel_", release_version, ".csv.gz"),
|
||||
paste0("party_2d_annual_model_output_", release_version, ".csv.gz"),
|
||||
basename(release_report)
|
||||
)
|
||||
existing_release_files <- release_files_for_sha[file.exists(file.path(release_dir, release_files_for_sha))]
|
||||
sha_lines <- vapply(existing_release_files, function(f) {
|
||||
old <- getwd()
|
||||
on.exit(setwd(old), add = TRUE)
|
||||
setwd(release_dir)
|
||||
system2("sha256sum", f, stdout = TRUE)
|
||||
}, character(1))
|
||||
writeLines(sha_lines, sha_file)
|
||||
|
||||
message("Diagnostics written to diagnostics/generated")
|
||||
message("Release diagnostics report written to ", release_report)
|
||||
@@ -0,0 +1,11 @@
|
||||
# Generated diagnostics
|
||||
|
||||
These files are generated by:
|
||||
|
||||
```bash
|
||||
Rscript diagnostics/generate_diagnostics.R
|
||||
```
|
||||
|
||||
The command requires completed model/post-estimation outputs. If those outputs are outside the repository root, set `PARTY2D_OUTPUTS_DIR` before running the script.
|
||||
|
||||
The main Markdown report is `diagnostics_report.md`; the same report is copied into `data/releases/` for the release files.
|
||||
@@ -0,0 +1,113 @@
|
||||
metric,category,value
|
||||
constituent_mappings,all,106
|
||||
unique_union_or_alliance_ids,all,76
|
||||
unique_constituent_party_ids,all,100
|
||||
mappings_by_country,AR,5
|
||||
mappings_by_country,AU,2
|
||||
mappings_by_country,BA,1
|
||||
mappings_by_country,BE,4
|
||||
mappings_by_country,BG,5
|
||||
mappings_by_country,BR,6
|
||||
mappings_by_country,CH,1
|
||||
mappings_by_country,CL,8
|
||||
mappings_by_country,CZ,4
|
||||
mappings_by_country,DE,3
|
||||
mappings_by_country,EC,1
|
||||
mappings_by_country,EE,3
|
||||
mappings_by_country,ES,3
|
||||
mappings_by_country,FR,4
|
||||
mappings_by_country,GR,3
|
||||
mappings_by_country,HR,4
|
||||
mappings_by_country,IE,1
|
||||
mappings_by_country,IL,2
|
||||
mappings_by_country,IT,8
|
||||
mappings_by_country,LK,3
|
||||
mappings_by_country,LT,4
|
||||
mappings_by_country,LU,1
|
||||
mappings_by_country,LV,6
|
||||
mappings_by_country,MD,1
|
||||
mappings_by_country,ME,1
|
||||
mappings_by_country,MX,2
|
||||
mappings_by_country,NL,1
|
||||
mappings_by_country,NZ,1
|
||||
mappings_by_country,PE,1
|
||||
mappings_by_country,PL,3
|
||||
mappings_by_country,RO,6
|
||||
mappings_by_country,RS,3
|
||||
mappings_by_country,SK,4
|
||||
mappings_by_country,UY,1
|
||||
mappings_by_relationship,Amaiur (2011) predecessor to EH Bildu; expert data 2014-2024 covers EH Bildu years,1
|
||||
mappings_by_relationship,Arab party coalition (2015-2021); Balad is constituent,1
|
||||
mappings_by_relationship,Arab party coalition (2015-2021); Hadash is core constituent,1
|
||||
mappings_by_relationship,CdL coalition constituent (1994-2008),1
|
||||
mappings_by_relationship,Communist Party of Chile was constituent of Nueva Mayoría (2013-2017) under Concertación PF ID,1
|
||||
mappings_by_relationship,DS merged into SDKÚ-DS,1
|
||||
mappings_by_relationship,HDZ-led coalition variants,1
|
||||
mappings_by_relationship,Humanist Party was Concertación constituent (2005-2009),1
|
||||
mappings_by_relationship,"LLM (bloc-centric): DIKKI was a constituent member of the SYRIZA bloc in the 2007 election, running under its banner and publishing joint manifestos.",1
|
||||
mappings_by_relationship,LLM (bloc-centric): Jaunais laiks (JL) was a founding constituent of the Unity (Vienotība) bloc in 2010 and published joint manifestos under its banner.,1
|
||||
mappings_by_relationship,LLM (bloc-centric): KDS (Christian Democratic Party) is explicitly listed as a constituent member of the 'Christian and Democratic Union - Czech People's Party' bloc in the PartyFacts comments and published joint manifestos with it.,1
|
||||
mappings_by_relationship,"LLM (bloc-centric): Latvijas Zemnieku savienība (LZS) was a core constituent member of the Greens' and Farmers’ Union (ZZS) bloc in 2002, publishing joint manifestos and running under the bloc's banner.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): New Serbia (NS) was a verified constituent member of the 'Democratic Party of Serbia/New Serbia' bloc in the 2008 elections, publishing joint manifestos with DSS.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): PDT (Partido Democrático Trabalhista) was a constituent member of this bloc in multiple elections, including joint manifestos (notably 2010, 2018, and 2022).",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): PL (Partido Liberal) was a constituent member of the bloc in the 2002 election, publishing a joint manifesto.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): PR (Partido da República) was a constituent member of the bloc in the 2010 and 2014 elections, publishing joint manifestos with the bloc.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): PSB (Partido Socialista Brasileiro) was a frequent coalition partner and constituent member of this bloc, including joint manifestos in several elections (notably 2002, 2006, 2010, 2014, and 2022).",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): PT (Partido dos Trabalhadores) was the leading party and consistent constituent of this left/progressive bloc across all listed elections, publishing joint manifestos under its banner.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): PTB (Partido Trabalhista Brasileiro) was a constituent member of the bloc in the 2002 and 2006 elections, participating in joint manifestos.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): The Christian Democratic Party (PDC) was a principal founding member of the Concertación/CPD, running under its banner and signing joint manifestos.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): The Justicialist Party (PJ) was the principal and founding constituent of the Front for Victory (FpV) bloc, running under its banner and publishing joint manifestos in all relevant elections.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): The Party for Democracy (PPD) was a core constituent of the Concertación/CPD, participating in all its joint electoral platforms and manifestos.",1
|
||||
mappings_by_relationship,"LLM (bloc-centric): The Radical Social Democratic Party (PRSD) was a constituent member of the Concertación/CPD, participating in joint electoral lists and manifestos.",1
|
||||
mappings_by_relationship,LLM (bloc-centric): The Serbian Progressive Party (SNS) was the leading and founding constituent of the 'Aleksandar Vučić – Serbia wins / For Our Children / Serbia Must Not Stop' bloc in all listed elections and published joint manifestos under this banner.,1
|
||||
mappings_by_relationship,"LLM (bloc-centric): The Socialist Party of Chile (PS) was a founding and continuous member of the Concertación/CPD, running on joint lists and publishing joint manifestos.",1
|
||||
mappings_by_relationship,LLM: CC (Compromís) published joint manifestos as part of Compromís–Podemos–EUPV (PF ID: 8271) in general elections.,1
|
||||
mappings_by_relationship,"LLM: CD+NVA refers to the joint electoral lists of CD&V and N-VA (mainly 2003-2007); during this period, they published joint manifestos under the CD/V (PF ID: 604) label in the text data.",1
|
||||
mappings_by_relationship,"LLM: CP was a constituent of the SLFP-led United Front and People's Alliance, publishing joint manifestos with SLFP.",1
|
||||
mappings_by_relationship,"LLM: CP/VLSSP often contested as part of the SLFP-led United Front and People's Alliance, typically under joint manifestos with SLFP, but sometimes ran separately; medium confidence due to occasional independent runs.",1
|
||||
mappings_by_relationship,"LLM: DC (Democratic Centre) was a constituent of the Kukuriku coalition, which published joint manifestos under the Kukuriku name (PF ID: 2522) in 2011 and 2015.",1
|
||||
mappings_by_relationship,LLM: DUS (Demokratická únia Slovenska) is the same as DÚS (PF ID: 6629) in the manifesto data; manifestos are published under the union name.,1
|
||||
mappings_by_relationship,"LLM: D|W|U refers to Unia Wolności (UW) and its predecessors/successors, which published manifestos under the UW name (PF ID: 8268) in the text data.",1
|
||||
mappings_by_relationship,LLM: ERP (Res Publica) published joint manifestos as 'RP' (PF ID: 685) in the text data; Res Publica is the Estonian name for the same party.,1
|
||||
mappings_by_relationship,"LLM: FPCyS (Frente Progresista, Cívico y Social) included PS and others; manifestos often under FAP or similar coalitions.",1
|
||||
mappings_by_relationship,"LLM: FR (Frente Renovador) joined FAP in some elections, but also ran independently; likely constituent in FAP manifestos.",1
|
||||
mappings_by_relationship,"LLM: Groen was a constituent party of GroenLinks (GL, PF ID: 1537), which published joint manifestos after its formation; Groen did not publish separate manifestos after joining the union.",1
|
||||
mappings_by_relationship,LLM: HGI (Croatian Civic Initiative) is a small Croatian minority party that typically runs on joint lists with DSCG (Democratic Union of Croats) in Montenegro; manifestos are published under DSCG.,1
|
||||
mappings_by_relationship,"LLM: KSII is the coalition led by NDSV (374); manifestos published under NDSV, not KSII.",1
|
||||
mappings_by_relationship,"LLM: LSSP was a core constituent of the SLFP-led United Front and People's Alliance, publishing joint manifestos with SLFP.",1
|
||||
mappings_by_relationship,"LLM: NATBLNNK is a constituent of TB-LNNK (1704), which published joint manifestos as a union.",1
|
||||
mappings_by_relationship,"LLM: NE (Nuevo Espacio) is a well-known constituent party of the Frente Amplio (FA) coalition, which publishes joint manifestos under the FA name.",1
|
||||
mappings_by_relationship,LLM: NLP (NewLabour Party) was a founding constituent of the Alliance and published joint manifestos under the Alliance name.,1
|
||||
mappings_by_relationship,LLM: Oikologoi Prasinoi (OP) ran jointly with MeRA25 in 2019 as part of the 'MeRA25-Alliance for Breakup' and did not publish a separate manifesto; their program was subsumed under MeRA25.,1
|
||||
mappings_by_relationship,"LLM: P2000 (Perú 2000) was a bloc including Cambio 90 (C90); manifestos were published under the C90/NM/P2000 bloc, which is represented as C90 (PF ID: 4219) in text data.",1
|
||||
mappings_by_relationship,LLM: PBPS (Solidarity–People Before Profit) publishes joint manifestos under PBP (PF ID: 242) in the text data; this is a union.,1
|
||||
mappings_by_relationship,"LLM: PS (Socialist Party) was a core constituent of FAP (Frente Amplio Progresista), which published joint manifestos.",1
|
||||
mappings_by_relationship,"LLM: SNK-ED ran joint lists and published manifestos together with STAN (PF ID: 1707) in parliamentary elections, notably in 2006, under the SNK-ED–STAN label.",1
|
||||
mappings_by_relationship,LLM: Sinistra Ecologia Libertà (SEL) is present in both datasets and publishes manifestos under SEL (PF ID: 1212) in text data.,1
|
||||
mappings_by_relationship,"LLM: The Liberal Party (LP, PF ID: 1998) is the predecessor and constituent of the Liberal Party of Australia (LPA, PF ID: 486); manifestos are published under LPA, not LP.",1
|
||||
mappings_by_relationship,"LLM: The National Party (NAT) is the predecessor and constituent of the National Party of Australia (NPA, PF ID: 1743), which is the name used for joint manifestos after the party's rebranding; manifestos are published under NPA, not NAT.",1
|
||||
mappings_by_relationship,LLM: UNPR was a constituent of the USL (PF ID: 5941) coalition and did not publish its own manifesto; manifestos were issued under the USL name.,1
|
||||
mappings_by_relationship,LLM: Unione di Centro (UC/UDC) is a constituent of UdC (PF ID: 201) in the text data; they publish joint manifestos under UdC.,1
|
||||
mappings_by_relationship,Nowoczesna was core constituent of Koalicja Obywatelska (KO) in 2019 under PO CMP code (progtype=8),1
|
||||
mappings_by_relationship,PASOK-dominated umbrella rebranded 2022,1
|
||||
mappings_by_relationship,PNL was a core constituent of USL coalition (2012 joint manifesto),1
|
||||
mappings_by_relationship,PRI-PVEM electoral coalition (2006-2012) under various names,2
|
||||
mappings_by_relationship,PSD was the lead constituent of USL coalition (2012 joint manifesto),1
|
||||
mappings_by_relationship,Peronist faction no independent manifesto,1
|
||||
mappings_by_relationship,UMP renamed 2015,1
|
||||
mappings_by_relationship,bloc constituent (progtype=5),1
|
||||
mappings_by_relationship,bloc constituent (progtype=8),19
|
||||
mappings_by_relationship,cartel list,1
|
||||
mappings_by_relationship,constituent,3
|
||||
mappings_by_relationship,constituent of alliance,4
|
||||
mappings_by_relationship,core coalition member joint CMP manifesto,2
|
||||
mappings_by_relationship,joint list SDP dominant,1
|
||||
mappings_by_relationship,merger,3
|
||||
mappings_by_relationship,merger constituent,2
|
||||
mappings_by_relationship,name fragment of LDP/LSV/SDS,1
|
||||
mappings_by_relationship,name fragment of LNNK-LZP,1
|
||||
mappings_by_relationship,name fragment of PSD-PC,1
|
||||
mappings_by_relationship,name fragment of PSD-PUR,1
|
||||
mappings_by_relationship,same as Les Républicains duplicate PF ID,1
|
||||
mappings_by_relationship,same party duplicate PF ID,5
|
||||
mappings_by_status,implemented,106
|
||||
|
@@ -0,0 +1,8 @@
|
||||
family,n_parties,n_obs,mean_economic,sd_economic,mean_cultural,sd_cultural,family_name,source_file
|
||||
com,49,1241,0.12001647469327872,0.0901861773223108,0.3834027613298184,0.18041637351915937,Communist/Far Left,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_families_2026-05-04_18-12-36.csv
|
||||
eco,30,723,0.26720980626115975,0.11467133878653364,0.2514849926574344,0.09223964864606182,Green/Ecological,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_families_2026-05-04_18-12-36.csv
|
||||
soc,86,2892,0.3305567447692131,0.1240506242334158,0.3777170994931328,0.13783788204153472,Social Democratic,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_families_2026-05-04_18-12-36.csv
|
||||
chr,41,1596,0.5961213268671609,0.11930537492981286,0.5293978691891922,0.13964161332639527,Christian Democratic,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_families_2026-05-04_18-12-36.csv
|
||||
right,50,975,0.6222552715406671,0.18991001824381296,0.720426765976975,0.15147355617267264,Radical Right,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_families_2026-05-04_18-12-36.csv
|
||||
con,82,2425,0.6519453485719768,0.17791542785462533,0.5375091531921928,0.14258881749137706,Conservative,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_families_2026-05-04_18-12-36.csv
|
||||
lib,81,2063,0.6569946895012412,0.15224833699588255,0.37069062594934565,0.13158056834168683,Liberal,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_families_2026-05-04_18-12-36.csv
|
||||
|
@@ -0,0 +1,60 @@
|
||||
party_id,country,dimension,year_from,year_to,val_from,val_to,change,annual_change,source_file
|
||||
556,LT,cultural cosmopolitan--traditionalist,2019,2020,0.77107951125,0.5289456789999999,0.24213383225000007,0.24213383225000007,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1663,IL,cultural cosmopolitan--traditionalist,2021,2022,0.1423029388125,0.35615504375,0.2138521049375,0.2138521049375,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
455,IL,cultural cosmopolitan--traditionalist,1997,1998,0.456850958125,0.6432782493750001,0.18642729125000007,0.18642729125000007,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
455,IL,cultural cosmopolitan--traditionalist,1996,1997,0.27663313025,0.456850958125,0.180217827875,0.180217827875,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
8393,LV,cultural cosmopolitan--traditionalist,2018,2019,0.4386382122500001,0.2627366591625,0.17590155308750005,0.17590155308750005,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
281,BE,cultural cosmopolitan--traditionalist,1977,1978,0.6706878695,0.843416257375,0.172728387875,0.172728387875,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
556,LT,cultural cosmopolitan--traditionalist,2001,2002,0.318926108375,0.49125159325,0.172325484875,0.172325484875,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
964,IS,economic left-right,2016,2017,0.691268056,0.520838928125,0.17042912787499995,0.17042912787499995,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
298,NL,cultural cosmopolitan--traditionalist,2018,2019,0.760919900625,0.592874692125,0.16804520850000004,0.16804520850000004,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
901,FI,economic left-right,1992,1993,0.486145510375,0.64721287575,0.161067365375,0.161067365375,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
467,SI,cultural cosmopolitan--traditionalist,2018,2019,0.563748886625,0.4041139849999999,0.15963490162500005,0.15963490162500005,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1221,IT,economic left-right,2007,2008,0.559621162375,0.400493563,0.15912759937500004,0.15912759937500004,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
901,FI,economic left-right,1991,1992,0.327277968125,0.486145510375,0.15886754225,0.15886754225,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
455,IL,cultural cosmopolitan--traditionalist,1998,1999,0.6432782493750001,0.7970417803750001,0.15376353099999995,0.15376353099999995,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1221,IT,economic left-right,2006,2007,0.7086087693750001,0.559621162375,0.14898760700000002,0.14898760700000002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
2211,UA,economic left-right,2006,2007,0.416653024,0.5619799204999999,0.1453268964999999,0.1453268964999999,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
631,CH,economic left-right,2018,2019,0.613235049875,0.7569515025,0.143716452625,0.143716452625,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
298,NL,cultural cosmopolitan--traditionalist,2019,2020,0.592874692125,0.734536642,0.14166194987500005,0.14166194987500005,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
556,LT,cultural cosmopolitan--traditionalist,2000,2001,0.180505337875,0.318926108375,0.1384207705,0.1384207705,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1417,IL,cultural cosmopolitan--traditionalist,1968,1969,0.49841048887499995,0.635275993875,0.13686550500000003,0.13686550500000003,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
81,ES,cultural cosmopolitan--traditionalist,1999,2000,0.44213168437499994,0.30819645050000005,0.1339352338749999,0.1339352338749999,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1417,IL,cultural cosmopolitan--traditionalist,1967,1968,0.364764852,0.49841048887499995,0.13364563687499997,0.13364563687499997,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
901,FI,economic left-right,1993,1994,0.64721287575,0.78024709825,0.13303422250000008,0.13303422250000008,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
409,SE,economic left-right,2018,2019,0.4993397851250001,0.6246204093750001,0.12528062425000003,0.12528062425000003,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
48,GR,cultural cosmopolitan--traditionalist,1999,2000,0.471858772375,0.594323158,0.122464385625,0.122464385625,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
212,DK,cultural cosmopolitan--traditionalist,2014,2015,0.339423171125,0.459806116125,0.12038294500000002,0.12038294500000002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
2415,IT,cultural cosmopolitan--traditionalist,2006,2007,0.6143681051250001,0.49546903375,0.11889907137500004,0.11889907137500004,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1369,IT,cultural cosmopolitan--traditionalist,2013,2014,0.7406959332499999,0.6231419237500002,0.11755400949999972,0.11755400949999972,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
5852,IS,cultural cosmopolitan--traditionalist,2018,2019,0.336059923125,0.45280653625,0.116746613125,0.116746613125,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1417,IL,cultural cosmopolitan--traditionalist,1966,1967,0.2487840847,0.364764852,0.11598076729999995,0.11598076729999995,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
828,NL,cultural cosmopolitan--traditionalist,2019,2020,0.399398152875,0.5144400794999999,0.11504192662499996,0.11504192662499996,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
2415,IT,cultural cosmopolitan--traditionalist,2007,2008,0.49546903375,0.3804985986625,0.1149704350875,0.1149704350875,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
828,NL,cultural cosmopolitan--traditionalist,2020,2021,0.5144400794999999,0.6280684987500001,0.11362841925000022,0.11362841925000022,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
573,DE,cultural cosmopolitan--traditionalist,2024,2025,0.34241723825000003,0.4558404575,0.11342321924999998,0.11342321924999998,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1424,BE,economic left-right,1977,1978,0.7125746831249999,0.825810219125,0.11323553600000004,0.11323553600000004,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1173,NO,cultural cosmopolitan--traditionalist,2018,2019,0.353365422125,0.46349993075,0.11013450862499996,0.11013450862499996,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1651,GR,economic left-right,2013,2014,0.441388039625,0.551427035875,0.11003899624999997,0.11003899624999997,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1660,GR,cultural cosmopolitan--traditionalist,2012,2013,0.70537148075,0.8146704603749999,0.1092989796249999,0.1092989796249999,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
433,FR,economic left-right,2018,2019,0.433590134625,0.542142367875,0.10855223325000002,0.10855223325000002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1002,GB,cultural cosmopolitan--traditionalist,2014,2015,0.3184758865,0.2101810030625,0.10829488343750002,0.10829488343750002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
623,AR,economic left-right,1989,1990,0.4145806991249999,0.5228341057499999,0.10825340662499994,0.10825340662499994,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1305,RO,economic left-right,2000,2001,0.553705481625,0.446037918375,0.10766756325,0.10766756325,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
298,NL,cultural cosmopolitan--traditionalist,2020,2021,0.734536642,0.84215486075,0.10761821875,0.10761821875,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1359,PT,economic left-right,2004,2005,0.495169041875,0.602184326875,0.10701528500000002,0.10701528500000002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1651,GR,economic left-right,2012,2013,0.3355888995,0.441388039625,0.10579914012500002,0.10579914012500002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
623,AR,economic left-right,1990,1991,0.5228341057499999,0.62815575375,0.1053216480000001,0.1053216480000001,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1305,RO,economic left-right,2001,2002,0.446037918375,0.3412955855,0.104742332875,0.104742332875,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
455,IL,cultural cosmopolitan--traditionalist,1991,1992,0.5368312063749999,0.432172542875,0.10465866349999992,0.10465866349999992,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
2415,IT,cultural cosmopolitan--traditionalist,2008,2009,0.3804985986625,0.2762634036875,0.104235194975,0.104235194975,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
599,AT,economic left-right,2008,2009,0.4633838822500001,0.567595171125,0.10421128887499996,0.10421128887499996,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
669,CH,cultural cosmopolitan--traditionalist,2016,2017,0.514819538625,0.410640874875,0.10417866374999996,0.10417866374999996,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
5852,IS,cultural cosmopolitan--traditionalist,2017,2018,0.23270289265,0.336059923125,0.10335703047499996,0.10335703047499996,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
669,CH,cultural cosmopolitan--traditionalist,2015,2016,0.617986882875,0.514819538625,0.10316734425000008,0.10316734425000008,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
48,GR,cultural cosmopolitan--traditionalist,2010,2011,0.569647428,0.6723034049999999,0.10265597699999984,0.10265597699999984,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1221,IT,economic left-right,2008,2009,0.400493563,0.50303734575,0.10254378275000003,0.10254378275000003,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1651,GR,economic left-right,2014,2015,0.551427035875,0.6535508147500001,0.10212377887500013,0.10212377887500013,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
1221,IT,economic left-right,2009,2010,0.50303734575,0.604409204875,0.10137185912500002,0.10137185912500002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
975,SI,economic left-right,1990,1991,0.579305296625,0.6803467895000002,0.1010414928750002,0.1010414928750002,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
338,AU,economic left-right,1992,1993,0.791994626125,0.6916490538750002,0.10034557224999983,0.10034557224999983,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/construct_unstable_2026-05-04_18-12-36.csv
|
||||
|
@@ -0,0 +1,237 @@
|
||||
# Diagnostics report
|
||||
|
||||
Generated: 2026-06-15 16:21:39 CEST
|
||||
Release: v0
|
||||
Model positions source: `party_positions_2026-06-12_16-35-01.csv`
|
||||
|
||||
## Overview
|
||||
|
||||
This report collects the large technical diagnostics that support the Scientific Data Data Descriptor. It follows the structure of the earlier technical appendix: data and item coverage, coding and scale orientation, party-union harmonization, model convergence, and validation. The report is generated from the model-ready inputs and completed model outputs; it is not part of the raw-data setup workflow.
|
||||
|
||||
## Data and item coverage
|
||||
|
||||
The model combines text-coded item counts, dimension-specific expert placements, and general left-right expert placements. Text items enter as positive/sample counts, expert items enter as aggregated ratings with scale and expert-count information, and general left-right ratings anchor the relationship between the two dimensions.
|
||||
|
||||
| source_file | dimension | items |
|
||||
| --- | --- | --- |
|
||||
| expert.csv | cultural cosmopolitan--traditionalist | 7 |
|
||||
| expert.csv | economic left-right | 5 |
|
||||
| lr_data.csv | general left-right | 3 |
|
||||
| text_data.csv | cultural cosmopolitan--traditionalist | 11 |
|
||||
| text_data.csv | economic left-right | 6 |
|
||||
|
||||
### Source coverage
|
||||
|
||||
| source_file | source | items | observations | party_years | parties | countries | min_year | max_year |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| expert.csv | CHES | 2 | 2639 | 1320 | 390 | 44 | 1999 | 2024 |
|
||||
| expert.csv | GPS | 2 | 538 | 271 | 271 | 62 | 2019 | 2019 |
|
||||
| expert.csv | POPPA | 1 | 413 | 413 | 225 | 31 | 2018 | 2023 |
|
||||
| expert.csv | V-Party | 7 | 21488 | 3076 | 589 | 65 | 1970 | 2019 |
|
||||
| lr_data.csv | CHES | 1 | 1320 | 1320 | 390 | 44 | 1999 | 2024 |
|
||||
| lr_data.csv | Morgan | 1 | 471 | 471 | 72 | 11 | 1945 | 1973 |
|
||||
| lr_data.csv | POPPA | 1 | 416 | 416 | 225 | 31 | 2018 | 2023 |
|
||||
| text_data.csv | Manifesto Project | 8 | 36008 | 4501 | 713 | 65 | 1920 | 2025 |
|
||||
| text_data.csv | PolDem | 9 | 2194 | 406 | 93 | 15 | 1972 | 2017 |
|
||||
|
||||
## Data coding and item orientation
|
||||
|
||||
All indicators are oriented toward the two reported dimensions: economic left-right and cultural cosmopolitan--traditionalist. For interpretability, generated diagnostics report whether higher observed values point toward the public high pole or are reversed for reporting. Original source variable names are preserved in the tables.
|
||||
|
||||
### Reversed items
|
||||
|
||||
| item | source | dimension | higher_values_indicate | observations | min_year | max_year |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| internationalism_manifesto | Manifesto Project | cultural cosmopolitan--traditionalist | cosmopolitan | 4501 | 1920 | 2025 |
|
||||
| multiculturalism_manifesto | Manifesto Project | cultural cosmopolitan--traditionalist | cosmopolitan | 4501 | 1920 | 2025 |
|
||||
| economic_intervention_manifesto | Manifesto Project | economic left-right | pro_welfare | 4501 | 1920 | 2025 |
|
||||
| social_services_manifesto | Manifesto Project | economic left-right | pro_welfare | 4501 | 1920 | 2025 |
|
||||
| cultlib_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 299 | 1972 | 2017 |
|
||||
| euro_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 93 | 1978 | 2017 |
|
||||
| europe_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 217 | 1972 | 2017 |
|
||||
| immig_poldem | PolDem | cultural cosmopolitan--traditionalist | cosmopolitan | 236 | 1972 | 2017 |
|
||||
| welfare_poldem | PolDem | economic left-right | pro_welfare | 349 | 1972 | 2017 |
|
||||
|
||||
## Party unions and electoral coalitions
|
||||
|
||||
Alliance and union labels are handled through constituent mappings so the released party identifiers represent individual parties. Shared text evidence can inform constituent parties through the union mapping while expert data continue to constrain individual parties directly.
|
||||
|
||||
| metric | category | value |
|
||||
| --- | --- | --- |
|
||||
| constituent_mappings | all | 106 |
|
||||
| unique_union_or_alliance_ids | all | 76 |
|
||||
| unique_constituent_party_ids | all | 100 |
|
||||
| mappings_by_country | AR | 5 |
|
||||
| mappings_by_country | AU | 2 |
|
||||
| mappings_by_country | BA | 1 |
|
||||
| mappings_by_country | BE | 4 |
|
||||
| mappings_by_country | BG | 5 |
|
||||
| mappings_by_country | BR | 6 |
|
||||
| mappings_by_country | CH | 1 |
|
||||
| mappings_by_country | CL | 8 |
|
||||
| mappings_by_country | CZ | 4 |
|
||||
| mappings_by_country | DE | 3 |
|
||||
| mappings_by_country | EC | 1 |
|
||||
| mappings_by_country | EE | 3 |
|
||||
| mappings_by_country | ES | 3 |
|
||||
| mappings_by_country | FR | 4 |
|
||||
| mappings_by_country | GR | 3 |
|
||||
| mappings_by_country | HR | 4 |
|
||||
| mappings_by_country | IE | 1 |
|
||||
| mappings_by_country | IL | 2 |
|
||||
| mappings_by_country | IT | 8 |
|
||||
| mappings_by_country | LK | 3 |
|
||||
| mappings_by_country | LT | 4 |
|
||||
| mappings_by_country | LU | 1 |
|
||||
| mappings_by_country | LV | 6 |
|
||||
| mappings_by_country | MD | 1 |
|
||||
| mappings_by_country | ME | 1 |
|
||||
| mappings_by_country | MX | 2 |
|
||||
| mappings_by_country | NL | 1 |
|
||||
|
||||
## Party-family coverage
|
||||
|
||||
Party-family classifications are used for construct-validity diagnostics and coverage summaries. The table below reports coverage in the completed model output by family code.
|
||||
|
||||
| family | parties | party_years | countries | min_year | max_year |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| soc | 86 | 2892 | 37 | 1944 | 2025 |
|
||||
| con | 82 | 2425 | 34 | 1944 | 2024 |
|
||||
| lib | 81 | 2063 | 35 | 1944 | 2025 |
|
||||
| chr | 41 | 1596 | 24 | 1945 | 2025 |
|
||||
| com | 49 | 1241 | 27 | 1944 | 2025 |
|
||||
| right | 50 | 975 | 26 | 1946 | 2025 |
|
||||
| eco | 30 | 723 | 24 | 1960 | 2024 |
|
||||
| agr | 12 | 592 | 10 | 1944 | 2024 |
|
||||
| spec | 25 | 520 | 14 | 1949 | 2024 |
|
||||
| other | 2 | 40 | 2 | 1992 | 2024 |
|
||||
|
||||
### Construct-validity family means
|
||||
|
||||
Substantive party-family means provide a construct-validity check: families should follow the expected ordering on the economic left-right and cultural cosmopolitan--traditionalist dimensions.
|
||||
|
||||
| family_name | n_parties | n_obs | mean_economic | sd_economic | mean_cultural | sd_cultural |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| Communist/Far Left | 49 | 1241 | 0.12 | 0.09 | 0.383 | 0.18 |
|
||||
| Green/Ecological | 30 | 723 | 0.267 | 0.115 | 0.251 | 0.092 |
|
||||
| Social Democratic | 86 | 2892 | 0.331 | 0.124 | 0.378 | 0.138 |
|
||||
| Christian Democratic | 41 | 1596 | 0.596 | 0.119 | 0.529 | 0.14 |
|
||||
| Radical Right | 50 | 975 | 0.622 | 0.19 | 0.72 | 0.151 |
|
||||
| Conservative | 82 | 2425 | 0.652 | 0.178 | 0.538 | 0.143 |
|
||||
| Liberal | 81 | 2063 | 0.657 | 0.152 | 0.371 | 0.132 |
|
||||
|
||||
### Temporal-stability flags
|
||||
|
||||
The model permits movement through random walks, but unusually large one-year changes are flagged for inspection rather than treated as automatic errors.
|
||||
|
||||
| party_id | country | dimension | year_from | year_to | val_from | val_to | annual_change |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 556 | LT | cultural cosmopolitan--traditionalist | 2019 | 2020 | 0.771 | 0.529 | 0.242 |
|
||||
| 1663 | IL | cultural cosmopolitan--traditionalist | 2021 | 2022 | 0.142 | 0.356 | 0.214 |
|
||||
| 455 | IL | cultural cosmopolitan--traditionalist | 1997 | 1998 | 0.457 | 0.643 | 0.186 |
|
||||
| 455 | IL | cultural cosmopolitan--traditionalist | 1996 | 1997 | 0.277 | 0.457 | 0.18 |
|
||||
| 8393 | LV | cultural cosmopolitan--traditionalist | 2018 | 2019 | 0.439 | 0.263 | 0.176 |
|
||||
| 281 | BE | cultural cosmopolitan--traditionalist | 1977 | 1978 | 0.671 | 0.843 | 0.173 |
|
||||
| 556 | LT | cultural cosmopolitan--traditionalist | 2001 | 2002 | 0.319 | 0.491 | 0.172 |
|
||||
| 964 | IS | economic left-right | 2016 | 2017 | 0.691 | 0.521 | 0.17 |
|
||||
| 298 | NL | cultural cosmopolitan--traditionalist | 2018 | 2019 | 0.761 | 0.593 | 0.168 |
|
||||
| 901 | FI | economic left-right | 1992 | 1993 | 0.486 | 0.647 | 0.161 |
|
||||
| 467 | SI | cultural cosmopolitan--traditionalist | 2018 | 2019 | 0.564 | 0.404 | 0.16 |
|
||||
| 1221 | IT | economic left-right | 2007 | 2008 | 0.56 | 0.4 | 0.159 |
|
||||
| 901 | FI | economic left-right | 1991 | 1992 | 0.327 | 0.486 | 0.159 |
|
||||
| 455 | IL | cultural cosmopolitan--traditionalist | 1998 | 1999 | 0.643 | 0.797 | 0.154 |
|
||||
| 1221 | IT | economic left-right | 2006 | 2007 | 0.709 | 0.56 | 0.149 |
|
||||
| 2211 | UA | economic left-right | 2006 | 2007 | 0.417 | 0.562 | 0.145 |
|
||||
| 631 | CH | economic left-right | 2018 | 2019 | 0.613 | 0.757 | 0.144 |
|
||||
| 298 | NL | cultural cosmopolitan--traditionalist | 2019 | 2020 | 0.593 | 0.735 | 0.142 |
|
||||
| 556 | LT | cultural cosmopolitan--traditionalist | 2000 | 2001 | 0.181 | 0.319 | 0.138 |
|
||||
| 1417 | IL | cultural cosmopolitan--traditionalist | 1968 | 1969 | 0.498 | 0.635 | 0.137 |
|
||||
|
||||
## Model convergence diagnostics
|
||||
|
||||
Convergence is assessed using split R-hat and effective sample size over monitored parameters.
|
||||
|
||||
| metric | count | percentage |
|
||||
| --- | --- | --- |
|
||||
| R-hat < 1.01 | 35258 | 100 |
|
||||
| R-hat 1.01-1.05 | 0 | 0 |
|
||||
| R-hat > 1.05 | 0 | 0 |
|
||||
| ESS > 1000 | 34853 | 98.85 |
|
||||
| ESS 400-1000 | 405 | 1.15 |
|
||||
| ESS < 400 | 0 | 0 |
|
||||
|
||||
### Convergence by parameter group
|
||||
|
||||
| dimension | parameters | mean_rhat | max_rhat | min_ess_bulk | mean_ess_bulk |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| cultural cosmopolitan--traditionalist | 17585 | 1.001 | 1.006 | 810.509 | 6889.246 |
|
||||
| economic left-right | 17585 | 1 | 1.004 | 670.708 | 5573.456 |
|
||||
| lr_country_offset | 65 | 1.001 | 1.004 | 1078.198 | 5434.868 |
|
||||
| lr_decade_offset | 8 | 1 | 1.001 | 2069.676 | 3372.016 |
|
||||
| lr_sigma | 3 | 1.001 | 1.002 | 1956.611 | 2582.401 |
|
||||
| lr_source_offset | 3 | 1 | 1 | 3477.519 | 3814.374 |
|
||||
| lr_weight | 3 | 1.002 | 1.002 | 1540.806 | 1560.217 |
|
||||
| mean_sigma | 6 | 1.005 | 1.009 | 534.811 | 918.502 |
|
||||
|
||||
## Posterior uncertainty
|
||||
|
||||
The completed party-position output reports posterior standard errors and interval endpoints for both dimensions. These summaries describe the typical uncertainty in the release file used by the report.
|
||||
|
||||
| rows | parties | countries | min_year | max_year | mean_economic_se | median_economic_se | mean_cultural_se | median_cultural_se |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 17585 | 708 | 65 | 1944 | 2025 | 0.065 | 0.063 | 0.058 | 0.055 |
|
||||
|
||||
## Validation diagnostics
|
||||
|
||||
The validation diagnostics combine convergent and discriminant comparisons with expert surveys, posterior predictive coverage, construct checks, and out-of-sample validation when the corresponding outputs are available.
|
||||
|
||||
| diagnostic | dimension | n | pearson_r | spearman_r | mae | coverage |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| convergent validity | economic left-right | 4637 | 0.904 | 0.901 | 0.076 | NA |
|
||||
| convergent validity | cultural cosmopolitan--traditionalist | 1425 | 0.96 | 0.967 | 0.079 | NA |
|
||||
| posterior predictive coverage | economic left-right | 7455 | NA | NA | NA | 0.899 |
|
||||
| posterior predictive coverage | cultural cosmopolitan--traditionalist | 15539 | NA | NA | NA | 0.848 |
|
||||
|
||||
### Discriminant validity
|
||||
|
||||
| model_dim | expert_dim | r_pearson | r_spearman | n | type | diagnostic |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| economic left-right | economic | 0.904 | 0.901 | 4637 | convergent | discriminant validity |
|
||||
| cultural cosmopolitan--traditionalist | economic | 0.422 | 0.435 | 4637 | discriminant | discriminant validity |
|
||||
| cultural cosmopolitan--traditionalist | cultural cosmopolitan--traditionalist | 0.96 | 0.967 | 1425 | convergent | discriminant validity |
|
||||
| economic left-right | cultural cosmopolitan--traditionalist | 0.393 | 0.398 | 1425 | discriminant | discriminant validity |
|
||||
|
||||
### External validation correlations
|
||||
|
||||
| var | dimension | n | pearson_r | mean_absolute_error | coverage_95 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| culsup_vparty | cultural cosmopolitan--traditionalist | 536 | 0.812 | 0.128 | 0.384 |
|
||||
| galtan_ches | cultural cosmopolitan--traditionalist | 222 | 0.959 | 0.079 | 0.523 |
|
||||
| gender_vparty | cultural cosmopolitan--traditionalist | 545 | 0.563 | 0.169 | 0.29 |
|
||||
| immig_vparty | cultural cosmopolitan--traditionalist | 537 | 0.743 | 0.103 | 0.49 |
|
||||
| lgbt_vparty | cultural cosmopolitan--traditionalist | 541 | 0.794 | 0.094 | 0.551 |
|
||||
| relig_vparty | cultural cosmopolitan--traditionalist | 548 | 0.676 | 0.303 | 0.047 |
|
||||
| lrecon_ches | economic left-right | 223 | 0.974 | 0.055 | 0.812 |
|
||||
| lrecon_poppa | economic left-right | 74 | 0.98 | 0.066 | 0.662 |
|
||||
| lrecon_vparty | economic left-right | 534 | 0.866 | 0.088 | 0.674 |
|
||||
| welf_vparty | economic left-right | 534 | 0.682 | 0.176 | 0.363 |
|
||||
|
||||
## Generated tables
|
||||
|
||||
- `alliance_union_harmonization.csv`
|
||||
- `construct_family_positions.csv`
|
||||
- `construct_temporal_stability_flags.csv`
|
||||
- `external_validation_correlations.csv`
|
||||
- `item_coding_orientation.csv`
|
||||
- `item_coverage.csv`
|
||||
- `model_convergence_by_dimension.csv`
|
||||
- `model_convergence_summary.csv`
|
||||
- `party_family_coverage.csv`
|
||||
- `party_year_source_coverage.csv`
|
||||
- `posterior_uncertainty_summary.csv`
|
||||
- `posterior_validation_convergent_summary.csv`
|
||||
- `posterior_validation_discriminant_summary.csv`
|
||||
- `posterior_validation_uncertainty_summary.csv`
|
||||
- `reversed_items.csv`
|
||||
- `source_coverage.csv`
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
var,dimension,n,pearson_r,mean_absolute_error,coverage_95,source_file
|
||||
culsup_vparty,cultural cosmopolitan--traditionalist,536,0.8121247297636631,0.12821713597308768,0.3843283582089552,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
galtan_ches,cultural cosmopolitan--traditionalist,222,0.9588005926603757,0.07875607868037135,0.5225225225225225,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
gender_vparty,cultural cosmopolitan--traditionalist,545,0.5626122704047269,0.16947520363543578,0.28990825688073396,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
immig_vparty,cultural cosmopolitan--traditionalist,537,0.7429394940511392,0.10311559715251396,0.4897579143389199,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
lgbt_vparty,cultural cosmopolitan--traditionalist,541,0.7941178030023652,0.09410224229993068,0.5508317929759704,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
relig_vparty,cultural cosmopolitan--traditionalist,548,0.6757229503671286,0.30309927660661495,0.04744525547445255,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
lrecon_ches,economic left-right,223,0.9739626905522167,0.05518814853885153,0.8116591928251121,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
lrecon_poppa,economic left-right,74,0.9799670973969279,0.0660246477855859,0.6621621621621622,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
lrecon_vparty,economic left-right,534,0.8664105550524236,0.08828332773956499,0.6741573033707865,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
welf_vparty,economic left-right,534,0.6821895613302613,0.17587920065205523,0.36329588014981273,/srv/projects/party4d/archive/party2d_replication/outputs/validation/latest/external_validation_2026-03-28_18-37-35.csv
|
||||
|
@@ -0,0 +1,33 @@
|
||||
source_file,item,source,dimension,type_low,type_high,higher_values_indicate,reversed_for_reporting,observations,party_years,parties,countries,min_year,max_year
|
||||
expert.csv,galtan_ches,CHES,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,1319,1319,389,44,1999,2024
|
||||
expert.csv,lrecon_ches,CHES,economic left-right,pro_welfare,pro_market,pro_market,no,1320,1320,390,44,1999,2024
|
||||
expert.csv,libcon_gps,GPS,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,269,269,269,61,2019,2019
|
||||
expert.csv,lrecon_gps,GPS,economic left-right,pro_welfare,pro_market,pro_market,no,269,269,269,62,2019,2019
|
||||
expert.csv,lrecon_poppa,POPPA,economic left-right,pro_welfare,pro_market,pro_market,no,413,413,225,31,2018,2023
|
||||
expert.csv,culsup_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,gender_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3043,3043,586,65,1970,2019
|
||||
expert.csv,immig_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,lgbt_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,relig_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,lrecon_vparty,V-Party,economic left-right,pro_welfare,pro_market,pro_market,no,3075,3075,588,65,1970,2019
|
||||
expert.csv,welf_vparty,V-Party,economic left-right,pro_welfare,pro_market,pro_market,no,3066,3066,585,65,1970,2019
|
||||
lr_data.csv,lr_ches,CHES,general left-right,NA,NA,source-coded left-right,no,1320,1320,390,44,1999,2024
|
||||
lr_data.csv,lr_morgan,Morgan,general left-right,NA,NA,source-coded left-right,no,471,471,72,11,1945,1973
|
||||
lr_data.csv,lr_poppa,POPPA,general left-right,NA,NA,source-coded left-right,no,416,416,225,31,2018,2023
|
||||
text_data.csv,conservative_morality_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,internationalism_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,multiculturalism_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,national_identity_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,economic_intervention_manifesto,Manifesto Project,economic left-right,pro_market,pro_welfare,pro_welfare,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,economic_liberalization_manifesto,Manifesto Project,economic left-right,pro_welfare,pro_market,pro_market,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,market_regulation_manifesto,Manifesto Project,economic left-right,pro_welfare,pro_market,pro_market,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,social_services_manifesto,Manifesto Project,economic left-right,pro_market,pro_welfare,pro_welfare,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,cultlib_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,299,299,78,15,1972,2017
|
||||
text_data.csv,defense_poldem,PolDem,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,243,243,67,15,1972,2017
|
||||
text_data.csv,euro_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,93,93,44,13,1978,2017
|
||||
text_data.csv,europe_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,217,217,66,15,1972,2017
|
||||
text_data.csv,immig_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,236,236,67,14,1972,2017
|
||||
text_data.csv,nationalism_poldem,PolDem,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,131,131,60,15,1974,2017
|
||||
text_data.csv,security_poldem,PolDem,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,265,265,78,15,1972,2017
|
||||
text_data.csv,ecolib_poldem,PolDem,economic left-right,pro_welfare,pro_market,pro_market,no,361,361,85,15,1972,2017
|
||||
text_data.csv,welfare_poldem,PolDem,economic left-right,pro_market,pro_welfare,pro_welfare,yes,349,349,83,15,1972,2017
|
||||
|
@@ -0,0 +1,33 @@
|
||||
source_file,item,source,dimension,type_low,type_high,higher_values_indicate,reversed_for_reporting,observations,party_years,parties,countries,min_year,max_year
|
||||
expert.csv,galtan_ches,CHES,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,1319,1319,389,44,1999,2024
|
||||
expert.csv,lrecon_ches,CHES,economic left-right,pro_welfare,pro_market,pro_market,no,1320,1320,390,44,1999,2024
|
||||
expert.csv,libcon_gps,GPS,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,269,269,269,61,2019,2019
|
||||
expert.csv,lrecon_gps,GPS,economic left-right,pro_welfare,pro_market,pro_market,no,269,269,269,62,2019,2019
|
||||
expert.csv,lrecon_poppa,POPPA,economic left-right,pro_welfare,pro_market,pro_market,no,413,413,225,31,2018,2023
|
||||
expert.csv,culsup_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,gender_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3043,3043,586,65,1970,2019
|
||||
expert.csv,immig_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,lgbt_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,relig_vparty,V-Party,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,3076,3076,589,65,1970,2019
|
||||
expert.csv,lrecon_vparty,V-Party,economic left-right,pro_welfare,pro_market,pro_market,no,3075,3075,588,65,1970,2019
|
||||
expert.csv,welf_vparty,V-Party,economic left-right,pro_welfare,pro_market,pro_market,no,3066,3066,585,65,1970,2019
|
||||
lr_data.csv,lr_ches,CHES,general left-right,NA,NA,source-coded left-right,no,1320,1320,390,44,1999,2024
|
||||
lr_data.csv,lr_morgan,Morgan,general left-right,NA,NA,source-coded left-right,no,471,471,72,11,1945,1973
|
||||
lr_data.csv,lr_poppa,POPPA,general left-right,NA,NA,source-coded left-right,no,416,416,225,31,2018,2023
|
||||
text_data.csv,conservative_morality_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,internationalism_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,multiculturalism_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,national_identity_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,economic_intervention_manifesto,Manifesto Project,economic left-right,pro_market,pro_welfare,pro_welfare,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,economic_liberalization_manifesto,Manifesto Project,economic left-right,pro_welfare,pro_market,pro_market,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,market_regulation_manifesto,Manifesto Project,economic left-right,pro_welfare,pro_market,pro_market,no,4501,4501,713,65,1920,2025
|
||||
text_data.csv,social_services_manifesto,Manifesto Project,economic left-right,pro_market,pro_welfare,pro_welfare,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,cultlib_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,299,299,78,15,1972,2017
|
||||
text_data.csv,defense_poldem,PolDem,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,243,243,67,15,1972,2017
|
||||
text_data.csv,euro_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,93,93,44,13,1978,2017
|
||||
text_data.csv,europe_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,217,217,66,15,1972,2017
|
||||
text_data.csv,immig_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,236,236,67,14,1972,2017
|
||||
text_data.csv,nationalism_poldem,PolDem,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,131,131,60,15,1974,2017
|
||||
text_data.csv,security_poldem,PolDem,cultural cosmopolitan--traditionalist,cosmopolitan,traditional,traditional,no,265,265,78,15,1972,2017
|
||||
text_data.csv,ecolib_poldem,PolDem,economic left-right,pro_welfare,pro_market,pro_market,no,361,361,85,15,1972,2017
|
||||
text_data.csv,welfare_poldem,PolDem,economic left-right,pro_market,pro_welfare,pro_welfare,yes,349,349,83,15,1972,2017
|
||||
|
@@ -0,0 +1,9 @@
|
||||
dimension,parameters,mean_rhat,max_rhat,min_ess_bulk,mean_ess_bulk,source_file
|
||||
cultural cosmopolitan--traditionalist,17585,1.0006424726753271,1.0063876592524996,810.5088684922246,6889.24553993031,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
economic left-right,17585,1.0003816350246089,1.0041031832256586,670.7084347577414,5573.455663381927,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
lr_country_offset,65,1.0007983450724103,1.0042741902159762,1078.1975001602086,5434.867801353405,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
lr_decade_offset,8,1.0003240812347383,1.0011721739400503,2069.6763143867825,3372.015629437053,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
lr_sigma,3,1.0010806271267045,1.001817706171186,1956.6110527635497,2582.401306906664,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
lr_source_offset,3,1.0001329930739762,1.0002839044194227,3477.5194916377077,3814.373810300655,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
lr_weight,3,1.0023083674707072,1.0023587853631075,1540.8061256188755,1560.2173784478186,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
mean_sigma,6,1.00453801817315,1.0092946499280384,534.8105812273362,918.5017536375844,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_diagnostics_2026-06-12_12-53-24.csv
|
||||
|
@@ -0,0 +1,7 @@
|
||||
metric,count,percentage,source_file
|
||||
R-hat < 1.01,35258,100,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_summary_2026-06-12_12-53-24.csv
|
||||
R-hat 1.01-1.05,0,0,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_summary_2026-06-12_12-53-24.csv
|
||||
R-hat > 1.05,0,0,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_summary_2026-06-12_12-53-24.csv
|
||||
ESS > 1000,34853,98.85,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_summary_2026-06-12_12-53-24.csv
|
||||
ESS 400-1000,405,1.15,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_summary_2026-06-12_12-53-24.csv
|
||||
ESS < 400,0,0,/srv/projects/party4d/archive/party2d_replication/outputs/diagnostics/convergence_summary_2026-06-12_12-53-24.csv
|
||||
|
@@ -0,0 +1,11 @@
|
||||
family,parties,party_years,countries,min_year,max_year
|
||||
soc,86,2892,37,1944,2025
|
||||
con,82,2425,34,1944,2024
|
||||
lib,81,2063,35,1944,2025
|
||||
chr,41,1596,24,1945,2025
|
||||
com,49,1241,27,1944,2025
|
||||
right,50,975,26,1946,2025
|
||||
eco,30,723,24,1960,2024
|
||||
agr,12,592,10,1944,2024
|
||||
spec,25,520,14,1949,2024
|
||||
other,2,40,2,1992,2024
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
rows,parties,countries,min_year,max_year,mean_economic_se,median_economic_se,mean_cultural_se,median_cultural_se
|
||||
17585,708,65,1944,2025,0.06480914153714339,0.06297344495207625,0.05830289918910167,0.05511815999995913
|
||||
|
@@ -0,0 +1,3 @@
|
||||
dimension,r_pearson,r_spearman,ci_lower,ci_upper,mae,rmse,n,diagnostic
|
||||
economic left-right,0.9040661964265828,0.9011355686083358,0.8986678208050985,0.9091907336941026,0.07569891833571618,0.09876331318961644,4637,convergent validity
|
||||
cultural cosmopolitan--traditionalist,0.9598645558100498,0.96729961069876,0.9555654780202564,0.96375540322017,0.07890038540202159,0.0987420458613568,1425,convergent validity
|
||||
|
@@ -0,0 +1,5 @@
|
||||
model_dim,expert_dim,r_pearson,r_spearman,n,type,diagnostic
|
||||
economic left-right,economic,0.9040661964265828,0.9011355686083358,4637,convergent,discriminant validity
|
||||
cultural cosmopolitan--traditionalist,economic,0.42228411618900114,0.4352014815908644,4637,discriminant,discriminant validity
|
||||
cultural cosmopolitan--traditionalist,cultural cosmopolitan--traditionalist,0.9598645558100498,0.96729961069876,1425,convergent,discriminant validity
|
||||
economic left-right,cultural cosmopolitan--traditionalist,0.39267427502305646,0.3979530504947876,1425,discriminant,discriminant validity
|
||||
|
@@ -0,0 +1,3 @@
|
||||
dimension,cic,cic_pct,ci_lower,ci_upper,n,covered,diagnostic
|
||||
economic left-right,0.8987256874580818,89.9,0.8916705123992721,0.9053701433508112,7455,6700,posterior predictive coverage
|
||||
cultural cosmopolitan--traditionalist,0.8477379496750113,84.8,0.8420030513784423,0.8533009527490912,15539,13173,posterior predictive coverage
|
||||
|
@@ -0,0 +1,10 @@
|
||||
source_file,item,source,dimension,type_low,type_high,higher_values_indicate,reversed_for_reporting,observations,party_years,parties,countries,min_year,max_year
|
||||
text_data.csv,internationalism_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,multiculturalism_manifesto,Manifesto Project,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,economic_intervention_manifesto,Manifesto Project,economic left-right,pro_market,pro_welfare,pro_welfare,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,social_services_manifesto,Manifesto Project,economic left-right,pro_market,pro_welfare,pro_welfare,yes,4501,4501,713,65,1920,2025
|
||||
text_data.csv,cultlib_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,299,299,78,15,1972,2017
|
||||
text_data.csv,euro_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,93,93,44,13,1978,2017
|
||||
text_data.csv,europe_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,217,217,66,15,1972,2017
|
||||
text_data.csv,immig_poldem,PolDem,cultural cosmopolitan--traditionalist,traditional,cosmopolitan,cosmopolitan,yes,236,236,67,14,1972,2017
|
||||
text_data.csv,welfare_poldem,PolDem,economic left-right,pro_market,pro_welfare,pro_welfare,yes,349,349,83,15,1972,2017
|
||||
|
@@ -0,0 +1,10 @@
|
||||
source_file,source,items,observations,party_years,parties,countries,min_year,max_year
|
||||
expert.csv,CHES,2,2639,1320,390,44,1999,2024
|
||||
expert.csv,GPS,2,538,271,271,62,2019,2019
|
||||
expert.csv,POPPA,1,413,413,225,31,2018,2023
|
||||
expert.csv,V-Party,7,21488,3076,589,65,1970,2019
|
||||
lr_data.csv,CHES,1,1320,1320,390,44,1999,2024
|
||||
lr_data.csv,Morgan,1,471,471,72,11,1945,1973
|
||||
lr_data.csv,POPPA,1,416,416,225,31,2018,2023
|
||||
text_data.csv,Manifesto Project,8,36008,4501,713,65,1920,2025
|
||||
text_data.csv,PolDem,9,2194,406,93,15,1972,2017
|
||||
|
Reference in New Issue
Block a user