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 18c9517..5516700 100644 Binary files a/validation/figures/party_scale_examples.pdf and b/validation/figures/party_scale_examples.pdf differ 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)) +