Publish party-position estimates and validation materials

This commit is contained in:
Armin Seimel
2026-08-13 15:26:21 +00:00
commit 7666224565
119 changed files with 87813 additions and 0 deletions
+17
View File
@@ -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 PDF report is also copied to `data/releases/` for the release bundle. PDF rendering uses R Markdown/Pandoc and requires a LaTeX engine such as `pdflatex`.
+609
View File
@@ -0,0 +1,609 @@
#!/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.")
}
supplementary_inputs_dir <- Sys.getenv("PARTY2D_SUPPLEMENTARY_INPUTS_DIR", file.path(dirname(repo_root), "archive", "supplementary_inputs"))
if (!grepl("^/", supplementary_inputs_dir)) supplementary_inputs_dir <- file.path(repo_root, supplementary_inputs_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)
}
supplementary_file <- function(...) {
path <- file.path(supplementary_inputs_dir, ...)
if (file.exists(path)) path else NA_character_
}
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(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) %>%
identity()
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)) %>%
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)) %>%
arrange(dimension, var)
construct_family_positions <- read_if_exists(construct_families_file) %>%
rename(mean_cultural = mean_galtan, sd_cultural = sd_galtan) %>%
arrange(mean_economic)
construct_temporal_stability <- read_if_exists(construct_unstable_file) %>%
mutate(dimension = public_dimension(dimension)) %>%
arrange(desc(annual_change))
source_composition_balance <- read_if_exists(supplementary_file("validation", "source_composition_balance.csv")) %>%
mutate(dimension = public_dimension(dimension))
robustness_sensitivity <- read_if_exists(supplementary_file("validation", "table10_sensitivity.csv")) %>%
mutate(
dimension = public_dimension(dimension),
across(everything(), ~ na_if(as.character(.x), "[INSERT VALUE]"))
) %>%
select(specification, ablated_source, dimension, matched_n, correlation_with_production,
mean_abs_difference, median_abs_difference, p95_abs_difference,
mean_interval_width_production, mean_interval_width_ablation)
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(source_composition_balance, file.path(generated_dir, "source_composition_balance.csv"))
write_csv(robustness_sensitivity, file.path(generated_dir, "robustness_sensitivity.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), "`"),
"",
"## Purpose",
"",
"The purpose of this report is to provide the appendix-style diagnostics that document how the released party-position estimates are constructed, checked, and validated. The main article reports the central validation evidence; this report keeps the larger technical tables with the release so readers can inspect item coverage, source coverage, coding orientation, harmonization, convergence, posterior uncertainty, and validation details in one reproducible place.",
"",
"## Overview",
"",
"This report follows the structure of the technical appendix material: data and item coverage, coding and scale orientation, party-union harmonization, construct checks, model convergence, and validation. It 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)))),
"",
"## Evidence-composition balance",
"",
"Evidence-composition balance checks whether estimates informed by different nearby source combinations are systematically shifted relative to rows with both text and expert evidence. The reported differences are adjusted differences on the unit scale relative to the overlapping text-and-expert reference category.",
"",
md_table(source_composition_balance),
"",
"## Robustness and sensitivity checks",
"",
"Sensitivity checks compare the released election-year estimates with source-ablation, segmentation-threshold, and item-screening variants where available. Correlations near one and small absolute differences indicate that the released estimates are stable to the corresponding design choice.",
"",
md_table(robustness_sensitivity),
"",
"## Generated tables",
"",
paste0("- `", list.files(generated_dir, pattern = "\\.csv$"), "`"),
""
)
pdf_source <- file.path(generated_dir, "diagnostics_report.Rmd")
pdf_file <- file.path(generated_dir, "diagnostics_report.pdf")
release_pdf <- file.path(release_dir, paste0("party_2d_diagnostics_report_", release_version, ".pdf"))
pdf_lines <- c(
"---",
"title: \"Diagnostics report\"",
paste0("date: \"", format(Sys.time(), "%Y-%m-%d"), "\""),
"output:",
" pdf_document:",
" toc: true",
" number_sections: true",
" latex_engine: pdflatex",
"geometry: margin=0.75in",
"fontsize: 10pt",
"header-includes:",
" - \\usepackage{booktabs}",
" - \\usepackage{longtable}",
" - \\usepackage{array}",
" - \\usepackage{pdflscape}",
" - \\setlength{\\tabcolsep}{4pt}",
" - \\renewcommand{\\arraystretch}{1.12}",
"---",
"",
"```{r setup, include=FALSE}",
"knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE)",
"print_table <- function(x, n = Inf, size = 'footnotesize') {",
" if (nrow(x) == 0) { cat('No rows available.\\n'); return(invisible(NULL)) }",
" x <- head(x, n)",
" x <- mutate(x, across(everything(), as.character))",
" x[is.na(x)] <- ''",
" names(x) <- gsub('_', ' ', names(x), fixed = TRUE)",
" cat(paste0(\"\\n\\\\begingroup\\\\\", size, \"\\n\"))",
" print(knitr::kable(x, format = 'latex', booktabs = TRUE, longtable = FALSE, digits = 3))",
" cat(\"\\n\\\\endgroup\\n\")",
"}",
"short_dim <- function(x) dplyr::recode(as.character(x), 'cultural cosmopolitan--traditionalist' = 'cultural', 'economic left-right' = 'economic', .default = as.character(x))",
"```",
"",
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), "`"),
"",
"# Purpose",
"",
"The purpose of this report is to provide the appendix-style diagnostics that document how the released party-position estimates are constructed, checked, and validated. The main article reports the central validation evidence; this report keeps the larger technical tables with the release so readers can inspect item coverage, source coverage, coding orientation, harmonization, convergence, posterior uncertainty, and validation details in one reproducible place.",
"",
"# Overview",
"",
"This report follows the structure of the technical appendix material: data and item coverage, coding and scale orientation, party-union harmonization, construct checks, model convergence, and validation. It 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.",
"",
"```{r item-counts, results='asis'}",
"print_table(item_counts %>% mutate(dimension = short_dim(dimension)))",
"```",
"",
"## Source coverage",
"",
"```{r source-coverage, results='asis'}",
"print_table(source_counts %>% transmute(file = recode(source_file, text_data.csv = 'text', expert.csv = 'expert', lr_data.csv = 'general LR'), source, items, obs = observations, party_years, parties, countries, years = paste0(min_year, '--', max_year)), size = 'scriptsize')",
"```",
"",
"Full item-level coverage and coding-orientation details are provided as generated CSV files listed at the end of this report.",
"",
"# 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",
"",
"```{r reversed-items, results='asis'}",
"print_table(reversed_items %>% count(source, dimension = short_dim(dimension), higher_values_indicate, name = '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.",
"",
"```{r union-summary, results='asis'}",
"print_table(alliance_union_harmonization %>% transmute(metric, category, value), n = 40)",
"```",
"",
"# Party-family and construct 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.",
"",
"```{r family-coverage, results='asis'}",
"print_table(party_family_coverage %>% transmute(family, parties, party_years, countries, years = paste0(min_year, '--', max_year)))",
"```",
"",
"## 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.",
"",
"```{r construct-family, results='asis'}",
"print_table(construct_family_positions %>% transmute(family = family_name, parties = n_parties, obs = n_obs, econ_mean = round(mean_economic, 3), econ_sd = round(sd_economic, 3), cult_mean = round(mean_cultural, 3), cult_sd = round(sd_cultural, 3)), size = 'scriptsize')",
"```",
"",
"## 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.",
"",
"```{r temporal-stability, results='asis'}",
"print_table(construct_temporal_stability %>% transmute(party = party_id, country, dim = short_dim(dimension), from = year_from, to = year_to, start = round(val_from, 3), end = round(val_to, 3), annual_change = round(annual_change, 3)), n = 12, size = 'scriptsize')",
"```",
"",
"# Model convergence diagnostics",
"",
"Convergence is assessed using split R-hat and effective sample size over monitored parameters.",
"",
"```{r convergence-summary, results='asis'}",
"print_table(conv_display)",
"```",
"",
"## Convergence by parameter group",
"",
"```{r convergence-dim, results='asis'}",
"print_table(conv_dim_display %>% mutate(dimension = short_dim(dimension)))",
"```",
"",
"# 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.",
"",
"```{r posterior-uncertainty, results='asis'}",
"print_table(posterior_uncertainty %>% transmute(rows, parties, countries, years = paste0(min_year, '--', max_year), mean_econ_se = round(mean_economic_se, 3), median_econ_se = round(median_economic_se, 3), mean_cult_se = round(mean_cultural_se, 3), median_cult_se = round(median_cultural_se, 3)), size = 'scriptsize')",
"```",
"",
"# 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.",
"",
"```{r validation-summary, results='asis'}",
"print_table(val_display %>% mutate(dimension = short_dim(dimension)), size = 'scriptsize')",
"```",
"",
"## Discriminant validity",
"",
"```{r discriminant, results='asis'}",
"print_table(discriminant_summary %>% transmute(type, model = short_dim(model_dim), expert = expert_dim, n, pearson = round(r_pearson, 3), spearman = round(r_spearman, 3)))",
"```",
"",
"## External validation correlations",
"",
"```{r external-validation, results='asis'}",
"print_table(external_validation_correlations %>% transmute(item = var, dim = short_dim(dimension), n, r = round(pearson_r, 3), mae = round(mean_absolute_error, 3), coverage = round(coverage_95, 3)))",
"```",
"",
"# Evidence-composition balance",
"",
"Evidence-composition balance checks whether estimates informed by different nearby source combinations are systematically shifted relative to rows with both text and expert evidence. The reported differences are adjusted differences on the unit scale relative to the overlapping text-and-expert reference category.",
"",
"```{r source-balance, results='asis'}",
"print_table(source_composition_balance %>% transmute(dim = short_dim(dimension), evidence = recode(source_composition_class, both_direct_or_nearby = 'both', text_only_direct_or_nearby = 'text only', expert_only_direct_or_nearby = 'expert only', temporal_propagation = 'temporal'), ref = recode(reference_class, both_direct_or_nearby = 'both'), n, adj_diff = round(adjusted_difference, 3)))",
"```",
"",
"# Robustness and sensitivity checks",
"",
"Sensitivity checks compare the released election-year estimates with source-ablation, segmentation-threshold, and item-screening variants where available. Correlations near one and small absolute differences indicate that the released estimates are stable to the corresponding design choice.",
"",
"```{r robustness-sensitivity, results='asis'}",
"print_table(robustness_sensitivity %>% transmute(spec = specification, source = ablated_source, dim = short_dim(dimension), n = matched_n, r = round(as.numeric(correlation_with_production), 3), mean_abs = round(as.numeric(mean_abs_difference), 3), median_abs = round(as.numeric(median_abs_difference), 3), p95_abs = round(as.numeric(p95_abs_difference), 3)), size = 'scriptsize')",
"```",
"",
"# Generated tables",
"",
paste0("- `", list.files(generated_dir, pattern = "\\.csv$"), "`")
)
writeLines(pdf_lines, pdf_source)
if (!requireNamespace("rmarkdown", quietly = TRUE)) {
stop("The rmarkdown package is required to render the diagnostics PDF.")
}
rmarkdown::render(
input = pdf_source,
output_format = rmarkdown::pdf_document(toc = TRUE, number_sections = TRUE),
output_file = basename(pdf_file),
output_dir = generated_dir,
quiet = TRUE,
envir = environment()
)
invisible(file.copy(pdf_file, release_pdf, overwrite = TRUE))
unlink(c(
pdf_source,
file.path(generated_dir, "diagnostics_report.log"),
file.path(generated_dir, "diagnostics_report.aux"),
file.path(generated_dir, "diagnostics_report.out"),
file.path(generated_dir, "diagnostics_report.toc"),
file.path(generated_dir, "diagnostics_report.tex")
), force = 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 report file is `diagnostics_report.pdf`; the same PDF 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_pdf)
)
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 PDF written to ", release_pdf)
+11
View File
@@ -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 report file is `diagnostics_report.pdf`; the same PDF is copied into `data/releases/` for the release files.
@@ -0,0 +1,39 @@
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_status,implemented,106
1 metric category value
2 constituent_mappings all 106
3 unique_union_or_alliance_ids all 76
4 unique_constituent_party_ids all 100
5 mappings_by_country AR 5
6 mappings_by_country AU 2
7 mappings_by_country BA 1
8 mappings_by_country BE 4
9 mappings_by_country BG 5
10 mappings_by_country BR 6
11 mappings_by_country CH 1
12 mappings_by_country CL 8
13 mappings_by_country CZ 4
14 mappings_by_country DE 3
15 mappings_by_country EC 1
16 mappings_by_country EE 3
17 mappings_by_country ES 3
18 mappings_by_country FR 4
19 mappings_by_country GR 3
20 mappings_by_country HR 4
21 mappings_by_country IE 1
22 mappings_by_country IL 2
23 mappings_by_country IT 8
24 mappings_by_country LK 3
25 mappings_by_country LT 4
26 mappings_by_country LU 1
27 mappings_by_country LV 6
28 mappings_by_country MD 1
29 mappings_by_country ME 1
30 mappings_by_country MX 2
31 mappings_by_country NL 1
32 mappings_by_country NZ 1
33 mappings_by_country PE 1
34 mappings_by_country PL 3
35 mappings_by_country RO 6
36 mappings_by_country RS 3
37 mappings_by_country SK 4
38 mappings_by_country UY 1
39 mappings_by_status implemented 106
@@ -0,0 +1,8 @@
family,n_parties,n_obs,mean_economic,sd_economic,mean_cultural,sd_cultural,family_name
com,49,1241,0.12001647469327872,0.0901861773223108,0.3834027613298184,0.18041637351915937,Communist/Far Left
eco,30,723,0.26720980626115975,0.11467133878653364,0.2514849926574344,0.09223964864606182,Green/Ecological
soc,86,2892,0.3305567447692131,0.1240506242334158,0.3777170994931328,0.13783788204153472,Social Democratic
chr,41,1596,0.5961213268671609,0.11930537492981286,0.5293978691891922,0.13964161332639527,Christian Democratic
right,50,975,0.6222552715406671,0.18991001824381296,0.720426765976975,0.15147355617267264,Radical Right
con,82,2425,0.6519453485719768,0.17791542785462533,0.5375091531921928,0.14258881749137706,Conservative
lib,81,2063,0.6569946895012412,0.15224833699588255,0.37069062594934565,0.13158056834168683,Liberal
1 family n_parties n_obs mean_economic sd_economic mean_cultural sd_cultural family_name
2 com 49 1241 0.12001647469327872 0.0901861773223108 0.3834027613298184 0.18041637351915937 Communist/Far Left
3 eco 30 723 0.26720980626115975 0.11467133878653364 0.2514849926574344 0.09223964864606182 Green/Ecological
4 soc 86 2892 0.3305567447692131 0.1240506242334158 0.3777170994931328 0.13783788204153472 Social Democratic
5 chr 41 1596 0.5961213268671609 0.11930537492981286 0.5293978691891922 0.13964161332639527 Christian Democratic
6 right 50 975 0.6222552715406671 0.18991001824381296 0.720426765976975 0.15147355617267264 Radical Right
7 con 82 2425 0.6519453485719768 0.17791542785462533 0.5375091531921928 0.14258881749137706 Conservative
8 lib 81 2063 0.6569946895012412 0.15224833699588255 0.37069062594934565 0.13158056834168683 Liberal
@@ -0,0 +1,60 @@
party_id,country,dimension,year_from,year_to,val_from,val_to,change,annual_change
556,LT,cultural cosmopolitan--traditionalist,2019,2020,0.77107951125,0.5289456789999999,0.24213383225000007,0.24213383225000007
1663,IL,cultural cosmopolitan--traditionalist,2021,2022,0.1423029388125,0.35615504375,0.2138521049375,0.2138521049375
455,IL,cultural cosmopolitan--traditionalist,1997,1998,0.456850958125,0.6432782493750001,0.18642729125000007,0.18642729125000007
455,IL,cultural cosmopolitan--traditionalist,1996,1997,0.27663313025,0.456850958125,0.180217827875,0.180217827875
8393,LV,cultural cosmopolitan--traditionalist,2018,2019,0.4386382122500001,0.2627366591625,0.17590155308750005,0.17590155308750005
281,BE,cultural cosmopolitan--traditionalist,1977,1978,0.6706878695,0.843416257375,0.172728387875,0.172728387875
556,LT,cultural cosmopolitan--traditionalist,2001,2002,0.318926108375,0.49125159325,0.172325484875,0.172325484875
964,IS,economic left-right,2016,2017,0.691268056,0.520838928125,0.17042912787499995,0.17042912787499995
298,NL,cultural cosmopolitan--traditionalist,2018,2019,0.760919900625,0.592874692125,0.16804520850000004,0.16804520850000004
901,FI,economic left-right,1992,1993,0.486145510375,0.64721287575,0.161067365375,0.161067365375
467,SI,cultural cosmopolitan--traditionalist,2018,2019,0.563748886625,0.4041139849999999,0.15963490162500005,0.15963490162500005
1221,IT,economic left-right,2007,2008,0.559621162375,0.400493563,0.15912759937500004,0.15912759937500004
901,FI,economic left-right,1991,1992,0.327277968125,0.486145510375,0.15886754225,0.15886754225
455,IL,cultural cosmopolitan--traditionalist,1998,1999,0.6432782493750001,0.7970417803750001,0.15376353099999995,0.15376353099999995
1221,IT,economic left-right,2006,2007,0.7086087693750001,0.559621162375,0.14898760700000002,0.14898760700000002
2211,UA,economic left-right,2006,2007,0.416653024,0.5619799204999999,0.1453268964999999,0.1453268964999999
631,CH,economic left-right,2018,2019,0.613235049875,0.7569515025,0.143716452625,0.143716452625
298,NL,cultural cosmopolitan--traditionalist,2019,2020,0.592874692125,0.734536642,0.14166194987500005,0.14166194987500005
556,LT,cultural cosmopolitan--traditionalist,2000,2001,0.180505337875,0.318926108375,0.1384207705,0.1384207705
1417,IL,cultural cosmopolitan--traditionalist,1968,1969,0.49841048887499995,0.635275993875,0.13686550500000003,0.13686550500000003
81,ES,cultural cosmopolitan--traditionalist,1999,2000,0.44213168437499994,0.30819645050000005,0.1339352338749999,0.1339352338749999
1417,IL,cultural cosmopolitan--traditionalist,1967,1968,0.364764852,0.49841048887499995,0.13364563687499997,0.13364563687499997
901,FI,economic left-right,1993,1994,0.64721287575,0.78024709825,0.13303422250000008,0.13303422250000008
409,SE,economic left-right,2018,2019,0.4993397851250001,0.6246204093750001,0.12528062425000003,0.12528062425000003
48,GR,cultural cosmopolitan--traditionalist,1999,2000,0.471858772375,0.594323158,0.122464385625,0.122464385625
212,DK,cultural cosmopolitan--traditionalist,2014,2015,0.339423171125,0.459806116125,0.12038294500000002,0.12038294500000002
2415,IT,cultural cosmopolitan--traditionalist,2006,2007,0.6143681051250001,0.49546903375,0.11889907137500004,0.11889907137500004
1369,IT,cultural cosmopolitan--traditionalist,2013,2014,0.7406959332499999,0.6231419237500002,0.11755400949999972,0.11755400949999972
5852,IS,cultural cosmopolitan--traditionalist,2018,2019,0.336059923125,0.45280653625,0.116746613125,0.116746613125
1417,IL,cultural cosmopolitan--traditionalist,1966,1967,0.2487840847,0.364764852,0.11598076729999995,0.11598076729999995
828,NL,cultural cosmopolitan--traditionalist,2019,2020,0.399398152875,0.5144400794999999,0.11504192662499996,0.11504192662499996
2415,IT,cultural cosmopolitan--traditionalist,2007,2008,0.49546903375,0.3804985986625,0.1149704350875,0.1149704350875
828,NL,cultural cosmopolitan--traditionalist,2020,2021,0.5144400794999999,0.6280684987500001,0.11362841925000022,0.11362841925000022
573,DE,cultural cosmopolitan--traditionalist,2024,2025,0.34241723825000003,0.4558404575,0.11342321924999998,0.11342321924999998
1424,BE,economic left-right,1977,1978,0.7125746831249999,0.825810219125,0.11323553600000004,0.11323553600000004
1173,NO,cultural cosmopolitan--traditionalist,2018,2019,0.353365422125,0.46349993075,0.11013450862499996,0.11013450862499996
1651,GR,economic left-right,2013,2014,0.441388039625,0.551427035875,0.11003899624999997,0.11003899624999997
1660,GR,cultural cosmopolitan--traditionalist,2012,2013,0.70537148075,0.8146704603749999,0.1092989796249999,0.1092989796249999
433,FR,economic left-right,2018,2019,0.433590134625,0.542142367875,0.10855223325000002,0.10855223325000002
1002,GB,cultural cosmopolitan--traditionalist,2014,2015,0.3184758865,0.2101810030625,0.10829488343750002,0.10829488343750002
623,AR,economic left-right,1989,1990,0.4145806991249999,0.5228341057499999,0.10825340662499994,0.10825340662499994
1305,RO,economic left-right,2000,2001,0.553705481625,0.446037918375,0.10766756325,0.10766756325
298,NL,cultural cosmopolitan--traditionalist,2020,2021,0.734536642,0.84215486075,0.10761821875,0.10761821875
1359,PT,economic left-right,2004,2005,0.495169041875,0.602184326875,0.10701528500000002,0.10701528500000002
1651,GR,economic left-right,2012,2013,0.3355888995,0.441388039625,0.10579914012500002,0.10579914012500002
623,AR,economic left-right,1990,1991,0.5228341057499999,0.62815575375,0.1053216480000001,0.1053216480000001
1305,RO,economic left-right,2001,2002,0.446037918375,0.3412955855,0.104742332875,0.104742332875
455,IL,cultural cosmopolitan--traditionalist,1991,1992,0.5368312063749999,0.432172542875,0.10465866349999992,0.10465866349999992
2415,IT,cultural cosmopolitan--traditionalist,2008,2009,0.3804985986625,0.2762634036875,0.104235194975,0.104235194975
599,AT,economic left-right,2008,2009,0.4633838822500001,0.567595171125,0.10421128887499996,0.10421128887499996
669,CH,cultural cosmopolitan--traditionalist,2016,2017,0.514819538625,0.410640874875,0.10417866374999996,0.10417866374999996
5852,IS,cultural cosmopolitan--traditionalist,2017,2018,0.23270289265,0.336059923125,0.10335703047499996,0.10335703047499996
669,CH,cultural cosmopolitan--traditionalist,2015,2016,0.617986882875,0.514819538625,0.10316734425000008,0.10316734425000008
48,GR,cultural cosmopolitan--traditionalist,2010,2011,0.569647428,0.6723034049999999,0.10265597699999984,0.10265597699999984
1221,IT,economic left-right,2008,2009,0.400493563,0.50303734575,0.10254378275000003,0.10254378275000003
1651,GR,economic left-right,2014,2015,0.551427035875,0.6535508147500001,0.10212377887500013,0.10212377887500013
1221,IT,economic left-right,2009,2010,0.50303734575,0.604409204875,0.10137185912500002,0.10137185912500002
975,SI,economic left-right,1990,1991,0.579305296625,0.6803467895000002,0.1010414928750002,0.1010414928750002
338,AU,economic left-right,1992,1993,0.791994626125,0.6916490538750002,0.10034557224999983,0.10034557224999983
1 party_id country dimension year_from year_to val_from val_to change annual_change
2 556 LT cultural cosmopolitan--traditionalist 2019 2020 0.77107951125 0.5289456789999999 0.24213383225000007 0.24213383225000007
3 1663 IL cultural cosmopolitan--traditionalist 2021 2022 0.1423029388125 0.35615504375 0.2138521049375 0.2138521049375
4 455 IL cultural cosmopolitan--traditionalist 1997 1998 0.456850958125 0.6432782493750001 0.18642729125000007 0.18642729125000007
5 455 IL cultural cosmopolitan--traditionalist 1996 1997 0.27663313025 0.456850958125 0.180217827875 0.180217827875
6 8393 LV cultural cosmopolitan--traditionalist 2018 2019 0.4386382122500001 0.2627366591625 0.17590155308750005 0.17590155308750005
7 281 BE cultural cosmopolitan--traditionalist 1977 1978 0.6706878695 0.843416257375 0.172728387875 0.172728387875
8 556 LT cultural cosmopolitan--traditionalist 2001 2002 0.318926108375 0.49125159325 0.172325484875 0.172325484875
9 964 IS economic left-right 2016 2017 0.691268056 0.520838928125 0.17042912787499995 0.17042912787499995
10 298 NL cultural cosmopolitan--traditionalist 2018 2019 0.760919900625 0.592874692125 0.16804520850000004 0.16804520850000004
11 901 FI economic left-right 1992 1993 0.486145510375 0.64721287575 0.161067365375 0.161067365375
12 467 SI cultural cosmopolitan--traditionalist 2018 2019 0.563748886625 0.4041139849999999 0.15963490162500005 0.15963490162500005
13 1221 IT economic left-right 2007 2008 0.559621162375 0.400493563 0.15912759937500004 0.15912759937500004
14 901 FI economic left-right 1991 1992 0.327277968125 0.486145510375 0.15886754225 0.15886754225
15 455 IL cultural cosmopolitan--traditionalist 1998 1999 0.6432782493750001 0.7970417803750001 0.15376353099999995 0.15376353099999995
16 1221 IT economic left-right 2006 2007 0.7086087693750001 0.559621162375 0.14898760700000002 0.14898760700000002
17 2211 UA economic left-right 2006 2007 0.416653024 0.5619799204999999 0.1453268964999999 0.1453268964999999
18 631 CH economic left-right 2018 2019 0.613235049875 0.7569515025 0.143716452625 0.143716452625
19 298 NL cultural cosmopolitan--traditionalist 2019 2020 0.592874692125 0.734536642 0.14166194987500005 0.14166194987500005
20 556 LT cultural cosmopolitan--traditionalist 2000 2001 0.180505337875 0.318926108375 0.1384207705 0.1384207705
21 1417 IL cultural cosmopolitan--traditionalist 1968 1969 0.49841048887499995 0.635275993875 0.13686550500000003 0.13686550500000003
22 81 ES cultural cosmopolitan--traditionalist 1999 2000 0.44213168437499994 0.30819645050000005 0.1339352338749999 0.1339352338749999
23 1417 IL cultural cosmopolitan--traditionalist 1967 1968 0.364764852 0.49841048887499995 0.13364563687499997 0.13364563687499997
24 901 FI economic left-right 1993 1994 0.64721287575 0.78024709825 0.13303422250000008 0.13303422250000008
25 409 SE economic left-right 2018 2019 0.4993397851250001 0.6246204093750001 0.12528062425000003 0.12528062425000003
26 48 GR cultural cosmopolitan--traditionalist 1999 2000 0.471858772375 0.594323158 0.122464385625 0.122464385625
27 212 DK cultural cosmopolitan--traditionalist 2014 2015 0.339423171125 0.459806116125 0.12038294500000002 0.12038294500000002
28 2415 IT cultural cosmopolitan--traditionalist 2006 2007 0.6143681051250001 0.49546903375 0.11889907137500004 0.11889907137500004
29 1369 IT cultural cosmopolitan--traditionalist 2013 2014 0.7406959332499999 0.6231419237500002 0.11755400949999972 0.11755400949999972
30 5852 IS cultural cosmopolitan--traditionalist 2018 2019 0.336059923125 0.45280653625 0.116746613125 0.116746613125
31 1417 IL cultural cosmopolitan--traditionalist 1966 1967 0.2487840847 0.364764852 0.11598076729999995 0.11598076729999995
32 828 NL cultural cosmopolitan--traditionalist 2019 2020 0.399398152875 0.5144400794999999 0.11504192662499996 0.11504192662499996
33 2415 IT cultural cosmopolitan--traditionalist 2007 2008 0.49546903375 0.3804985986625 0.1149704350875 0.1149704350875
34 828 NL cultural cosmopolitan--traditionalist 2020 2021 0.5144400794999999 0.6280684987500001 0.11362841925000022 0.11362841925000022
35 573 DE cultural cosmopolitan--traditionalist 2024 2025 0.34241723825000003 0.4558404575 0.11342321924999998 0.11342321924999998
36 1424 BE economic left-right 1977 1978 0.7125746831249999 0.825810219125 0.11323553600000004 0.11323553600000004
37 1173 NO cultural cosmopolitan--traditionalist 2018 2019 0.353365422125 0.46349993075 0.11013450862499996 0.11013450862499996
38 1651 GR economic left-right 2013 2014 0.441388039625 0.551427035875 0.11003899624999997 0.11003899624999997
39 1660 GR cultural cosmopolitan--traditionalist 2012 2013 0.70537148075 0.8146704603749999 0.1092989796249999 0.1092989796249999
40 433 FR economic left-right 2018 2019 0.433590134625 0.542142367875 0.10855223325000002 0.10855223325000002
41 1002 GB cultural cosmopolitan--traditionalist 2014 2015 0.3184758865 0.2101810030625 0.10829488343750002 0.10829488343750002
42 623 AR economic left-right 1989 1990 0.4145806991249999 0.5228341057499999 0.10825340662499994 0.10825340662499994
43 1305 RO economic left-right 2000 2001 0.553705481625 0.446037918375 0.10766756325 0.10766756325
44 298 NL cultural cosmopolitan--traditionalist 2020 2021 0.734536642 0.84215486075 0.10761821875 0.10761821875
45 1359 PT economic left-right 2004 2005 0.495169041875 0.602184326875 0.10701528500000002 0.10701528500000002
46 1651 GR economic left-right 2012 2013 0.3355888995 0.441388039625 0.10579914012500002 0.10579914012500002
47 623 AR economic left-right 1990 1991 0.5228341057499999 0.62815575375 0.1053216480000001 0.1053216480000001
48 1305 RO economic left-right 2001 2002 0.446037918375 0.3412955855 0.104742332875 0.104742332875
49 455 IL cultural cosmopolitan--traditionalist 1991 1992 0.5368312063749999 0.432172542875 0.10465866349999992 0.10465866349999992
50 2415 IT cultural cosmopolitan--traditionalist 2008 2009 0.3804985986625 0.2762634036875 0.104235194975 0.104235194975
51 599 AT economic left-right 2008 2009 0.4633838822500001 0.567595171125 0.10421128887499996 0.10421128887499996
52 669 CH cultural cosmopolitan--traditionalist 2016 2017 0.514819538625 0.410640874875 0.10417866374999996 0.10417866374999996
53 5852 IS cultural cosmopolitan--traditionalist 2017 2018 0.23270289265 0.336059923125 0.10335703047499996 0.10335703047499996
54 669 CH cultural cosmopolitan--traditionalist 2015 2016 0.617986882875 0.514819538625 0.10316734425000008 0.10316734425000008
55 48 GR cultural cosmopolitan--traditionalist 2010 2011 0.569647428 0.6723034049999999 0.10265597699999984 0.10265597699999984
56 1221 IT economic left-right 2008 2009 0.400493563 0.50303734575 0.10254378275000003 0.10254378275000003
57 1651 GR economic left-right 2014 2015 0.551427035875 0.6535508147500001 0.10212377887500013 0.10212377887500013
58 1221 IT economic left-right 2009 2010 0.50303734575 0.604409204875 0.10137185912500002 0.10137185912500002
59 975 SI economic left-right 1990 1991 0.579305296625 0.6803467895000002 0.1010414928750002 0.1010414928750002
60 338 AU economic left-right 1992 1993 0.791994626125 0.6916490538750002 0.10034557224999983 0.10034557224999983
Binary file not shown.
@@ -0,0 +1,11 @@
var,dimension,n,pearson_r,mean_absolute_error,coverage_95
culsup_vparty,cultural cosmopolitan--traditionalist,536,0.8121247297636631,0.12821713597308768,0.3843283582089552
galtan_ches,cultural cosmopolitan--traditionalist,222,0.9588005926603757,0.07875607868037135,0.5225225225225225
gender_vparty,cultural cosmopolitan--traditionalist,545,0.5626122704047269,0.16947520363543578,0.28990825688073396
immig_vparty,cultural cosmopolitan--traditionalist,537,0.7429394940511392,0.10311559715251396,0.4897579143389199
lgbt_vparty,cultural cosmopolitan--traditionalist,541,0.7941178030023652,0.09410224229993068,0.5508317929759704
relig_vparty,cultural cosmopolitan--traditionalist,548,0.6757229503671286,0.30309927660661495,0.04744525547445255
lrecon_ches,economic left-right,223,0.9739626905522167,0.05518814853885153,0.8116591928251121
lrecon_poppa,economic left-right,74,0.9799670973969279,0.0660246477855859,0.6621621621621622
lrecon_vparty,economic left-right,534,0.8664105550524236,0.08828332773956499,0.6741573033707865
welf_vparty,economic left-right,534,0.6821895613302613,0.17587920065205523,0.36329588014981273
1 var dimension n pearson_r mean_absolute_error coverage_95
2 culsup_vparty cultural cosmopolitan--traditionalist 536 0.8121247297636631 0.12821713597308768 0.3843283582089552
3 galtan_ches cultural cosmopolitan--traditionalist 222 0.9588005926603757 0.07875607868037135 0.5225225225225225
4 gender_vparty cultural cosmopolitan--traditionalist 545 0.5626122704047269 0.16947520363543578 0.28990825688073396
5 immig_vparty cultural cosmopolitan--traditionalist 537 0.7429394940511392 0.10311559715251396 0.4897579143389199
6 lgbt_vparty cultural cosmopolitan--traditionalist 541 0.7941178030023652 0.09410224229993068 0.5508317929759704
7 relig_vparty cultural cosmopolitan--traditionalist 548 0.6757229503671286 0.30309927660661495 0.04744525547445255
8 lrecon_ches economic left-right 223 0.9739626905522167 0.05518814853885153 0.8116591928251121
9 lrecon_poppa economic left-right 74 0.9799670973969279 0.0660246477855859 0.6621621621621622
10 lrecon_vparty economic left-right 534 0.8664105550524236 0.08828332773956499 0.6741573033707865
11 welf_vparty economic left-right 534 0.6821895613302613 0.17587920065205523 0.36329588014981273
@@ -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
1 source_file item source dimension type_low type_high higher_values_indicate reversed_for_reporting observations party_years parties countries min_year max_year
2 expert.csv galtan_ches CHES cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 1319 1319 389 44 1999 2024
3 expert.csv lrecon_ches CHES economic left-right pro_welfare pro_market pro_market no 1320 1320 390 44 1999 2024
4 expert.csv libcon_gps GPS cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 269 269 269 61 2019 2019
5 expert.csv lrecon_gps GPS economic left-right pro_welfare pro_market pro_market no 269 269 269 62 2019 2019
6 expert.csv lrecon_poppa POPPA economic left-right pro_welfare pro_market pro_market no 413 413 225 31 2018 2023
7 expert.csv culsup_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
8 expert.csv gender_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3043 3043 586 65 1970 2019
9 expert.csv immig_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
10 expert.csv lgbt_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
11 expert.csv relig_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
12 expert.csv lrecon_vparty V-Party economic left-right pro_welfare pro_market pro_market no 3075 3075 588 65 1970 2019
13 expert.csv welf_vparty V-Party economic left-right pro_welfare pro_market pro_market no 3066 3066 585 65 1970 2019
14 lr_data.csv lr_ches CHES general left-right NA NA source-coded left-right no 1320 1320 390 44 1999 2024
15 lr_data.csv lr_morgan Morgan general left-right NA NA source-coded left-right no 471 471 72 11 1945 1973
16 lr_data.csv lr_poppa POPPA general left-right NA NA source-coded left-right no 416 416 225 31 2018 2023
17 text_data.csv conservative_morality_manifesto Manifesto Project cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 4501 4501 713 65 1920 2025
18 text_data.csv internationalism_manifesto Manifesto Project cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 4501 4501 713 65 1920 2025
19 text_data.csv multiculturalism_manifesto Manifesto Project cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 4501 4501 713 65 1920 2025
20 text_data.csv national_identity_manifesto Manifesto Project cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 4501 4501 713 65 1920 2025
21 text_data.csv economic_intervention_manifesto Manifesto Project economic left-right pro_market pro_welfare pro_welfare yes 4501 4501 713 65 1920 2025
22 text_data.csv economic_liberalization_manifesto Manifesto Project economic left-right pro_welfare pro_market pro_market no 4501 4501 713 65 1920 2025
23 text_data.csv market_regulation_manifesto Manifesto Project economic left-right pro_welfare pro_market pro_market no 4501 4501 713 65 1920 2025
24 text_data.csv social_services_manifesto Manifesto Project economic left-right pro_market pro_welfare pro_welfare yes 4501 4501 713 65 1920 2025
25 text_data.csv cultlib_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 299 299 78 15 1972 2017
26 text_data.csv defense_poldem PolDem cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 243 243 67 15 1972 2017
27 text_data.csv euro_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 93 93 44 13 1978 2017
28 text_data.csv europe_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 217 217 66 15 1972 2017
29 text_data.csv immig_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 236 236 67 14 1972 2017
30 text_data.csv nationalism_poldem PolDem cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 131 131 60 15 1974 2017
31 text_data.csv security_poldem PolDem cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 265 265 78 15 1972 2017
32 text_data.csv ecolib_poldem PolDem economic left-right pro_welfare pro_market pro_market no 361 361 85 15 1972 2017
33 text_data.csv welfare_poldem PolDem economic left-right pro_market pro_welfare pro_welfare yes 349 349 83 15 1972 2017
+33
View File
@@ -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
1 source_file item source dimension type_low type_high higher_values_indicate reversed_for_reporting observations party_years parties countries min_year max_year
2 expert.csv galtan_ches CHES cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 1319 1319 389 44 1999 2024
3 expert.csv lrecon_ches CHES economic left-right pro_welfare pro_market pro_market no 1320 1320 390 44 1999 2024
4 expert.csv libcon_gps GPS cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 269 269 269 61 2019 2019
5 expert.csv lrecon_gps GPS economic left-right pro_welfare pro_market pro_market no 269 269 269 62 2019 2019
6 expert.csv lrecon_poppa POPPA economic left-right pro_welfare pro_market pro_market no 413 413 225 31 2018 2023
7 expert.csv culsup_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
8 expert.csv gender_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3043 3043 586 65 1970 2019
9 expert.csv immig_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
10 expert.csv lgbt_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
11 expert.csv relig_vparty V-Party cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 3076 3076 589 65 1970 2019
12 expert.csv lrecon_vparty V-Party economic left-right pro_welfare pro_market pro_market no 3075 3075 588 65 1970 2019
13 expert.csv welf_vparty V-Party economic left-right pro_welfare pro_market pro_market no 3066 3066 585 65 1970 2019
14 lr_data.csv lr_ches CHES general left-right NA NA source-coded left-right no 1320 1320 390 44 1999 2024
15 lr_data.csv lr_morgan Morgan general left-right NA NA source-coded left-right no 471 471 72 11 1945 1973
16 lr_data.csv lr_poppa POPPA general left-right NA NA source-coded left-right no 416 416 225 31 2018 2023
17 text_data.csv conservative_morality_manifesto Manifesto Project cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 4501 4501 713 65 1920 2025
18 text_data.csv internationalism_manifesto Manifesto Project cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 4501 4501 713 65 1920 2025
19 text_data.csv multiculturalism_manifesto Manifesto Project cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 4501 4501 713 65 1920 2025
20 text_data.csv national_identity_manifesto Manifesto Project cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 4501 4501 713 65 1920 2025
21 text_data.csv economic_intervention_manifesto Manifesto Project economic left-right pro_market pro_welfare pro_welfare yes 4501 4501 713 65 1920 2025
22 text_data.csv economic_liberalization_manifesto Manifesto Project economic left-right pro_welfare pro_market pro_market no 4501 4501 713 65 1920 2025
23 text_data.csv market_regulation_manifesto Manifesto Project economic left-right pro_welfare pro_market pro_market no 4501 4501 713 65 1920 2025
24 text_data.csv social_services_manifesto Manifesto Project economic left-right pro_market pro_welfare pro_welfare yes 4501 4501 713 65 1920 2025
25 text_data.csv cultlib_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 299 299 78 15 1972 2017
26 text_data.csv defense_poldem PolDem cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 243 243 67 15 1972 2017
27 text_data.csv euro_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 93 93 44 13 1978 2017
28 text_data.csv europe_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 217 217 66 15 1972 2017
29 text_data.csv immig_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 236 236 67 14 1972 2017
30 text_data.csv nationalism_poldem PolDem cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 131 131 60 15 1974 2017
31 text_data.csv security_poldem PolDem cultural cosmopolitan--traditionalist cosmopolitan traditional traditional no 265 265 78 15 1972 2017
32 text_data.csv ecolib_poldem PolDem economic left-right pro_welfare pro_market pro_market no 361 361 85 15 1972 2017
33 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
cultural cosmopolitan--traditionalist,17585,1.0006424726753271,1.0063876592524996,810.5088684922246,6889.24553993031
economic left-right,17585,1.0003816350246089,1.0041031832256586,670.7084347577414,5573.455663381927
lr_country_offset,65,1.0007983450724103,1.0042741902159762,1078.1975001602086,5434.867801353405
lr_decade_offset,8,1.0003240812347383,1.0011721739400503,2069.6763143867825,3372.015629437053
lr_sigma,3,1.0010806271267045,1.001817706171186,1956.6110527635497,2582.401306906664
lr_source_offset,3,1.0001329930739762,1.0002839044194227,3477.5194916377077,3814.373810300655
lr_weight,3,1.0023083674707072,1.0023587853631075,1540.8061256188755,1560.2173784478186
mean_sigma,6,1.00453801817315,1.0092946499280384,534.8105812273362,918.5017536375844
1 dimension parameters mean_rhat max_rhat min_ess_bulk mean_ess_bulk
2 cultural cosmopolitan--traditionalist 17585 1.0006424726753271 1.0063876592524996 810.5088684922246 6889.24553993031
3 economic left-right 17585 1.0003816350246089 1.0041031832256586 670.7084347577414 5573.455663381927
4 lr_country_offset 65 1.0007983450724103 1.0042741902159762 1078.1975001602086 5434.867801353405
5 lr_decade_offset 8 1.0003240812347383 1.0011721739400503 2069.6763143867825 3372.015629437053
6 lr_sigma 3 1.0010806271267045 1.001817706171186 1956.6110527635497 2582.401306906664
7 lr_source_offset 3 1.0001329930739762 1.0002839044194227 3477.5194916377077 3814.373810300655
8 lr_weight 3 1.0023083674707072 1.0023587853631075 1540.8061256188755 1560.2173784478186
9 mean_sigma 6 1.00453801817315 1.0092946499280384 534.8105812273362 918.5017536375844
@@ -0,0 +1,7 @@
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
1 metric count percentage
2 R-hat < 1.01 35258 100
3 R-hat 1.01-1.05 0 0
4 R-hat > 1.05 0 0
5 ESS > 1000 34853 98.85
6 ESS 400-1000 405 1.15
7 ESS < 400 0 0
@@ -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
1 family parties party_years countries min_year max_year
2 soc 86 2892 37 1944 2025
3 con 82 2425 34 1944 2024
4 lib 81 2063 35 1944 2025
5 chr 41 1596 24 1945 2025
6 com 49 1241 27 1944 2025
7 right 50 975 26 1946 2025
8 eco 30 723 24 1960 2024
9 agr 12 592 10 1944 2024
10 spec 25 520 14 1949 2024
11 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
1 rows parties countries min_year max_year mean_economic_se median_economic_se mean_cultural_se median_cultural_se
2 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
1 dimension r_pearson r_spearman ci_lower ci_upper mae rmse n diagnostic
2 economic left-right 0.9040661964265828 0.9011355686083358 0.8986678208050985 0.9091907336941026 0.07569891833571618 0.09876331318961644 4637 convergent validity
3 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
1 model_dim expert_dim r_pearson r_spearman n type diagnostic
2 economic left-right economic 0.9040661964265828 0.9011355686083358 4637 convergent discriminant validity
3 cultural cosmopolitan--traditionalist economic 0.42228411618900114 0.4352014815908644 4637 discriminant discriminant validity
4 cultural cosmopolitan--traditionalist cultural cosmopolitan--traditionalist 0.9598645558100498 0.96729961069876 1425 convergent discriminant validity
5 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
1 dimension cic cic_pct ci_lower ci_upper n covered diagnostic
2 economic left-right 0.8987256874580818 89.9 0.8916705123992721 0.9053701433508112 7455 6700 posterior predictive coverage
3 cultural cosmopolitan--traditionalist 0.8477379496750113 84.8 0.8420030513784423 0.8533009527490912 15539 13173 posterior predictive coverage
+10
View File
@@ -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
1 source_file item source dimension type_low type_high higher_values_indicate reversed_for_reporting observations party_years parties countries min_year max_year
2 text_data.csv internationalism_manifesto Manifesto Project cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 4501 4501 713 65 1920 2025
3 text_data.csv multiculturalism_manifesto Manifesto Project cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 4501 4501 713 65 1920 2025
4 text_data.csv economic_intervention_manifesto Manifesto Project economic left-right pro_market pro_welfare pro_welfare yes 4501 4501 713 65 1920 2025
5 text_data.csv social_services_manifesto Manifesto Project economic left-right pro_market pro_welfare pro_welfare yes 4501 4501 713 65 1920 2025
6 text_data.csv cultlib_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 299 299 78 15 1972 2017
7 text_data.csv euro_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 93 93 44 13 1978 2017
8 text_data.csv europe_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 217 217 66 15 1972 2017
9 text_data.csv immig_poldem PolDem cultural cosmopolitan--traditionalist traditional cosmopolitan cosmopolitan yes 236 236 67 14 1972 2017
10 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,7 @@
specification,ablated_source,dimension,matched_n,correlation_with_production,mean_abs_difference,median_abs_difference,p95_abs_difference,mean_interval_width_production,mean_interval_width_ablation
Source ablation,V Party,economic left-right,4248,0.954,0.05,0.033,0.159,NA,NA
Source ablation,V Party,cultural cosmopolitan--traditionalist,4248,0.898,0.08,0.062,0.228,0.202,0.323
Gap threshold 5 years,NA,economic left-right,4244,0.999,0.003,0.002,0.007,NA,NA
Gap threshold 5 years,NA,cultural cosmopolitan--traditionalist,4244,0.999,0.002,0.001,0.006,NA,NA
Gap threshold 10 years,NA,economic left-right,4265,0.999,0.006,0.006,0.011,NA,NA
Gap threshold 10 years,NA,cultural cosmopolitan--traditionalist,4265,1,0.003,0.002,0.006,NA,NA
1 specification ablated_source dimension matched_n correlation_with_production mean_abs_difference median_abs_difference p95_abs_difference mean_interval_width_production mean_interval_width_ablation
2 Source ablation V Party economic left-right 4248 0.954 0.05 0.033 0.159 NA NA
3 Source ablation V Party cultural cosmopolitan--traditionalist 4248 0.898 0.08 0.062 0.228 0.202 0.323
4 Gap threshold 5 years NA economic left-right 4244 0.999 0.003 0.002 0.007 NA NA
5 Gap threshold 5 years NA cultural cosmopolitan--traditionalist 4244 0.999 0.002 0.001 0.006 NA NA
6 Gap threshold 10 years NA economic left-right 4265 0.999 0.006 0.006 0.011 NA NA
7 Gap threshold 10 years NA cultural cosmopolitan--traditionalist 4265 1 0.003 0.002 0.006 NA NA
@@ -0,0 +1,7 @@
dimension,source_composition_class,reference_class,n,adjusted_difference
economic left-right,text_only_direct_or_nearby,both_direct_or_nearby,4916,0.014
economic left-right,expert_only_direct_or_nearby,both_direct_or_nearby,4916,-0.015
economic left-right,temporal_propagation,both_direct_or_nearby,4916,-0.046
cultural cosmopolitan--traditionalist,text_only_direct_or_nearby,both_direct_or_nearby,4916,0.017
cultural cosmopolitan--traditionalist,expert_only_direct_or_nearby,both_direct_or_nearby,4916,0.038
cultural cosmopolitan--traditionalist,temporal_propagation,both_direct_or_nearby,4916,-0.042
1 dimension source_composition_class reference_class n adjusted_difference
2 economic left-right text_only_direct_or_nearby both_direct_or_nearby 4916 0.014
3 economic left-right expert_only_direct_or_nearby both_direct_or_nearby 4916 -0.015
4 economic left-right temporal_propagation both_direct_or_nearby 4916 -0.046
5 cultural cosmopolitan--traditionalist text_only_direct_or_nearby both_direct_or_nearby 4916 0.017
6 cultural cosmopolitan--traditionalist expert_only_direct_or_nearby both_direct_or_nearby 4916 0.038
7 cultural cosmopolitan--traditionalist temporal_propagation both_direct_or_nearby 4916 -0.042
+10
View File
@@ -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
1 source_file source items observations party_years parties countries min_year max_year
2 expert.csv CHES 2 2639 1320 390 44 1999 2024
3 expert.csv GPS 2 538 271 271 62 2019 2019
4 expert.csv POPPA 1 413 413 225 31 2018 2023
5 expert.csv V-Party 7 21488 3076 589 65 1970 2019
6 lr_data.csv CHES 1 1320 1320 390 44 1999 2024
7 lr_data.csv Morgan 1 471 471 72 11 1945 1973
8 lr_data.csv POPPA 1 416 416 225 31 2018 2023
9 text_data.csv Manifesto Project 8 36008 4501 713 65 1920 2025
10 text_data.csv PolDem 9 2194 406 93 15 1972 2017