diff --git a/Scripts/MAKE_FILE.R b/Scripts/MAKE_FILE.R index a165a46abbee8521fdece9f5dbd32a626aab29cc..98189b39eaa6388ce2c279650f739801e10b2b5a 100644 --- a/Scripts/MAKE_FILE.R +++ b/Scripts/MAKE_FILE.R @@ -1,4 +1,6 @@ rm(list=ls()) + + library(tidyverse) library(tidylog) library(apollo) @@ -102,4 +104,5 @@ source("Scripts/interaction_plots_presi.R") # # without protesters # mxl_wtp_case_a_prot <- apollo_loadModel("Estimation_results/mxl/without_protesters/MXL_wtp Case A prot") # mxl_wtp_case_b_prot <- apollo_loadModel("Estimation_results/mxl/without_protesters/MXL_wtp Case B prot") -# mxl_wtp_case_c_prot <- apollo_loadModel("Estimation_results/mxl/without_protesters/MXL_wtp_Case_C prot") \ No newline at end of file +# mxl_wtp_case_c_prot <- apollo_loadModel("Estimation_results/mxl/without_protesters/MXL_wtp_Case_C prot") + diff --git a/Scripts/create_tables.R b/Scripts/create_tables.R index 266d226f2f182fa92e9d83fe612bec792d40effe..b3d8e6acfcce8e43b77c13c64fb668fbf8b5ba26 100644 --- a/Scripts/create_tables.R +++ b/Scripts/create_tables.R @@ -1,4 +1,5 @@ -library(choiceTools) +library(choiceTools, lib.loc = "/home/nc71qaxa/r-packages") + dir.create("Tables/mxl") dir.create("Tables/logit") @@ -90,8 +91,8 @@ texreg(l=list(conseq_model_A, conseq_model_control_A, conseq_model_C, conseq_mod caption = "Results of OLS on consequentiality score.", file="Tables/ols/consequentiality.tex") -# Opt Out -texreg(l=list(ols_opt_out_A, ols_opt_out_control_A, ols_opt_out_C, ols_opt_out_control_C), +# Opt Out modified case D +texreg(l=list(ols_opt_out_A, ols_opt_out_control_A, ols_opt_out_D, ols_opt_out_control_D), custom.model.names = c("Case A", "with Controls", "Case B", "with Controls"), custom.header = list("Dependent variable: Number of opt-out choices" = 1:4), custom.coef.map = list_ols, stars = c(0.01, 0.05, 0.1), float.pos="tb", diff --git a/Scripts/interaction_plots_presi.R b/Scripts/interaction_plots_presi.R index 967a8618aa6ea87bd8eac3d1e6cd6dd69ec75e33..0e3727323e8bae7cdc2e80309169d818cb2fdc8d 100644 --- a/Scripts/interaction_plots_presi.R +++ b/Scripts/interaction_plots_presi.R @@ -28,31 +28,43 @@ create_interaction_term_plot <- function(ols_summary, treatment_labels, ord, uni } -case_A_labels <- c("Treated", "Voluntary Treated") +case_A_labels <- c("Treated", "Optional Treatment") case_C_labels <- c("No Info 2", "Text 1", "Text 2", "Video 1", "Video 2") case_C_labels_re <- c("Text 1", "Text 2", "Video 1", "Video 2", "No Info 2") +case_D_labels <- c("No Info", "Treated", "Vol. Treated") +case_D_labels_re <- c("Treated", "Vol. Treated", "No Info") plot_interview_A <- create_interaction_term_plot(ols_time_spent_control_A, case_A_labels, case_A_labels, - "Interview Time in Seconds", -250, 380) + "Interview Time in Seconds", -380, 380) plot_interview_C <- create_interaction_term_plot(ols_time_spent_control_C, case_C_labels, case_C_labels_re, - "Interview Time in Seconds", -250, 380) + "Interview Time in Seconds", -380, 380) + +plot_interview_D <- create_interaction_term_plot(ols_time_spent_control_D, case_D_labels, case_D_labels_re, + "Interview Time in Seconds", -380, 380) plot_cc_A <- create_interaction_term_plot(ols_time_cc_control_A, case_A_labels, case_A_labels, "Mean Choice Card Time in Seconds", -5, 5) plot_cc_C <- create_interaction_term_plot(ols_time_cc_control_C, case_C_labels, case_C_labels_re, "Mean Choice Card Time in Seconds", -5, 5) +plot_cc_D <- create_interaction_term_plot(ols_time_cc_control_D, case_D_labels, case_D_labels_re, + "Mean Choice Card Time in Seconds", -5, 5) + plot_mani_A <- create_interaction_term_plot(ols_percentage_correct_control_A, case_A_labels, case_A_labels, - "Percentage of Correct Quiz Statements", -5, 15) + "Percentage of Correct Quiz Statements", -15, 15) plot_mani_C <- create_interaction_term_plot(ols_percentage_correct_control_C, case_C_labels, case_C_labels_re, - "Percentage of Correct Quiz Statements", -5, 15) + "Percentage of Correct Quiz Statements", -15, 15) +plot_mani_D <- create_interaction_term_plot(ols_percentage_correct_control_D, case_D_labels, case_D_labels_re, + "Percentage of Correct Quiz Statements", -15, 15) plot_cons_A <- create_interaction_term_plot(conseq_model_control_A, case_A_labels, case_A_labels, - "Consequentiality Score", -0.5, 0.8) + "Consequentiality Score", -0.8, 0.8) plot_cons_C <- create_interaction_term_plot(conseq_model_control_C, case_C_labels, case_C_labels_re, - "Consequentiality Score", -0.5, 0.8) + "Consequentiality Score", -0.8, 0.8) +plot_cons_D <- create_interaction_term_plot(conseq_model_control_D, case_D_labels, case_D_labels_re, + "Consequentiality Score", -0.8, 0.8) plot_opt_A <- create_interaction_term_plot(ols_opt_out_control_A, case_A_labels, case_A_labels, - "Number of Status Quo Choices", -1.5, 1) + "Number of Status Quo Choices", -1.5, 1.5) plot_opt_C <- create_interaction_term_plot(ols_opt_out_control_C, case_C_labels, case_C_labels_re, - "Number of Status Quo Choices", -1.5, 1) + "Number of Status Quo Choices", -1.5, 1.5) diff --git a/project_start.qmd b/project_start.qmd index c5557a0b0027c9e1fc91a8d6e09576ee464d0200..287eeacf73b7a832561d306de232e910d3190d0d 100644 --- a/project_start.qmd +++ b/project_start.qmd @@ -1,6 +1,6 @@ --- -title: "Hot Cities, Cool Choices?" -subtitle: "The Effect of Voluntary and Obligatory Information on Preferences for Urban Green Spaces" +title: "Hot Cities, Cool Choices:" +subtitle: "The Effect of Optional and Obligatory Information on Stated Preferences for Urban Green Spaces" title-slide-attributes: data-background-image: Grafics/iDiv_logo_item.png data-background-size: contain @@ -14,7 +14,7 @@ format: slide-number: true smaller: true logo: Grafics/iDiv_logo_item.PNG - footer: "Hot Cities, Cool Choices?" + footer: "WONV 2024: Hot Cities, Cool Choices" scrollable: true embed-resources: true --- @@ -27,13 +27,15 @@ source("Scripts/MAKE_FILE.R") library(tidyverse) library(apollo) library(texreg) -list_ols <- list("(Intercept)" = "Intercept", "as.factor(Treatment_A)Treated" = "Treated", "as.factor(Treatment_A)Vol_Treated" = "Vol. Treated", +list_ols <- list("(Intercept)" = "Intercept", "as.factor(Treatment_A)Treated" = "Treated", "as.factor(Treatment_A)Vol_Treated" = "Optional Treatment", "as.factor(Treatment_C)No Info 2" = "No Info 2", "as.factor(Treatment_C)No Video 1" = "Text 1", "as.factor(Treatment_C)No Video 2" = "Text 2", "as.factor(Treatment_C)Video 1" = "Video 1", "as.factor(Treatment_C)Video 2" = "Video 2", "Z_Mean_NR" = "NR-Index", "as.factor(Gender)2" = "Female", "Age_mean" = "Age", "QFIncome" = "Income", "Uni_degree" = "University Degree") ``` +# Motivation & Research Contribution + ## Motivation (1) ::: incremental @@ -49,13 +51,13 @@ list_ols <- list("(Intercept)" = "Intercept", "as.factor(Treatment_A)Treated" = - Too **much information** may increase survey **complexity**, leading to respondents being overburdened with it and producing less consistent choices. - Too **little information** may lead respondents to **not** being able to make an **informed choice**. - Valid preference elicitation depends not only on the provision of information, but also on the **appropriate processing and recall** of the information by the respondent. -- **Voluntary information** allows the respondents to gather required information if needed. +- **Voluntary information** allows the respondents to gather required information if needed and might increase efficiency of information provision ::: ## Literature ::: incremental -- There is **little research** on the effects of **voluntary information provision** on choice behavior and information recall. +- There is **little research** on the effects of **optional information provision** on choice behavior and information recall. - In their study, **Tienhaara et al. (2022)** surveyed preferences for agricultural genetic resources, allowing respondents the option to access detailed information on the valued goods prior to preference elicitation. - Similarly, **Hu et al. (2009)** offered respondents the opportunity to access voluntary information about genetic modified food before participating in a choice experiment. - Both studies conclude that, on average, respondents who retrieve voluntary information have **larger willingness to pay** for the good to be valued. @@ -65,19 +67,21 @@ list_ols <- list("(Intercept)" = "Intercept", "as.factor(Treatment_A)Treated" = ## Research Contribution ::: incremental -- Our study explores the impact of additional obligatory and voluntary information on stated preferences using an exogenous split sample approach with three treatments. +- Our study explores the impact of additional obligatory and optional information on stated preferences using an exogenous split sample approach with three treatments. - We investigate the effects of information treatments on survey engagement, information recall, consequentiality, and stated preferences, similar to Welling et al. (2023), expanding our understanding of treatment effects. -- We test who choose additional information and to what extent they have different preferences than respondents who do not choose aditional information. +- We test who choose additional information and to what extent they have different preferences than respondents who do not choose additional information. ::: ## Research Questions ::: incremental -1. How do obligatory and voluntary information treatments affect **survey engagement**, **information recall**, **consequentiality**, and **stated preferences**? +1. How do obligatory and optional information provision affect **survey engagement**, **information recall**, **consequentiality**, and **stated preferences**? 2. Do **socio-demographic** or **attitudinal** variables influence the decision to **access voluntary information**? 3. Do **survey engagement**, **information recall**, **consequentiality**, and **stated preferences** differ between respondents who **access voluntary information** and those who do not? ::: +# Survey & Data + ## Discrete Choice Experiment ::: incremental @@ -129,15 +133,15 @@ To what extent do you agree or disagree with the following statements? ## Experimental Setting -{width="300"} +{width="300"} ## Case A -{width="300"} +{width="300"} ## Case B -{width="300"} +{width="300"} ## Data @@ -154,6 +158,8 @@ To what extent do you agree or disagree with the following statements? + **Attitudinal variable**: Measure derived from 21 items on **nature relatedness**. ::: +# Methods + ## Methods (1) {auto-animate="true"} - Logit regression (voluntary information access): @@ -201,229 +207,131 @@ and ```{=tex} \begin{equation} - v_{Treat_A} = \{Treated, Voluntary Treated\} + v_{Treat_A} = \{Treated, Optional Treatment\} \end{equation} ``` ```{=tex} \begin{equation} - v_{Treat_B} = \{Text 1, Text 2, Video 1, Video 2, No Info 2\} + v_{Treat_B} = \{Treated, Vol. Treated, No Info\} \end{equation} ``` -## Logit Regression: Who choses treatment? - -::: {style="font-size: 65%;"} -```{r, results='asis'} -htmlreg(l=list(logit_choice_treat_uni), stars = c(0.01, 0.05, 0.1), float.pos="tb", - custom.model.names = c("Logit regression"), - custom.header = list("Dependent variable: Voluntary Information Access" = 1), - custom.coef.map = list_ols, custom.note = "%stars. Standard errors in parentheses.", - label = "tab:logit_vt", single.row = TRUE, - caption = "Results of logit regression on access of optional information.") +# Case A: Obligatory vs. optional information -``` -::: -## OLS Engagement: Interview time +<!-- ::: {style="font-size: 45%;"} --> +<!-- ```{r, results='asis'} --> -::: panel-tabset -### Table -::: {style="font-size: 55%;"} -```{r, results='asis'} -htmlreg(l=list(ols_time_spent_A, ols_time_spent_control_A, ols_time_spent_C, ols_time_spent_control_C), - custom.model.names = c("Case A", "with Controls", "Case B", "with Controls"), - custom.header = list("Dependent variable: Net interview time" = 1:4), - custom.coef.map = list_ols, stars = c(0.01, 0.05, 0.1), float.pos="tb", - custom.note = "%stars. Standard errors in parentheses.", - label = "tab:net_int", single.row = TRUE, - caption = "Results of OLS on net interview time.") -``` -::: +<!-- htmlreg(l=list(ols_time_spent_control_A, ols_time_cc_control_A, ols_percentage_correct_control_A, conseq_model_control_A), --> +<!-- custom.model.names = c("Interview Time", "CC Time", "Quiz", "Cons. Score"), --> +<!-- custom.header = list("Model 1A" = 1:1, "Model 2A" = 2:2, "Model 3A" = 3:3, "Model 4A" = 4:4), --> +<!-- custom.coef.map = list_ols, stars = c(0.01, 0.05, 0.1), float.pos="tb", --> +<!-- label = "tab:olsA", --> +<!-- caption = "Results of OLS regressions for Scenario Case A.") --> +<!-- ``` --> +<!-- ::: --> -### Plot -```{r} -ggpubr::ggarrange(plot_interview_A, plot_interview_C) -``` -::: -## OLS Engagement: Choice Card Time +## OLS Engagement: Interview & Choice Card Time -::: panel-tabset -### Plot ```{r} -ggpubr::ggarrange(plot_cc_A, plot_cc_C) +ggpubr::ggarrange(plot_interview_A, plot_cc_A) ``` -### Table -::: {style="font-size: 55%;"} -```{r, results='asis'} -htmlreg(l=list(ols_time_cc_A, ols_time_cc_control_A, ols_time_cc_C, ols_time_cc_control_C), - custom.model.names = c("Case A", "with Controls", "Case B", "with Controls"), - custom.header = list("Dependent variable: Mean choice card time" = 1:4), - custom.coef.map = list_ols, stars = c(0.01, 0.05, 0.1), float.pos="tb", - custom.note = "%stars. Standard errors in parentheses.", - label = "tab:cctime", single.row = TRUE, - caption = "Results of OLS on mean choice card time.") -``` -::: -::: +## OLS: Information recall & Consequentiality -## OLS: Information recall -::: panel-tabset -### Plot ```{r} -ggpubr::ggarrange(plot_mani_A, plot_mani_C) +ggpubr::ggarrange(plot_mani_A, plot_cons_A) ``` -### Table -::: {style="font-size: 55%;"} +## MXL: Effects on stated preferences + +::: {style="font-size: 60%;"} + + ```{r, results='asis'} -htmlreg(l=list(ols_percentage_correct_A, ols_percentage_correct_control_A, ols_percentage_correct_C, ols_percentage_correct_control_C), - custom.model.names = c("Case A", "with Controls", "Case B", "with Controls"), - custom.header = list("Dependent Variable: Percentage of correct quiz statements" = 1:4), - custom.coef.map = list_ols, stars = c(0.01, 0.05, 0.1), float.pos="tb", - custom.note = "%stars. Standard errors in parentheses.", - label = "tab:mani", single.row = TRUE, - caption = "Results of OLS on percentage of correct quiz statements.") +htmlreg(c(case_A_cols[1], remGOF(case_A_cols[2:4])), + custom.coef.map = list("natural" = "Naturalness", "walking" = "Walking Distance", "rent" = "Rent", + "ASC_sq" = "ASC SQ", "_natural" = "Naturalness", "nat" = "Naturalness", + "wd" = "Walking Distance", "asc" = "ASC SQ"), + custom.model.names = c("Mean", "SD", "Treated", "Optional Treatment"), custom.note = "%stars. Standard errors in parentheses.", + stars = c(0.01, 0.05, 0.1), float.pos="tb", + label = "tab:mxl_A", + caption = "Results of mixed logit model with treatment interactions for Case A.") ``` ::: -::: - -<!-- ## Self Reference --> - -<!-- 1. Es entspricht meiner persönlichen Erfahrung, dass die Grünfläche in meiner Nähe zu einem angenehmen Klima an meinem Wohnort beiträgt. --> -<!-- 2. Ich bin durch hohe Temperaturen in der Stadt im Sommer eingeschränkt. --> -<!-- 3. Die Stadt sollte mehr unternehmen, um Hitzeinseln zu vermeiden. --> -<!-- Stimme voll und ganz zu - Stimme gar nicht zu --> +# Case B: Voluntary information access -<!-- **Only the treated participants got these questions!** --> +## Logit Regression: Who choses treatment? -## OLS: Consequentiality +::: {style="font-size: 65%;"} +```{r, results='asis'} -::: panel-tabset -### Plot -```{r} -ggpubr::ggarrange(plot_cons_A, plot_cons_C) -``` +htmlreg(l=list(logit_choice_treat_uni), stars = c(0.01, 0.05, 0.1), float.pos="tb", + custom.model.names = c("Logit regression"), + custom.header = list("Dependent variable: Voluntary Information Access" = 1), + custom.coef.map = list_ols, custom.note = "%stars. Standard errors in parentheses.", + label = "tab:logit_vt", single.row = TRUE, + caption = "Results of logit regression on access of optional information.") -### Table -::: {style="font-size: 55%;"} -```{r, results='asis'} -htmlreg(l=list(conseq_model_A, conseq_model_control_A, conseq_model_C, conseq_model_control_C), - custom.model.names = c("Case A", "with Controls", "Case B", "with Controls"), - custom.header = list("Dependent variable: Consequentiality score" = 1:4), - custom.coef.map = list_ols, stars = c(0.01, 0.05, 0.1), float.pos="tb", - custom.note = "%stars. Standard errors in parentheses.", - label = "tab:conseq", single.row = TRUE, - caption = "Results of OLS on consequentiality score.") ``` ::: -::: -## OLS: Status quo +## OLS Engagement: Interview & Choice Card Time -::: panel-tabset -### Plot ```{r} -ggpubr::ggarrange(plot_opt_A, plot_opt_C) -``` - -### Table - -::: {style="font-size: 60%;"} -```{r, results='asis'} -htmlreg(l=list(ols_opt_out_A, ols_opt_out_control_A, ols_opt_out_C, ols_opt_out_control_C), - custom.model.names = c("Case A", "with Controls", "Case B", "with Controls"), - custom.header = list("Dependent variable: Number of status quo choices" = 1:4), - custom.coef.map = list_ols, stars = c(0.01, 0.05, 0.1), float.pos="tb", - custom.note = "%stars. Standard errors in parentheses.", - label = "tab:optout", single.row = TRUE, - caption = "Results of OLS on number of status quo choices.") +ggpubr::ggarrange(plot_interview_D, plot_cc_D) ``` -::: -::: +## OLS: Information recall & Consequentiality -## MXL: Effects on stated preferences -::: {style="font-size: 60%;"} -::: panel-tabset -### Case A -```{r, results='asis'} -htmlreg(c(case_A_cols[1], remGOF(case_A_cols[2:4])), - custom.coef.map = list("natural" = "Naturalness", "walking" = "Walking Distance", "rent" = "Rent", - "ASC_sq" = "ASC SQ", "_natural" = "Naturalness", "nat" = "Naturalness", - "wd" = "Walking Distance", "asc" = "ASC SQ"), - custom.model.names = c("Mean", "SD", "Treated", "Voluntary Treated"), custom.note = "%stars. Standard errors in parentheses.", - stars = c(0.01, 0.05, 0.1), float.pos="tb", - label = "tab:mxl_A", - caption = "Results of mixed logit model with treatment interactions for Case A.") -``` - -### Case B - -```{r, results='asis'} -htmlreg(c(case_C_cols[1], remGOF(case_C_cols[2:7])), - custom.coef.map = list("natural" = "Naturalness", "walking" = "Walking Distance", "rent" = "Rent", - "ASC_sq" = "ASC SQ", "_natural" = "Naturalness", "nat" = "Naturalness", - "wd" = "Walking Distance", "asc" = "ASC SQ", - "ASC_sq_info" = "ASC SQ", "rent_info" = "Rent", "nat_info" = "Naturalness", "walking_info" = "Walking Distance"), - custom.model.names = c("Mean", "SD", "Video 1", "Video 2", "Text 1", "Text 2", "No Info"), custom.note = "%stars. Standard errors in parentheses.", - stars = c(0.01, 0.05, 0.1), float.pos="tb", - label = "tab:mxl_C", - caption = "Results of mixed logit model with treatment interactions for Case B.") +```{r} +ggpubr::ggarrange(plot_mani_D, plot_cons_D) ``` -::: -::: -## MXL: WTP space with NR index +## MXL: Case B ::: {style="font-size: 60%;"} ```{r, results='asis'} -htmlreg(c(case_C_cols_NR[1], remGOF(case_C_cols_NR[2:8])), +htmlreg(c(case_B_cols_NR[1], remGOF(case_B_cols_NR[2:6])), custom.coef.map = list("natural" = "Naturalness", "walking" = "Walking Distance", "rent" = "Rent", "ASC_sq" = "ASC SQ", "_natural" = "Naturalness", "nat" = "Naturalness", - "wd" = "Walking Distance", "asc" = "ASC SQ", + "wd" = "Walking Distance", "asc" = "ASC SQ", "ASC" ="ASC SQ", "ASC_sq_info" = "ASC SQ", "rent_info" = "Rent", "nat_info" = "Naturalness", "walking_info" = "Walking Distance"), - custom.model.names = c("Mean", "SD", "Video 1", "Video 2", "Text 1", "Text 2", "No Info", "NR"), custom.note = "%stars. Standard errors in parentheses.", + custom.model.names = c("Mean", "SD", "Treated", "Vol. Treated", "No Info", "NR-Index"), custom.note = "%stars (one-sided). Robust standard errors in parentheses.", stars = c(0.01, 0.05, 0.1), float.pos="tb", - label = "tab:mxl_NR", - caption = "Results of mixed logit model with treatment and NR-index interactions for Case B.") + label = "tab:mxl_C_NR", + caption = "Results of mixed logit model with treatment interactions for Case B.") ``` ::: -<!-- ## Case D --> -<!-- ```{r} --> - -<!-- summary(case_d) --> - -<!-- ``` --> ## Discussion (1) -1. How do obligatory and voluntary information treatments affect survey engagement, information recall, consequentiality, and stated preferences? +1. How do obligatory and optional information provision affect survey engagement, information recall, consequentiality, and stated preferences? ::: incremental @@ -477,9 +385,11 @@ htmlreg(c(case_C_cols_NR[1], remGOF(case_C_cols_NR[2:8])), - Voluntary information access is correlated with increased consequentiality, higher survey engagement and higher willingness to pay -- Obligatory information treatment is more effective than optional +- Obligatory information treatment is more effective than optional on the cost of slightly reduced survey engagement + +- Voluntarily accessed treatment shows strongest effects, but is highly endogenous -- Voluntarily accessed treatment shows strongest effects +- Providing optional information seem to rather increase inequality in good-specific knowledge than decreasing it :::