Chapter 21 Worded answer scale

This chapter shows the treatment effects for the answer scale that effects which typically is given to the respondents in the Norwegian Citizen Panel. This scale reads:

  • Very fair
  • Fair
  • Somewhat Fair
  • Slightly fair
  • Not fair at all

Half of the respondents were asked to answer the post measures of fairness, reasonableness, and willingness to accept the decision with this regular, worded answer scale, while the other half gets an alternative numbered scale in stead (please note that the scales are reversed in all analyses).

if(!require("broom")){install.packages("broom");  library(broom)}
if(!require("haven")){install.packages("haven");  library(haven)}
if(!require("here")){install.packages("here");  library(here)}
if(!require("knitr")){install.packages("knitr");  library(knitr)}
if(!require("kableExtra")){install.packages("kableExtra");  library(kableExtra)}
if(!require("naniar")){install.packages("naniar");  library(naniar)}
if(!require("tidyverse")){install.packages("tidyverse");  library(tidyverse)}

set.seed(2016)

d <- read_sav("C:\\Users/Sveinung/OneDrive/NORCE 2018-/goodloser/Conjoint/Bookdown-goodloser/Data/Goodloser-exp3.sav")

knitr::opts_chunk$set(echo = TRUE, knitr.kable.NA = "", cache = FALSE, warning = FALSE)

21.1 Prepare data

main_01 <- d %>% 
  mutate(rsp_id = as.numeric(responseid),
         rsp_beg = case_when(r13pad1 == 1 ~ "In favour of ban on begging",
                             r13pad1 == 2 ~ "Against ban on begging"),
         rsp_beg_imp = case_when(r13pad2 %in% 1:2 ~ "Important",
                                  r13pad2 %in% 3:5 ~ "Not important"),
         rsp_toll = case_when(r13pad3 == 1 ~ "In favour of road toll increase of diesel cars",
                              r13pad3 == 2 ~ "Against road toll increase of diesel cars"),
         rsp_toll_imp = case_when(r13pad4 %in% 1:2 ~ "Important",
                                  r13pad4 %in% 3:5 ~ "Not important"),
         treat_issue = case_when(r13pad5_sak == 1 ~ "Ban on begging",
                               r13pad5_sak == 2 ~ "Road toll increase of diesel cars"),
         treat_outcome = case_when(r13pad5_utfall == 1 ~ "The Yes side won the vote",
                                 r13pad5_utfall == 2 ~ "The No side won the vote"),
         treat_outfav = case_when(r13pad5_sak == 1 & r13pad1 == 1 & r13pad5_utfall == 1 ~ "Favorable outcome",
                                  r13pad5_sak == 1 & r13pad1 == 2 & r13pad5_utfall == 2 ~ "Favorable outcome",
                                  r13pad5_sak == 1 & r13pad1 == 1 & r13pad5_utfall == 2 ~ "Unfavorable outcome",
                                  r13pad5_sak == 1 & r13pad1 == 2 & r13pad5_utfall == 1 ~ "Unfavorable outcome",
                                  r13pad5_sak == 2 & r13pad3 == 1 & r13pad5_utfall == 1 ~ "Favorable outcome",
                                  r13pad5_sak == 2 & r13pad3 == 2 & r13pad5_utfall == 2 ~ "Favorable outcome",
                                  r13pad5_sak == 2 & r13pad3 == 1 & r13pad5_utfall == 2 ~ "Unfavorable outcome",
                                  r13pad5_sak == 2 & r13pad3 == 2 & r13pad5_utfall == 1 ~ "Unfavorable outcome"),
         treat_winningmargin = case_when(r13pad5_vinnermargin == 1 ~ "Not shown",
                                       r13pad5_vinnermargin == 2 ~ "Slight majority",
                                       r13pad5_vinnermargin == 3 ~ "Large majority"),
         treat_winnergloat = case_when(r13pad5_vinner == 1 ~ "Not shown",
                                     r13pad5_vinner == 2 ~ "Winning politician gloats"),
        treat_prime = case_when(r13pad5_avsender == 1 ~ "Not shown",
                               r13pad5_avsender == 2  | r13pad5_avsender == 5 ~ "No prime",
                               r13pad5_avsender == 3  | r13pad5_avsender == 6 ~ "Specific prime",
                               r13pad5_avsender == 4 | r13pad5_avsender == 7 ~ "General prime"),
         treat_messenger = case_when(r13pad5_avsender %in% 3:4 ~ "Political leader",
                                   r13pad5_avsender %in% 6:7 ~ "Local newspaper"),
         post_fair = case_when(r13pad6a == 1 | r13pad6b == 1 ~ 5,
                          r13pad6a == 2 | r13pad6b == 2 ~ 4,
                          r13pad6a == 3 | r13pad6b == 3 ~ 3,
                          r13pad6a == 4 | r13pad6b == 4 ~ 2,
                          r13pad6a == 5 | r13pad6b == 5 ~ 1),
          post_reasonable = case_when(r13pad7a == 1 | r13pad7b == 1 ~ 5,
                          r13pad7a == 2 | r13pad7b == 2 ~ 4,
                          r13pad7a == 3 | r13pad7b == 3 ~ 3,
                          r13pad7a == 4 | r13pad7b == 4 ~ 2,
                          r13pad7a == 5 | r13pad7b == 5 ~ 1),
          post_accept = case_when(r13pad8a == 1 | r13pad8b == 1 ~ 5,
                          r13pad8a == 2 | r13pad8b == 2 ~ 4,
                          r13pad8a == 3 | r13pad8b == 3 ~ 3,
                          r13pad8a == 4 | r13pad8b == 4 ~ 2,
                          r13pad8a == 5 | r13pad8b == 5 ~ 1),
        scale = case_when(r13pad6_ran == 1 ~ "Worded",
                          r13pad6_ran == 2 ~ "Numbered")

  ) %>% 

  replace_with_na_all(condition = ~.x == 98 )%>%  #Recode 98 (not asked) as missing
  filter(!is.na(r13pad6_ran)) %>%  #Remove NA's
## We want the value labels in particular order for the tables and figures.
        mutate(treat_winningmargin = lvls_reorder(treat_winningmargin, c(2, 3, 1)), 
               treat_prime = lvls_reorder(treat_prime, c(3, 2, 4, 1))
               ) 
  
main_01 <- main_01 %>%   
      filter(scale == "Worded")

21.2 Reasonable decision

source("Functions/amce.R")

res_main <-  main_01 %>%
  amce(post_reasonable, treat_outfav, treat_winningmargin, treat_winnergloat, treat_prime, treat_messenger) 
  
res_main <- res_main %>% 
  mutate(
  treatment =  case_when(treatment == "treat_outfav" ~ "Outcome\nfavor-\nability",
            treatment == "treat_winningmargin" ~ "Winning\nmargin",
            treatment == "treat_winnergloat" ~ "Winner\ngloats",
            treatment == "treat_prime" ~ "Democratic\nprime",
            treatment == "treat_messenger" ~ "Primer")
)

#Figure
fig_amce <-
  res_main %>%
  ggplot(aes(x = estimate, y = value)) +
  facet_grid(
    treatment ~ .,
    scales = "free_y",
    space = "free_y") +
  geom_errorbarh(
    aes(xmin = estimate - (2 * std_error),
        xmax = estimate + (2 * std_error)),
    height = 0) +
  geom_point() +
  geom_vline(aes(xintercept = 0), linetype = "dotted") +
  scale_x_continuous(
    limits = c(-1, 1),
    breaks = round(seq(-1, 1, .1), 2),
    expand = c(0, 0)) +
   labs(
    x = "Marginal effect, reasonable decision",
    y = "Decision process attributes") +
  theme_bw() +
  theme(plot.margin = unit(c(2, 2, 2, 2), "mm")) +
  theme(panel.spacing = unit(0.5, "lines"))
fig_amce

ggsave(
  here("output", "figs", "pngs", "fig_wordscale_reasonable.png"),
  plot = fig_amce,
  width = 5.5, height = 2.75
)
## Error in grDevices::png(..., res = dpi, units = "in"): unable to start png() device
ggsave(
  here("output", "figs", "pdfs", "fig_wordscale_reasonable.pdf"),
  plot = fig_amce,
  width = 5.5, height = 2.75
)
## Error in grDevices::pdf(file = filename, ..., version = version): cannot open file 'C:/Users/Sveinung/OneDrive/NORCE 2018-/goodloser/Conjoint/Bookdown-goodloser/output/figs/pdfs/fig_wordscale_reasonable.pdf'
#Table
res_main <- res_main %>% 
  select(value, estimate, std_error, statistic, p_value)

kable(res_main, booktabs = TRUE, caption = "Average Marginal Component Effects", col.names = linebreak(c("Treatment value", "Estimate", "Std. Error", "t-statistic", "p value"))) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "responsive")) %>% 
 group_rows(index = c("Outcome favorability" = 2, "Winning margin" = 3, "Winner gloating" = 2, "Good loser prime" = 4, "Primer" = 2))
(#tab:310_post_reasonable_wordscale)Average Marginal Component Effects
Treatment value Estimate Std. Error t-statistic p value
Outcome favorability
Favorable outcome 0.0000000 0.0000000 NA NA
Unfavorable outcome -0.8564721 0.0528540 -16.2044800 0.0000000
Winning margin
Not shown 0.0000000 0.0000000 NA NA
Slight majority -0.0424017 0.0696690 -0.6086174 0.5428761
Large majority 0.0089011 0.0697887 0.1275435 0.8985284
Winner gloating
Not shown 0.0000000 0.0000000 NA NA
Winning politician gloats 0.0545278 0.0573155 0.9513611 0.3415840
Good loser prime
Not shown 0.0000000 0.0000000 NA NA
No prime 0.1105842 0.0963700 1.1474955 0.2513717
Specific prime 0.2657895 0.0989337 2.6865403 0.0073045
General prime 0.1952670 0.0979100 1.9943519 0.0463060
Primer
Local newspaper 0.0000000 0.0000000 NA NA
Political leader -0.0289207 0.0745036 -0.3881794 0.6979885

21.3 Willingnes to accept

source("Functions/amce.R")

res_main <-  main_01 %>%
  amce(post_accept, treat_outfav, treat_winningmargin, treat_winnergloat, treat_prime, treat_messenger) 
  

res_main <- res_main %>% 
  mutate(
  treatment =  case_when(treatment == "treat_outfav" ~ "Outcome\nfavor-\nability",
            treatment == "treat_winningmargin" ~ "Winning\nmargin",
            treatment == "treat_winnergloat" ~ "Winner\ngloats",
            treatment == "treat_prime" ~ "Democratic\nprime",
            treatment == "treat_messenger" ~ "Primer")
)

#Figure
fig_amce <-
  res_main %>%
  ggplot(aes(x = estimate, y = value)) +
  facet_grid(
    treatment ~ .,
    scales = "free_y",
    space = "free_y") +
  geom_errorbarh(
    aes(xmin = estimate - (2 * std_error),
        xmax = estimate + (2 * std_error)),
    height = 0) +
  geom_point() +
  geom_vline(aes(xintercept = 0), linetype = "dotted") +
  scale_x_continuous(
    limits = c(-1, 1),
    breaks = round(seq(-1, 1, .1), 2),
    expand = c(0, 0)) +
   labs(
    x = "Marginal effect, willingnes to accept decision",
    y = "Decision process attributes") +
  theme_bw() +
  theme(plot.margin = unit(c(2, 2, 2, 2), "mm"))
fig_amce

ggsave(
  here("output", "figs", "pngs", "fig_wordscale_accept.png"),
  plot = fig_amce,
  width = 5.5, height = 2.75
)
## Error in grDevices::png(..., res = dpi, units = "in"): unable to start png() device
ggsave(
  here("output", "figs", "pdfs", "fig_wordscale_accept.pdf"),
  plot = fig_amce,
  width = 5.5, height = 2.75
)
## Error in grDevices::pdf(file = filename, ..., version = version): cannot open file 'C:/Users/Sveinung/OneDrive/NORCE 2018-/goodloser/Conjoint/Bookdown-goodloser/output/figs/pdfs/fig_wordscale_accept.pdf'
#table
res_main <- res_main %>% 
  select(value, estimate, std_error, statistic, p_value)

kable(res_main, booktabs = TRUE, caption = "Average Marginal Component Effects", col.names = linebreak(c("Treatment value", "Estimate", "Std. Error", "t-statistic", "p value"))) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "responsive")) %>% 
 group_rows(index = c("Outcome favorability" = 2, "Winning margin" = 3, "Winner gloating" = 2, "Good loser prime" = 4, "Primer" = 2))
(#tab:310_post_accept_wordscale)Average Marginal Component Effects
Treatment value Estimate Std. Error t-statistic p value
Outcome favorability
Favorable outcome 0.0000000 0.0000000 NA NA
Unfavorable outcome -0.6218004 0.0500021 -12.4354893 0.0000000
Winning margin
Not shown 0.0000000 0.0000000 NA NA
Slight majority 0.0064073 0.0634357 0.1010042 0.9195615
Large majority 0.0219211 0.0637261 0.3439898 0.7309051
Winner gloating
Not shown 0.0000000 0.0000000 NA NA
Winning politician gloats 0.0601687 0.0522482 1.1515938 0.2496825
Good loser prime
Not shown 0.0000000 0.0000000 NA NA
No prime 0.1182001 0.0878403 1.3456250 0.1786392
Specific prime 0.2241806 0.0902042 2.4852570 0.0130607
General prime 0.1713976 0.0892710 1.9199695 0.0550627
Primer
Local newspaper 0.0000000 0.0000000 NA NA
Political leader 0.0241739 0.0663925 0.3641059 0.7158767

21.4 Fairness perceptions

source("Functions/amce.R")

res_main <-  main_01 %>%
  amce(post_fair, treat_outfav, treat_winningmargin, treat_winnergloat, treat_prime, treat_messenger)
  
res_main <- res_main %>% 
  mutate(
  treatment =  case_when(treatment == "treat_outfav" ~ "Outcome\nfavor-\nability",
            treatment == "treat_winningmargin" ~ "Winning\nmargin",
            treatment == "treat_winnergloat" ~ "Winner\ngloats",
            treatment == "treat_prime" ~ "Democratic\nprime",
            treatment == "treat_messenger" ~ "Primer")
)

#Figure
fig_amce <-
  res_main %>%
  ggplot(aes(x = estimate, y = value)) +
  facet_grid(
    treatment ~ .,
    scales = "free_y",
    space = "free_y") +
  geom_errorbarh(
    aes(xmin = estimate - (2 * std_error),
        xmax = estimate + (2 * std_error)),
    height = 0) +
  geom_point() +
  geom_vline(aes(xintercept = 0), linetype = "dotted") +
  scale_x_continuous(
    limits = c(-1, 1),
    breaks = round(seq(-1, 1, .1), 2),
    expand = c(0, 0)) +
   labs(
    x = "Marginal effect, perceived fairness of decision",
    y = "Decision process attributes") +
  theme_bw() +
  theme(plot.margin = unit(c(2, 2, 2, 2), "mm"))
fig_amce

ggsave(
  here("output", "figs", "pngs", "fig_wordscale_fair.png"),
  plot = fig_amce,
  width = 5.5, height = 2.75
)
## Error in grDevices::png(..., res = dpi, units = "in"): unable to start png() device
ggsave(
  here("output", "figs", "pdfs", "fig_wordscale_fair.pdf"),
  plot = fig_amce,
  width = 5.5, height = 2.75
)
## Error in grDevices::pdf(file = filename, ..., version = version): cannot open file 'C:/Users/Sveinung/OneDrive/NORCE 2018-/goodloser/Conjoint/Bookdown-goodloser/output/figs/pdfs/fig_wordscale_fair.pdf'
#table
res_main <- res_main %>% 
  select(value, estimate, std_error, statistic, p_value)


kable(res_main, booktabs = TRUE, caption = "Average Marginal Component Effects", col.names = linebreak(c("Treatment value", "Estimate", "Std. Error", "t-statistic", "p value"))) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "responsive")) %>% 
 group_rows(index = c("Outcome favorability" = 2, "Winning margin" = 3, "Winner gloating" = 2, "Good loser prime" = 4, "Primer" = 2))
(#tab:310_post_fair_wordscale)Average Marginal Component Effects
Treatment value Estimate Std. Error t-statistic p value
Outcome favorability
Favorable outcome 0.0000000 0.0000000 NA NA
Unfavorable outcome -0.2845115 0.0469253 -6.0630782 0.0000000
Winning margin
Not shown 0.0000000 0.0000000 NA NA
Slight majority -0.0430270 0.0575533 -0.7476026 0.4548242
Large majority -0.0031910 0.0576847 -0.0553177 0.9558932
Winner gloating
Not shown 0.0000000 0.0000000 NA NA
Winning politician gloats 0.0058349 0.0473717 0.1231727 0.9019879
Good loser prime
Not shown 0.0000000 0.0000000 NA NA
No prime 0.2511677 0.0793468 3.1654404 0.0015815
Specific prime 0.3612872 0.0814402 4.4362271 0.0000099
General prime 0.3176143 0.0806630 3.9375439 0.0000863
Primer
Local newspaper 0.0000000 0.0000000 NA NA
Political leader -0.0589941 0.0598011 -0.9865058 0.3241882