From 3da2ab57ca7a49acba46250e367f753bcc6ca673 Mon Sep 17 00:00:00 2001 From: Armin Date: Fri, 14 Aug 2026 13:05:00 +0000 Subject: [PATCH] Use continuous trajectories with election endpoints --- validation/CASE_SELECTION.md | 6 +-- validation/figures/party_scale_examples.pdf | Bin 23593 -> 22594 bytes .../outputs/party_scale_example_plot_data.csv | 35 ++++------------ validation/plot_scale_examples.R | 39 ++++++++---------- 4 files changed, 29 insertions(+), 51 deletions(-) diff --git a/validation/CASE_SELECTION.md b/validation/CASE_SELECTION.md index 660bd1b..12b37ab 100644 --- a/validation/CASE_SELECTION.md +++ b/validation/CASE_SELECTION.md @@ -7,9 +7,9 @@ The scale examples are selected to make the two released dimensions substantivel The connected paths show recognizable changes across countries and political traditions: - Hungary: Fidesz (PartyFacts 1691), 1990--2022. -- Denmark: Social Democratic Party (PartyFacts 379), 2007--2019. -- United States: Democratic Party (PartyFacts 432), 1944--2020. +- United States: Democratic Party (PartyFacts 432), 1988--2020. +- Germany: Christian Democratic Union (PartyFacts 1375), 2002--2025. -All election-year posterior means in these windows form the connected paths. The labelled endpoints include 95% latent-position credible intervals. The manuscript uses published historical research to interpret the broad movements without treating the estimates as causal evidence. +All election-year posterior means in these windows form the connected paths. Intermediate observations are line vertices without point symbols. The labelled endpoints correspond to Hungarian parliamentary elections, US presidential elections and German federal elections and include 95% latent-position credible intervals. The manuscript uses published historical research to interpret the broad movements without treating the estimates as causal evidence. The figure contains only these three trajectories. Horizontal and vertical bars show 95% latent-position credible intervals at each labelled endpoint. The machine-readable plotting table retains every path observation. diff --git a/validation/figures/party_scale_examples.pdf b/validation/figures/party_scale_examples.pdf index 18c9517ddc340bb574340e96c9c46f99b09f8e57..5516700cc3f0f235485409c822a706b55ffc4cba 100644 GIT binary patch delta 11854 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 delta 12841 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 diff --git a/validation/outputs/party_scale_example_plot_data.csv b/validation/outputs/party_scale_example_plot_data.csv index 15e59d5..ebddba1 100644 --- a/validation/outputs/party_scale_example_plot_data.csv +++ b/validation/outputs/party_scale_example_plot_data.csv @@ -8,33 +8,7 @@ 1691,"Alliance of Federation of Young Democrats - Christian Democratic People's Party","HU",2014,"Fidesz","trajectory",FALSE,"",0.37904524325,0.3043576,0.4502539,0.7295393835,0.676723975,0.78351645,"both_direct_or_nearby" 1691,"Alliance of Federation of Young Democrats - Christian Democratic People's Party","HU",2018,"Fidesz","trajectory",FALSE,"",0.371665591375,0.280800025,0.4637821,0.86823710225,0.8161685,0.915369475,"both_direct_or_nearby" 1691,"Alliance of Federation of Young Democrats - Christian Democratic People's Party","HU",2022,"Fidesz","trajectory",TRUE,"Fidesz 2022",0.31143068805,0.19161285,0.4433925,0.85010683275,0.781581375,0.9084991,"both_direct_or_nearby" -379,"Social Democratic Party","DK",2007,"Danish Social Democrats","trajectory",TRUE,"Danish Social Democrats 2007",0.2504832553,0.1616851,0.347202325,0.377073825875,0.288222975,0.46642125,"both_direct_or_nearby" -379,"Social Democratic Party","DK",2011,"Danish Social Democrats","trajectory",FALSE,"",0.277551306,0.187687975,0.3698644,0.44217709925,0.351102525,0.5332076,"both_direct_or_nearby" -379,"Social Democratic Party","DK",2015,"Danish Social Democrats","trajectory",FALSE,"",0.2492670365,0.160125675,0.34358355,0.5274942445,0.44580275,0.608968575,"both_direct_or_nearby" -379,"Social Democratic Party","DK",2019,"Danish Social Democrats","trajectory",TRUE,"Danish Social Democrats 2019",0.254542113875,0.180740975,0.32727345,0.440971318625,0.38293125,0.4998911,"both_direct_or_nearby" -432,"Democratic Party","US",1944,"US Democrats","trajectory",TRUE,"US Democrats 1944",0.698409049125,0.5552958,0.824995025,0.399063251375,0.265179225,0.529592,"text_only_direct_or_nearby" -432,"Democratic Party","US",1946,"US Democrats","trajectory",FALSE,"",0.6100566435,0.436287675,0.7680873,0.43006576325,0.30106965,0.5609482,"text_only_direct_or_nearby" -432,"Democratic Party","US",1948,"US Democrats","trajectory",FALSE,"",0.516188009,0.347767775,0.6774628,0.4627546565,0.34296995,0.574057075,"text_only_direct_or_nearby" -432,"Democratic Party","US",1950,"US Democrats","trajectory",FALSE,"",0.4990402315,0.31624725,0.680389925,0.45428776325,0.329907575,0.576572725,"text_only_direct_or_nearby" -432,"Democratic Party","US",1952,"US Democrats","trajectory",FALSE,"",0.480909024125,0.31415515,0.64191195,0.445425776,0.32263375,0.565348275,"text_only_direct_or_nearby" -432,"Democratic Party","US",1954,"US Democrats","trajectory",FALSE,"",0.4676351045,0.2860462,0.6559878,0.4442040055,0.31337035,0.57193295,"text_only_direct_or_nearby" -432,"Democratic Party","US",1956,"US Democrats","trajectory",FALSE,"",0.454944175625,0.282914075,0.62753175,0.441641760625,0.31338675,0.56900755,"text_only_direct_or_nearby" -432,"Democratic Party","US",1958,"US Democrats","trajectory",FALSE,"",0.471283276625,0.28607265,0.6557644,0.4310392955,0.300791925,0.5603127,"text_only_direct_or_nearby" -432,"Democratic Party","US",1960,"US Democrats","trajectory",FALSE,"",0.48889281875,0.31862905,0.6559868,0.419887367125,0.2951369,0.5445245,"text_only_direct_or_nearby" -432,"Democratic Party","US",1962,"US Democrats","trajectory",FALSE,"",0.51785394875,0.338929125,0.694084875,0.44040438625,0.312552375,0.56582825,"text_only_direct_or_nearby" -432,"Democratic Party","US",1964,"US Democrats","trajectory",FALSE,"",0.546579874625,0.39307825,0.694190825,0.4614879695,0.34226625,0.576020475,"text_only_direct_or_nearby" -432,"Democratic Party","US",1966,"US Democrats","trajectory",FALSE,"",0.55771690125,0.386799175,0.723825375,0.47960343075,0.362259975,0.59869045,"text_only_direct_or_nearby" -432,"Democratic Party","US",1968,"US Democrats","trajectory",FALSE,"",0.56956003125,0.421312425,0.71267515,0.49807209025,0.394480575,0.601277575,"both_direct_or_nearby" -432,"Democratic Party","US",1970,"US Democrats","trajectory",FALSE,"",0.51903405975,0.3669889,0.66457315,0.496738669125,0.399482825,0.58992185,"both_direct_or_nearby" -432,"Democratic Party","US",1972,"US Democrats","trajectory",FALSE,"",0.4775428755,0.3428972,0.610643875,0.49040686275,0.4030488,0.57786425,"both_direct_or_nearby" -432,"Democratic Party","US",1974,"US Democrats","trajectory",FALSE,"",0.47660148325,0.33038635,0.62320975,0.49004719075,0.39855135,0.581602525,"both_direct_or_nearby" -432,"Democratic Party","US",1976,"US Democrats","trajectory",FALSE,"",0.464841852875,0.3176285,0.610416,0.481845156875,0.3987983,0.5663995,"both_direct_or_nearby" -432,"Democratic Party","US",1978,"US Democrats","trajectory",FALSE,"",0.479180885,0.33296985,0.628182925,0.471634046125,0.3830498,0.559650875,"both_direct_or_nearby" -432,"Democratic Party","US",1980,"US Democrats","trajectory",FALSE,"",0.47521863525,0.334265075,0.611498675,0.459089784625,0.374301825,0.540956275,"both_direct_or_nearby" -432,"Democratic Party","US",1982,"US Democrats","trajectory",FALSE,"",0.531094059875,0.384578025,0.676582375,0.480199354625,0.390671025,0.568408325,"both_direct_or_nearby" -432,"Democratic Party","US",1984,"US Democrats","trajectory",FALSE,"",0.58084896025,0.448074,0.70587575,0.48393646225,0.3990376,0.566166075,"both_direct_or_nearby" -432,"Democratic Party","US",1986,"US Democrats","trajectory",FALSE,"",0.590921938875,0.445197875,0.729574825,0.500757938625,0.4131278,0.5871789,"both_direct_or_nearby" -432,"Democratic Party","US",1988,"US Democrats","trajectory",FALSE,"",0.591401089625,0.453012225,0.72308005,0.514815462375,0.437706575,0.591401025,"both_direct_or_nearby" +432,"Democratic Party","US",1988,"US Democrats","trajectory",TRUE,"US Democrats 1988",0.591401089625,0.453012225,0.72308005,0.514815462375,0.437706575,0.591401025,"both_direct_or_nearby" 432,"Democratic Party","US",1990,"US Democrats","trajectory",FALSE,"",0.587242934375,0.446163525,0.72656675,0.501517254375,0.416105775,0.588248725,"both_direct_or_nearby" 432,"Democratic Party","US",1992,"US Democrats","trajectory",FALSE,"",0.5747092955,0.4469363,0.697395475,0.49163971825,0.412797475,0.5705842,"both_direct_or_nearby" 432,"Democratic Party","US",1994,"US Democrats","trajectory",FALSE,"",0.55610215325,0.417261925,0.694079775,0.50488034675,0.41940905,0.59045095,"both_direct_or_nearby" @@ -50,3 +24,10 @@ 432,"Democratic Party","US",2014,"US Democrats","trajectory",FALSE,"",0.462867505375,0.326761075,0.602355425,0.389843067375,0.309037225,0.471238225,"both_direct_or_nearby" 432,"Democratic Party","US",2016,"US Democrats","trajectory",FALSE,"",0.388854405625,0.2650008,0.511855575,0.371516706875,0.296737875,0.446610025,"both_direct_or_nearby" 432,"Democratic Party","US",2020,"US Democrats","trajectory",TRUE,"US Democrats 2020",0.299892256625,0.1963003,0.410606025,0.3345769065,0.263694925,0.405684575,"both_direct_or_nearby" +1375,"Christian Democratic Union","DE",2002,"CDU","trajectory",TRUE,"CDU 2002",0.5662687785,0.4670985,0.6639239,0.5928178,0.524601975,0.6619698,"text_only_direct_or_nearby" +1375,"Christian Democratic Union","DE",2005,"CDU","trajectory",FALSE,"",0.693941524125,0.592286025,0.79716525,0.649813595875,0.57372925,0.727141525,"text_only_direct_or_nearby" +1375,"Christian Democratic Union","DE",2009,"CDU","trajectory",FALSE,"",0.596300769875,0.49089575,0.705364025,0.51046619225,0.43561475,0.5847781,"text_only_direct_or_nearby" +1375,"Christian Democratic Union","DE",2013,"CDU","trajectory",FALSE,"",0.551615713125,0.44049295,0.664903275,0.438815553625,0.358045475,0.51677625,"text_only_direct_or_nearby" +1375,"Christian Democratic Union","DE",2017,"CDU","trajectory",FALSE,"",0.466104841625,0.361632325,0.571159725,0.505131957375,0.42971535,0.577635825,"text_only_direct_or_nearby" +1375,"Christian Democratic Union","DE",2021,"CDU","trajectory",FALSE,"",0.57714137175,0.45681705,0.69505505,0.536185121875,0.433751725,0.636189175,"text_only_direct_or_nearby" +1375,"Christian Democratic Union","DE",2025,"CDU","trajectory",TRUE,"CDU 2025",0.64385541825,0.51487475,0.771982925,0.584448501375,0.48172915,0.689545275,"text_only_direct_or_nearby" diff --git a/validation/plot_scale_examples.R b/validation/plot_scale_examples.R index 968b1f9..e70e297 100644 --- a/validation/plot_scale_examples.R +++ b/validation/plot_scale_examples.R @@ -28,10 +28,10 @@ dir.create(figure_dir, recursive = TRUE, showWarnings = FALSE) panel <- read.csv(panel_file, check.names = FALSE) trajectory_spec <- data.frame( - party_id = c(1691, 379, 432), - series = c("Fidesz", "Danish Social Democrats", "US Democrats"), - start_year = c(1990, 2007, 1944), - end_year = c(2022, 2019, 2020) + party_id = c(1691, 432, 1375), + series = c("Fidesz", "US Democrats", "CDU"), + start_year = c(1990, 1988, 2002), + end_year = c(2022, 2020, 2025) ) trajectory_rows <- lapply(seq_len(nrow(trajectory_spec)), function(i) { @@ -48,6 +48,8 @@ trajectory_rows <- lapply(seq_len(nrow(trajectory_spec)), function(i) { d[order(d$year), ] }) trajectories <- do.call(rbind, trajectory_rows) +trajectory_levels <- trajectory_spec$series +trajectories$series <- factor(trajectories$series, levels = trajectory_levels) plot_columns <- c( "party_id", "party_name_english", "country", "year", "series", @@ -67,25 +69,22 @@ labelled <- plot_data[plot_data$is_labelled, ] label_positions <- data.frame( label = c( "Fidesz 1990", "Fidesz 2022", - "Danish Social Democrats 2007", "Danish Social Democrats 2019", - "US Democrats 1944", "US Democrats 2020" + "US Democrats 1988", "US Democrats 2020", + "CDU 2002", "CDU 2025" ), plot_label = c( "Fidesz\n1990", "Fidesz\n2022", - "Danish Social Democrats\n2007", "Danish Social Democrats\n2019", - "US Democrats\n1944", "US Democrats\n2020" + "US Democrats\n1988", "US Democrats\n2020", + "CDU\n2002", "CDU\n2025" ), - label_x = c(.84, .36, .12, .33, .73, .36), - label_y = c(.36, .93, .32, .49, .33, .27) + label_x = c(.84, .36, .48, .35, .53, .72), + label_y = c(.36, .93, .47, .27, .66, .57) ) labelled <- merge(labelled, label_positions, by = "label", all.x = TRUE, sort = FALSE) if (anyNA(labelled$label_x) || anyNA(labelled$label_y)) { stop("Missing manual label position for a displayed scale example") } -trajectory_levels <- trajectory_spec$series -trajectories$series <- factor(trajectories$series, levels = trajectory_levels) - p <- ggplot() + geom_path( data = trajectories, @@ -93,11 +92,6 @@ p <- ggplot() + linewidth = .85, arrow = grid::arrow(type = "closed", length = grid::unit(.065, "inches")) ) + - geom_point( - data = trajectories, - aes(x = economic_lr, y = galtan, colour = series, shape = series), - size = 1.4 - ) + geom_errorbar( data = labelled, aes(x = economic_lr, ymin = galtan_q025, ymax = galtan_q975, colour = series), @@ -124,13 +118,16 @@ p <- ggplot() + size = 2.6, lineheight = .9 ) + scale_linetype_manual( - values = c("Fidesz" = "solid", "Danish Social Democrats" = "dashed", "US Democrats" = "dotdash") + values = c("Fidesz" = "solid", "US Democrats" = "dotdash", "CDU" = "dashed"), + breaks = trajectory_levels ) + scale_colour_manual( - values = c("Fidesz" = "#D55E00", "Danish Social Democrats" = "#009E73", "US Democrats" = "#0072B2") + values = c("Fidesz" = "#D55E00", "US Democrats" = "#0072B2", "CDU" = "#009E73"), + breaks = trajectory_levels ) + scale_shape_manual( - values = c("Fidesz" = 16, "Danish Social Democrats" = 17, "US Democrats" = 15) + values = c("Fidesz" = 16, "US Democrats" = 15, "CDU" = 17), + breaks = trajectory_levels ) + scale_x_continuous(limits = c(0, 1), breaks = c(0, .25, .5, .75, 1)) + scale_y_continuous(limits = c(0, 1), breaks = c(0, .25, .5, .75, 1)) +