Deliberative Mini-Publics as Political Decision Mechanism

Perspective from Citizens and Elected Representatives

Obs: data fra politikerpanelet er ikke analysert ennå, så det som står her nå dreier seg om data fra Medborgerpanelet.

Abstract

This study explores the legitimacy of making political decisions based on input from deliberative mini-publics, an approach increasingly discussed as an alternative to traditional decision-making mechanisms. We survey the opinins of voters and of elected representatives in Norway. To provide a comparative benchmark, we include a question about how much influence (non-binding) referendums should have on a political decision. Respondents were randomly assigned to evaluate scenarios where a deliberative mini-public was conducted, asking how much influence it should have on the policy decision. The topic (ban on begging or merger of municipalities) was randomly varied, as was the number of citizens who took part in the deliberative mini-public (14 or 218). In addition, an online version of the deliberative mini-public was tested to assess format differences.

Results show that respondents tend to assign moderate influence to the deliberative mini-public outcomes. When evaluating the deliberative mini-public, most participants opted for a middle-ground level of influence, while the referendum condition elicited stronger support for decisive intervention—significantly higher percentages favored “complete” or “a lot” of influence. The experimental treatments revealed that both the issue context and the presentation of panel size significantly affected perceived influence. Moreover, the online mini-public format appeared to enhance legitimacy relative to its traditional counterpart, with a shift toward higher endorsements for its influence.

The findings imply that while deliberative mini-publics are considered a valid source of political input, they are generally not viewed as having the same decisive authority as referenda. These results have important implications for democratic practice, suggesting that integrating deliberative mini-publics into decision-making processes may require careful design and communication to enhance their legitimacy. Ultimately, this study contributes to the broader discussion on how alternative democratic mechanisms can be effectively implemented to foster inclusive and legitimate policy-making.

Introduction

TBA

Motivation and Theoretical Framework

  • Deliberative Mini-Publics (DMPs) to save democracy?

  • Describe the plethora of DMPs and how they have been used to feed input into political decision making processes

  • Contrast with referendums and its use

  • Discuss the question to what extent we can expect citizens to be willing to ‘outsource’ decision power to DMPs just like they do to elected representatives. Contrast with expectations of elected representatives’ views on this.

    • How are DMPs different from elections? Not everyone can participate (but they do ideally have equal opportunities of being selected). Selected through lottery rather than through elections. Key issues here are representativeness (descriptive and substantive), competence/motivation of the selected participants, accountability, and the influence of the organizers on attitude formation during the process.

    • How is support for DMPs conditional on the context in which takes place? I.e. importance of the topic, number of citizens who participate, online vs. in-person.

    • Online DMPs have the advantage of scalability. In principle all citizens within the target population could be invited. Will this increase the legitimacy of the DMPs in the eyes of the citizens? And is this conditional on the share of the target population that complete their participation?

Study Design

Vignette Experiment

We would now like to ask you some questions about how Norwegian municipalities should listen to input from citizens during an election period.

Imagine that the municipality you live in must make a decision on [the merger of municipalities] or [the ban on begging]. In order to hear the citizens’ opinion on the matter, the municipality decides that a so-called citizen panel will be conducted. A citizen panel consists of a municipality’s citizens who are invited to participate after their names have been randomly selected. [For example, a citizen panel has been organised in Norway with 14 participants] or [For example, a citizen panel has been organised in Norway with 218 participants]. Participants discuss in smaller groups and have the opportunity to ask questions to experts. The event usually lasts a whole day, and ends by measuring the participants’ opinion on the topic.

How much influence do you think the results from the citizen panel should have when the politicians are to make the final decision?

See the appendix for a full overview of treatments and their corresponding values and text labels.

Data Generating Infrastructure

The Norwegian Citizen Panel

The study was fielded as part of Wave 26 of The Norwegian Citizen Panel (NCP), in the period February 16 to March 14. The NCP is a research-purpose internet panel with over 10,000 active participants. It is based on a probability sample of the general Norwegian population above the age of 18 drawn from the Norwegian National Registry. Panel members complete an online questionnaire three times a year of 15 minutes each. The panel is part of the Coordinated Panels for Research on Democracy and Governance (KODEM), hosted at the University of Bergen.

The Panel of Elected Representatives

Variabelnavn:
p9k2_dmcpwx_ran1
p9k2_dmcpwx_ran2
p9k2_dmcpwx1
p9k2_dmcpwx2
p9k2_dmcpox

Results

NCP

When comparing the results for the two influence measures, respondents showed a notable difference in their expectations. For the Deliberative mini-public influence measure, nearly half (47.1%) of valid responses indicated that they should have “some influence,” with only a very small percentage (3.3%) favoring “complete influence” and 5.5% favoring “no influence.” In contrast, the referendum influence measure elicited much stronger endorsements at the extreme end—27.4% of respondents indicated that a referendum should have “complete influence,” and almost half (49.8%) said it should have “a lot of influence.” This contrast suggests that while respondents are generally moderate about the role of delberative mini-publics, they expect referenda to have a far more decisive impact on political decisions.

Further, the experimental treatments appear to play a significant role in shaping these perceptions. Regression analysis on the delberative mini-publics influence measure indicates that both the topic manipulation (i.e., the content of the decision, such as “merger of municipalities” versus “ban on begging”) and the panel size example (comparing a scenario with 14 versus 218 participants) significantly predict the level of influence respondents assign. For example, respondents exposed to the scenario with the larger panel tend to assign higher influence to the delberative mini-publics outcome. Additionally, when comparing the traditional citizen panel with the online panel format, the distribution shifts slightly—online delberative mini-publics influence shows higher proportions of respondents selecting “complete” (7.6% vs. 3.3%) and “a lot” (35.3% vs. 29.4%) influence, with a corresponding decrease in those opting for “some influence.” This pattern implies that the online format may be viewed as a more effective or credible mechanism for influencing political decisions.

Code
# -------------------------
# Regression Analysis and Coefficient Plot
# -------------------------
# Prepare the data and run a regression model predicting online panel influence.
model_data <- df %>% 
  filter(online_panel_influence %in% 1:5) %>%
  mutate(
    citizen_influence = online_panel_influence,  # outcome variable
    # Use the turnout variable, and explicitly set the levels so that 1 (BLANK) is the reference category.
    treatment_turnout  = factor(online_panel_turnout, levels = c(1, 2, 3, 4))
  )

# Run an OLS regression comparing turnout treatments.
model <- lm(citizen_influence ~ treatment_turnout, data = model_data)

# Tidy the model output and calculate 95% confidence intervals
tidy_model <- broom::tidy(model) %>%
  filter(term != "(Intercept)") %>%  # Exclude the intercept for the plot
  mutate(
    conf.low = estimate - 1.96 * std.error,
    conf.high = estimate + 1.96 * std.error,
    term = forcats::fct_reorder(term, estimate)
  )

# Create a coefficient plot using ggplot2
coef_plot <- tidy_model %>%
  ggplot(aes(x = estimate, y = term)) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "grey") +
  geom_point(color = "steelblue", size = 3) +
  geom_errorbarh(aes(xmin = conf.low, xmax = conf.high), height = 0.2, color = "steelblue") +
  # Map the regression term names to custom labels, adding line breaks (\n) to save horizontal space.
  scale_y_discrete(labels = c("treatment_turnout2" = "50%\nturnout",
                              "treatment_turnout3" = "20%\nturnout",
                              "treatment_turnout4" = "1%\nturnout")) +
  labs(x = "Coefficient Estimate",
       y = "Predictor",
       title = "Below: Regression Coefficient Plot",
       subtitle = "Online Deliberative Mini-Public Model") +
  theme_minimal()

# -------------------------
# Combine with your other plots as before.
# -------------------------
figure3 <- (combined_top / coef_plot) + 
  plot_annotation(title = "Online Deliberative Mini-Publics vs. Referendums",
                  caption = "Top: Distributions of key outcome variables | Bottom: Regression results (estimates with 95% CIs) \n Response scales run from 1 = complete influence to 5 = None")

# Display the final combined figure
print(figure3)

Code
# Optionally, save the final figure with adjusted dimensions.
ggsave("figure3.png", figure3, width = 12, height = 10, dpi = 300)

The regression results indicate that providing turnout information significantly alters how much influence respondents assign to the online deliberative mini-public. Compared to the baseline condition (where no turnout information is provided), a 50% turnout condition (treatment_turnout2) is associated with an estimated increase of about 0.11 points on the influence scale (95% CI: –0.0015 to 0.22; p ≈ 0.053), which is marginally significant. More strikingly, a 20% turnout condition (treatment_turnout3) raises the predicted influence score by approximately 0.46 points (95% CI: 0.35 to 0.57; p < 0.001), and a 1% turnout condition (treatment_turnout4) increases the score by about 0.86 points (95% CI: 0.74 to 0.97; p < 0.001).

Given that the response scale ranges from 1 (complete influence) to 5 (no influence), these positive coefficients imply that as turnout decreases, the perceived influence of the deliberative mini-public declines. In other words, when fewer participants are involved, respondents tend to view the mini-public as less legitimate or effective in influencing political decisions. The graded nature of these effects suggests that the level of participation is a critical factor in shaping public perceptions of the deliberative process, with particularly low turnout (e.g., 1%) dramatically reducing the assigned influence.

PER

Comparison

Joint figures. Perhaps restructure text if we want to compare the two panels from the onset.

Discussion and Conclusion

Appendix

Code
# Load required packages
library(tidyverse)
library(kableExtra)

# Create individual tibbles for each variable

# 1. r26k2_dmcpwx_ran1
var1 <- tibble(
  Variable   = "r26k2_dmcpwx_ran1",
  Value      = c(1, 2),
  Label      = c("the merger of municipalities",
                 "the ban on begging"),
  Cases      = c(1083, 1008),
  Percentage = c("51.8%", "48.2%")
)

# 2. r26k2_dmcpwx_ran2
var2 <- tibble(
  Variable   = "r26k2_dmcpwx_ran2",
  Value      = c(1, 2),
  Label      = c("For example, a citizen panel has been organised in Norway with 14 participants",
                 "For example, a citizen panel has been organised in Norway with 218 participants"),
  Cases      = c(1090, 1001),
  Percentage = c("52.1%", "47.9%")
)

# 3. r26k2_dmcpwx1
var3 <- tibble(
  Variable   = "r26k2_dmcpwx1",
  Value      = c(1, 2, 3, 4, 5, 97, 98),
  Label      = c("Complete influence (the result must be followed regardless)",
                 "A lot of influence",
                 "Some influence",
                 "Little influence",
                 "No influence (the result should not be taken into consideration at all)",
                 "Not answered",
                 "Not asked"),
  Cases      = c(68, 615, 984, 306, 115, 3, 9930),
  Percentage = c("3.3%", "29.4%", "47.1%", "14.6%", "5.5%", "0.1%", "")
)

# 4. r26k2_dmcpwx2
var4 <- tibble(
  Variable   = "r26k2_dmcpwx2",
  Value      = c(1, 2, 3, 4, 5, 97, 98),
  Label      = c("Complete influence (the result must be followed regardless)",
                 "A lot of influence",
                 "Some influence",
                 "Little influence",
                 "No influence (the result should not be taken into consideration at all)",
                 "Not answered",
                 "Not asked"),
  Cases      = c(572, 1041, 361, 78, 28, 11, 9930),
  Percentage = c("27.4%", "49.8%", "17.3%", "3.7%", "1.3%", "0.5%", "")
)

# 5. r26k2_dmcpox_ran
var5 <- tibble(
  Variable   = "r26k2_dmcpox_ran",
  Value      = c(1, 2, 3, 4),
  Label      = c("BLANK",
                 ", and that half (50%) of those invited participated",
                 ", and that one in five (20%) of those invited participated",
                 ", and that one in a hundred (1%) of those invited participated"),
  Cases      = c(538, 525, 505, 523),
  Percentage = c("25.7%", "25.1%", "24.2%", "25.0%")
)

# 6. r26k2_dmcpox
var6 <- tibble(
  Variable   = "r26k2_dmcpox",
  Value      = c(1, 2, 3, 4, 5, 97, 98),
  Label      = c("Complete influence (the result must be followed regardless)",
                 "A lot of influence",
                 "Some influence",
                 "Little influence",
                 "No influence (the result should not be taken into consideration at all)",
                 "Not answered",
                 "Not asked"),
  Cases      = c(158, 738, 772, 302, 115, 6, 9930),
  Percentage = c("7.6%", "35.3%", "36.9%", "14.4%", "5.5%", "0.3%", "")
)

# Combine all variable tables into one
all_vars <- bind_rows(var1, var2, var3, var4, var5, var6)

# Create a kableExtra table
all_vars %>%
  kable("html", caption = "Variable Names and Their Values", align = "lcccc") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Variable Names and Their Values
Variable Value Label Cases Percentage
r26k2_dmcpwx_ran1 1 the merger of municipalities 1083 51.8%
r26k2_dmcpwx_ran1 2 the ban on begging 1008 48.2%
r26k2_dmcpwx_ran2 1 For example, a citizen panel has been organised in Norway with 14 participants 1090 52.1%
r26k2_dmcpwx_ran2 2 For example, a citizen panel has been organised in Norway with 218 participants 1001 47.9%
r26k2_dmcpwx1 1 Complete influence (the result must be followed regardless) 68 3.3%
r26k2_dmcpwx1 2 A lot of influence 615 29.4%
r26k2_dmcpwx1 3 Some influence 984 47.1%
r26k2_dmcpwx1 4 Little influence 306 14.6%
r26k2_dmcpwx1 5 No influence (the result should not be taken into consideration at all) 115 5.5%
r26k2_dmcpwx1 97 Not answered 3 0.1%
r26k2_dmcpwx1 98 Not asked 9930
r26k2_dmcpwx2 1 Complete influence (the result must be followed regardless) 572 27.4%
r26k2_dmcpwx2 2 A lot of influence 1041 49.8%
r26k2_dmcpwx2 3 Some influence 361 17.3%
r26k2_dmcpwx2 4 Little influence 78 3.7%
r26k2_dmcpwx2 5 No influence (the result should not be taken into consideration at all) 28 1.3%
r26k2_dmcpwx2 97 Not answered 11 0.5%
r26k2_dmcpwx2 98 Not asked 9930
r26k2_dmcpox_ran 1 BLANK 538 25.7%
r26k2_dmcpox_ran 2 , and that half (50%) of those invited participated 525 25.1%
r26k2_dmcpox_ran 3 , and that one in five (20%) of those invited participated 505 24.2%
r26k2_dmcpox_ran 4 , and that one in a hundred (1%) of those invited participated 523 25.0%
r26k2_dmcpox 1 Complete influence (the result must be followed regardless) 158 7.6%
r26k2_dmcpox 2 A lot of influence 738 35.3%
r26k2_dmcpox 3 Some influence 772 36.9%
r26k2_dmcpox 4 Little influence 302 14.4%
r26k2_dmcpox 5 No influence (the result should not be taken into consideration at all) 115 5.5%
r26k2_dmcpox 97 Not answered 6 0.3%
r26k2_dmcpox 98 Not asked 9930
Code
sessionInfo()
R version 4.3.1 (2023-06-16 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=English_United States.utf8 
[2] LC_CTYPE=English_United States.utf8   
[3] LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.utf8    

time zone: Europe/Oslo
tzcode source: internal

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
 [1] patchwork_1.3.0        ggforce_0.4.2          broom.helpers_1.17.0  
 [4] marginaleffects_0.24.0 scales_1.3.0           survey_4.4-2          
 [7] survival_3.8-3         Matrix_1.5-4.1         cregg_0.4.0           
[10] broom_1.0.7            haven_2.5.4            lubridate_1.9.4       
[13] forcats_1.0.0          stringr_1.5.1          dplyr_1.1.4           
[16] purrr_1.0.2            readr_2.1.5            tidyr_1.3.1           
[19] tibble_3.2.1           ggplot2_3.5.1          tidyverse_2.0.0       
[22] kableExtra_1.4.0      

loaded via a namespace (and not attached):
 [1] gtable_0.3.6      xfun_0.49         htmlwidgets_1.6.4 lattice_0.22-6   
 [5] tzdb_0.4.0        vctrs_0.6.5       tools_4.3.1       generics_0.1.3   
 [9] sandwich_3.1-1    fansi_1.0.6       pkgconfig_2.0.3   data.table_1.16.4
[13] lifecycle_1.0.4   farver_2.1.2      compiler_4.3.1    textshaping_0.4.1
[17] munsell_0.5.1     ggstance_0.3.7    mitools_2.4       htmltools_0.5.8.1
[21] yaml_2.3.8        pillar_1.9.0      MASS_7.3-60       tidyselect_1.2.1 
[25] digest_0.6.34     stringi_1.8.4     labeling_0.4.3    splines_4.3.1    
[29] polyclip_1.10-7   fastmap_1.2.0     colorspace_2.1-0  cli_3.6.2        
[33] magrittr_2.0.3    utf8_1.2.4        withr_3.0.2       backports_1.5.0  
[37] timechange_0.3.0  rmarkdown_2.29    ragg_1.3.3        zoo_1.8-12       
[41] hms_1.1.3         evaluate_1.0.1    knitr_1.49        lmtest_0.9-40    
[45] viridisLite_0.4.2 rlang_1.1.3       Rcpp_1.0.13-1     glue_1.7.0       
[49] DBI_1.2.3         tweenr_2.0.3      xml2_1.3.6        svglite_2.1.3    
[53] rstudioapi_0.17.1 jsonlite_1.8.9    R6_2.5.1          systemfonts_1.1.0

References