#  Digital Nudging & Cookies Rejection ######

# PRELIMINARY STEPS: 
# 1. UNCOMMENT AND INSTALL REQUIRED PACKAGES
# 2. UNCOMMENT AND SET THE ARGUMENT OF "SETWD(...)" TO THE ABSOLUTE PATH OF THE FOLDER CONTAINING THE R FILE

# 1. Libraries and dataset ----
# Uncomment to install required packages
# install.packages('dplyr', 'car', 'rms')
# install.packages('tidyverse')  # for ggplot
# install.packages('gdata')  # to combine the 4 additional datasets into 1

# Dataset
# 2. Uncomment function below and set working directory
# setwd(#"/Cookie nudge data")
cookies_csv <- read.csv("all_apps_wide-2022-02-10-main.csv")

cookies_csv <- subset(cookies_csv, select = -c(86:101)) # These are related to variables not collected in the experiment (NAs)

# Rename columns
colnames(cookies_csv)

colnames(cookies_csv)[1] <- "id"
colnames(cookies_csv)[6] <- "max_page_index"
colnames(cookies_csv)[7] <- "current_app_name"
colnames(cookies_csv)[8] <- "current_page_name"
colnames(cookies_csv)[9] <- "time_started"

colnames(cookies_csv)[26] <- "treatment"
colnames(cookies_csv)[27] <- "manage_right"
colnames(cookies_csv)[28] <- "policy_clicked"
colnames(cookies_csv)[29] <- "accepted_all"
colnames(cookies_csv)[30] <- "manage_clicked"
colnames(cookies_csv)[31] <- "cookie_managed"
colnames(cookies_csv)[37] <- "decision_time"

colnames(cookies_csv)[54] <- "openness"
colnames(cookies_csv)[55] <- "conscientiousness"
colnames(cookies_csv)[56] <- "extraversion"
colnames(cookies_csv)[57] <- "agreeableness"
colnames(cookies_csv)[58] <- "neuroticism"

colnames(cookies_csv)[67] <- "gender"
colnames(cookies_csv)[68] <- "gender_other"
colnames(cookies_csv)[69] <- "birth"
colnames(cookies_csv)[70] <- "nationality"
colnames(cookies_csv)[71] <- "edu_level"
colnames(cookies_csv)[72] <- "edu_level_other"
colnames(cookies_csv)[73] <- "edu_degree"
colnames(cookies_csv)[74] <- "edu_degree_other"

colnames(cookies_csv)[75] <- "cookie_familiar"
colnames(cookies_csv)[76] <- "cookie_transparency"
colnames(cookies_csv)[77] <- "cookie_reject_freq"
colnames(cookies_csv)[78] <- "cookie_accept_remember"
colnames(cookies_csv)[79] <- "cookie_accept_procedure"
colnames(cookies_csv)[80] <- "cookie_accept_close"
colnames(cookies_csv)[81] <- "cookie_accept_privacy"
colnames(cookies_csv)[82] <- "opinion_request_useful"
colnames(cookies_csv)[83] <- "opinion_request_annoy"
colnames(cookies_csv)[84] <- "opinion_salience"
colnames(cookies_csv)[85] <- "opinion_access"

# Remove invalid observations
cookies_csv <- subset(cookies_csv, session.code != "s4ptah1r")  # test session
cookies_csv <- subset(cookies_csv, !is.na(accepted_all))
cookies_csv <- subset(cookies_csv, current_app_name == "end" | current_app_name == "big_five_en_res")  # did not finish
cookies_csv <- subset(cookies_csv, id != 683)  # we detected autocompletion from google
cookies_csv <- subset(cookies_csv, decision_time > 0.1)  # to exclude timing issues
cookies_csv <- subset(cookies_csv, decision_time <= 300)  # exclude too slow

cookies <- cookies_csv
N1 <-  nrow(cookies)


# 2. Recoding variables ----

# Rejected
cookies$rejected <- 0
cookies$rejected[cookies$accepted == 0] <- 1

# Treatments (n)
cookies$ntreat <- 1
cookies$ntreat[cookies$treatment == "RP"] <- 2
cookies$ntreat[cookies$treatment == "AN"] <- 3
cookies$ntreat[cookies$treatment == "RN"] <- 4

# check cells n
# length(cookies$ntreat[cookies$treatment == "AP"])  # 90
# length(cookies$ntreat[cookies$treatment == "RP"])  # 89
# length(cookies$ntreat[cookies$treatment == "AN"])  # 88
# length(cookies$ntreat[cookies$treatment == "RN"])  # 91

# salience cells
cookies$salient <- 0
cookies$salient[cookies$treatment == "RP" | cookies$treatment == "RN"] <- 1
# length(cookies$salient[cookies$salient == 0])
length(cookies$decision_time[cookies$treatment == "AP" | cookies$treatment == "AN"])  # 178
length(cookies$decision_time[cookies$treatment == "RP" | cookies$treatment == "RN"])  # 180

# framing cells
cookies$framing <- 0
cookies$framing[cookies$treatment == "AN" | cookies$treatment == "RN"] <- 1
# length(cookies$framing[cookies$framing == 0])
length(cookies$decision_time[cookies$treatment == "AP" | cookies$treatment == "RP"])  # 179
length(cookies$decision_time[cookies$treatment == "AN" | cookies$treatment == "RN"])  # 179


# 3. Descriptives ----

## 3.1 Table 2 ----
# Age
cookies$age <- 2022 - cookies$birth
aggregate(cookies$age, list(cookies$treatment), FUN=mean)
aggregate(cookies$age, list(cookies$treatment), FUN=sd) 
# shapiro.test(cookies$age[cookies$treatment=="AP"]) # not normally distributed
# shapiro.test(cookies$age[cookies$treatment=="AN"])
# shapiro.test(cookies$age[cookies$treatment=="RP"])
# shapiro.test(cookies$age[cookies$treatment=="RN"])

library(car)
anova_age <- aov(age ~ treatment, data = cookies)  # fitted anova
summary(anova_age)
leveneTest(anova_age)  # equal variance in age
anova_res <- residuals(anova_age)
# plot(anova_res)
# qqPlot(anova_res)  # Residuals are non-normally distributed
shapiro.test(anova_res)  # Resisuals are non-normally distributed
kruskal.test(age ~ ntreat, data = cookies) # Kruskal-Wallis X(3) = 3.034, p = 0.256

## Male
cookies$male <- 0
cookies$male[cookies$gender=='M'] <- 1
table(cookies$male)
prop.table(table(cookies$male))
table(cookies$male, cookies$treatment)
prop.table(table(cookies$male, cookies$treatment),2)
chisq.test(cookies$male, cookies$treatment)

## Education
table(cookies$edu_level) 
## N: 1 Phd moved in Master's Degree and 3 "Other" in High School Diploma
cookies$edu_level_cod <- cookies$edu_level
cookies$edu_level_cod[cookies$edu_level == "Doctorate"] <- "Master's Degree"
cookies$edu_level_cod[cookies$edu_level == "Other (specify)"] <- "High School Diploma"

table(cookies$edu_level_cod, cookies$treatment)
prop.table(table(cookies$edu_level_cod))
prop.table(table(cookies$edu_level_cod, cookies$treatment),2)
chisq.test(cookies$edu_level_cod, cookies$treatment)


## 3.2 Table 3 ----
table(cookies$rejected)
prop.table(table(cookies$rejected))
table(cookies$rejected, cookies$treatment)
prop.table(table(cookies$rejected, cookies$treatment),2)

aggregate(cookies$decision_time, list(cookies$treatment), FUN=mean)
aggregate(cookies$decision_time, list(cookies$treatment), FUN=sd) 
aggregate(cookies$decision_time, list(cookies$treatment), FUN=median)

chisq.test(cookies$rejected, cookies$ntreat)

time_anova <- aov(decision_time ~ treatment, data = cookies)  # fitted anova
summary(time_anova)
leveneTest(time_anova)  # equal variance in age
time_anova_res <- residuals(time_anova)
# plot(time_anova_res)
# qqPlot(time_anova_res)  # Resisuals are non-normally distributed
shapiro.test(time_anova_res)  # Resisuals are non-normally distributed
kruskal.test(decision_time ~ ntreat, data = cookies) # Kruskal-Wallis X(3) = 21.5, p = 0.000083


### 3.3 Fig. 5: Cookie rejection (main) ----
library(tidyverse)
graph1 <- ggplot(cookies, aes(x=ntreat)) + # , color='red')) + 
  stat_summary(aes(y = rejected), 
               width = 0.75,
               fun = mean, na.rm = TRUE,
               geom = "bar",
               size = 3) + 
  stat_summary(aes(y = rejected),
               fun.data = mean_se, na.rm = TRUE,
               geom = "errorbar",
               width = 0.2) +
  theme_classic() +
  theme(panel.background = element_rect(fill='transparent'),
        plot.background = element_rect(fill='transparent', color=NA),
        panel.grid.major.y = element_line(color = "darkgrey", size = 0.5, linetype = 2),
        panel.grid.minor = element_blank(),
        legend.background = element_rect(fill='transparent'),
        legend.box.background = element_rect(fill='transparent'),
        text = element_text(size = 15), axis.ticks.x=element_blank(),
        plot.margin = margin(r = 1, l = 1 )
  ) + 
  labs(title="", y="Cookie Rejection \n", x="\nTreatments",
       caption = '') +
  scale_y_continuous(limits = c(0,1), #breaks = seq(0.25, 1, by = 0.25)
                     expand = c(0,0)) + 
  scale_x_discrete(limits=c("ACCEPT","REJECT","ACCEPT\u2013Neg", "REJECT\u2013Neg"))

graph1

# ggsave(
#   "reject_main.png",
#   path = "C:/Users/lucac/Dropbox/5 - Cookie Nudge/Data Analysis",
#   bg="white",
#   graph1,
#   width = 6,
#   height = 6,
#   dpi = 300
# )


# 4. Hypothesis testing ----
## 4.1 Hypotheses H1-H3 ----

### 4.1.1 H1a: AP vs RP ----
table(cookies$rejected[cookies$treatment == "AP" | cookies$treatment == "RP"], 
      cookies$treatment[cookies$treatment == "AP" | cookies$treatment == "RP"])

chitest1 <- chisq.test(cookies$rejected[cookies$treatment == "AP" | cookies$treatment == "RP"], 
           cookies$treatment[cookies$treatment == "AP" | cookies$treatment == "RP"], correct = FALSE)
chitest1


### 4.1.2 H1b: AN vs RN ----
table(cookies$rejected[cookies$treatment == "AN" | cookies$treatment == "RN"], 
      cookies$treatment[cookies$treatment == "AN" | cookies$treatment == "RN"])

chitest2 <- chisq.test(cookies$rejected[cookies$treatment == "AN" | cookies$treatment == "RN"], 
           cookies$treatment[cookies$treatment == "AN" | cookies$treatment == "RN"], correct = FALSE)
chitest2


### 4.1.3 H2a: AP vs AN ----
table(cookies$rejected[cookies$treatment == "AP" | cookies$treatment == "AN"], 
      cookies$treatment[cookies$treatment == "AP" | cookies$treatment == "AN"])

chitest3 <- chisq.test(cookies$rejected[cookies$treatment == "AP" | cookies$treatment == "AN"], 
                       cookies$treatment[cookies$treatment == "AP" | cookies$treatment == "AN"],  correct = FALSE)
chitest3


### 4.1.4 H2b: RP vs RN ----
table(cookies$rejected[cookies$treatment == "RP" | cookies$treatment == "RN"], 
      cookies$treatment[cookies$treatment == "RP" | cookies$treatment == "RN"])

chitest4 <- chisq.test(cookies$rejected[cookies$treatment == "RP" | cookies$treatment == "RN"], 
                       cookies$treatment[cookies$treatment == "RP" | cookies$treatment == "RN"], correct = FALSE)
chitest4


### 4.1.5 H3: AP vs RN ----
table(cookies$rejected[cookies$treatment == "AP" | cookies$treatment == "RN"], 
      cookies$treatment[cookies$treatment == "AP" | cookies$treatment == "RN"])

chitest5 <- chisq.test(cookies$rejected[cookies$treatment == "AP" | cookies$treatment == "RN"], 
                       cookies$treatment[cookies$treatment == "AP" | cookies$treatment == "RN"],  correct = FALSE)
chitest5


### 4.1.6 Multiple testing correction ----
pv1 <- chitest1[["p.value"]]
pv2 <- chitest2[["p.value"]]
pv3 <- chitest3[["p.value"]]
pv4 <- chitest4[["p.value"]]
pv5 <- chitest5[["p.value"]]
pvalues <- c(pv1, pv2, pv3, pv4, pv5)
p.adjust(pvalues, method="holm")


## 4.2 Hypothesis H4 ----
### 4.2.1 H4a: Salient clicked ----
cookies$clicked_salient <- 0
cookies$clicked_salient[cookies$rejected == 0 & cookies$treatment == "AP"] <- 1
cookies$clicked_salient[cookies$rejected == 0 & cookies$treatment == "AN"] <- 1
cookies$clicked_salient[cookies$rejected == 1 & cookies$treatment == "RP"] <- 1
cookies$clicked_salient[cookies$rejected == 1 & cookies$treatment == "RN"] <- 1
# table(cookies$clicked_salient[cookies$rejected == 0], cookies$treatment[cookies$rejected == 0])

logit_cs <- glm(clicked_salient ~ decision_time, data = cookies, family = "binomial")
summary(logit_cs)$coef
exp(coef(logit_cs)["decision_time"])

### 4.2.2 H4b: Framing on time ----
# Check normality of distribution
# qqPlot(cookies$decision_time[cookies$ntreat == 1])
# qqPlot(cookies$decision_time[cookies$ntreat == 2])
# qqPlot(cookies$decision_time[cookies$ntreat == 3])
# qqPlot(cookies$decision_time[cookies$ntreat == 4])

st1 <- shapiro.test(cookies$decision_time[cookies$ntreat == 1]) # non-normal
st2 <- shapiro.test(cookies$decision_time[cookies$ntreat == 2]) # non-normal
st3 <- shapiro.test(cookies$decision_time[cookies$ntreat == 3]) # non-normal
st4 <- shapiro.test(cookies$decision_time[cookies$ntreat == 4]) # non-normal

st1res <- c(st1[["statistic"]], st1[["p.value"]])
st2res <- c(st2[["statistic"]], st2[["p.value"]])
st3res <- c(st3[["statistic"]], st3[["p.value"]])
st4res <- c(st4[["statistic"]], st4[["p.value"]])
stres <- c(st1res, st2res, st3res, st4res)
p.adjust(c(st1res[2], st2res[2], st3res[2], st4res[2]), method = 'holm')

# Decision time is not normally distributed
# Log transform decision time
# cookies$log_dec_time <- log(cookies$decision_time)
# qqPlot(cookies$decision_time)
# shapiro.test(cookies$log_dec_time)

wilcoxtest1 <- wilcox.test(cookies$decision_time[cookies$treatment == "AN"], cookies$decision_time[cookies$treatment == "AP"], alternative ="g")
wilcoxtest1

wilcoxtest2 <- wilcox.test(cookies$decision_time[cookies$treatment == "RN"], cookies$decision_time[cookies$treatment == "RP"], alternative ="g")
wilcoxtest2

## multiple hypothesis correction
wpv1 <- wilcoxtest1[["p.value"]]
wpv2 <- wilcoxtest2[["p.value"]]

wpvalues <- c(wpv1, wpv2)
p.adjust(wpvalues, method="holm")


### 4.2.3 H4c: Time on Reject ----
logit_rd <- glm(rejected ~ decision_time, data = cookies, family = "binomial")
summary(logit_rd)$coef
exp(coef(logit_rd)["decision_time"])

## 4.3 H5: Personality traits and rejection ----
logit_pt <- glm(rejected ~ openness + conscientiousness + extraversion + agreeableness + neuroticism, data = cookies, family = "binomial")
summary(logit_pt)
exp(coef(logit_pt)["openness"])
exp(coef(logit_pt)["conscientiousness"])
exp(coef(logit_pt)["extraversion"])
exp(coef(logit_pt)["agreeableness"])
exp(coef(logit_pt)["neuroticism"])

# more comprehensive report for logit
library(rms)
logit_pt_rms <- lrm(rejected ~ openness + conscientiousness + extraversion + agreeableness + neuroticism, data = cookies)
print(logit_pt_rms)

# library(stargazer)
# stargazer(logit_pt, type="text")
#stargazer(logit_pt, type="latex", report=('vc*s'))



# 5. Additional session ----

## 5.1 Combine datasets ----
cookies_add1 <- read.csv("all_apps_wide-2023-10-02-fta8e1s3.csv")
cookies_add2 <- read.csv("all_apps_wide-2023-10-13-rpshekjt.csv")
cookies_add3 <- read.csv("all_apps_wide-2023-10-13-87lpmyis.csv")
cookies_add4 <- read.csv("all_apps_wide-2023-10-13-qo6cgmpu.csv")

library(gdata)
cookies_addc <- combine(cookies_add1, cookies_add2, cookies_add3, cookies_add4)
colnames(cookies_addc)
cookies_addc <- subset(cookies_addc, select = -c(87:102)) # These are related to variables not collected in the experiment (NAs)

## 5.2 Rename columns and clean df ----
colnames(cookies_addc)  # 2 more variables, at #26, so everything shifted by 1, + 1 toward the end (completion "code")

colnames(cookies_addc)[1] <- "id"
colnames(cookies_addc)[5] <- "index_in_pages"
colnames(cookies_addc)[6] <- "max_page_index"
colnames(cookies_addc)[7] <- "current_app_name"
colnames(cookies_addc)[8] <- "current_page_name"
colnames(cookies_addc)[9] <- "time_started"

colnames(cookies_addc)[27] <- "treatment"
colnames(cookies_addc)[28] <- "manage_right"
colnames(cookies_addc)[29] <- "policy_clicked"
colnames(cookies_addc)[30] <- "accepted_all"
colnames(cookies_addc)[31] <- "manage_clicked"
colnames(cookies_addc)[32] <- "accepted_selected"

colnames(cookies_addc)[35] <- "preferences"
colnames(cookies_addc)[36] <- "analytics"
colnames(cookies_addc)[37] <- "advertising"
colnames(cookies_addc)[38] <- "decision_time"

colnames(cookies_addc)[55] <- "openness"
colnames(cookies_addc)[56] <- "conscientiousness"
colnames(cookies_addc)[57] <- "extraversion"
colnames(cookies_addc)[58] <- "agreeableness"
colnames(cookies_addc)[59] <- "neuroticism"

colnames(cookies_addc)[68] <- "gender"
colnames(cookies_addc)[69] <- "gender_other"
colnames(cookies_addc)[70] <- "birth"
colnames(cookies_addc)[71] <- "nationality"
colnames(cookies_addc)[72] <- "edu_level"
colnames(cookies_addc)[73] <- "edu_level_other"
colnames(cookies_addc)[74] <- "edu_degree"
colnames(cookies_addc)[75] <- "edu_degree_other"

colnames(cookies_addc)[76] <- "cookie_familiar"
colnames(cookies_addc)[77] <- "cookie_transparency"
colnames(cookies_addc)[78] <- "cookie_reject_freq"
colnames(cookies_addc)[79] <- "cookie_accept_remember"
colnames(cookies_addc)[80] <- "cookie_accept_procedure"
colnames(cookies_addc)[81] <- "cookie_accept_close"
colnames(cookies_addc)[82] <- "cookie_accept_privacy"
colnames(cookies_addc)[83] <- "opinion_request_useful"
colnames(cookies_addc)[84] <- "opinion_request_annoy"
colnames(cookies_addc)[85] <- "opinion_salience"
colnames(cookies_addc)[86] <- "opinion_access"
colnames(cookies_addc)[92] <- "completion_code"

cookies_addc <- subset(cookies_addc, index_in_pages != 0) 
cookies_addc <- subset(cookies_addc, !is.na(accepted_all))
cookies_addc <- subset(cookies_addc, current_app_name == "end" | current_app_name == "big_five_en_res")


## 5.3 Table E.2 ---- 
N2 <-  nrow(cookies_addc)
table(cookies_addc$treatment)

# Age
cookies_addc$age <- 2023 - cookies_addc$birth
mean(cookies_addc$age)
stats::sd(cookies_addc$age, na.rm = TRUE)
aggregate(cookies_addc$age, list(cookies_addc$treatment), FUN=mean, na.rm=TRUE)
aggregate(cookies_addc$age, list(cookies_addc$treatment), FUN=sd, na.rm=TRUE)

# qqPlot(cookies_addc$age[cookies_addc$treatment == "AC" & !is.na(cookies_addc$age)])
shapiro.test(cookies_addc$age[cookies_addc$treatment == "AC" & !is.na(cookies_addc$age)])
# qqPlot(cookies_addc$age[cookies_addc$treatment == "RC" & !is.na(cookies_addc$age)])
shapiro.test(cookies_addc$age[cookies_addc$treatment == "RC" & !is.na(cookies_addc$age)])
wilcox.test(cookies_addc$age[cookies_addc$treatment == "AC" & !is.na(cookies_addc$age)], cookies_addc$age[cookies_addc$treatment == "RC" & !is.na(cookies_addc$age)])

# kruskal.test(age ~ treatment, data = cookies_addc) # Kruskal-Wallis X(3) = 0.11, p = 0.734

# Male
# cookies_addc$male <- NA
cookies_addc$male[cookies_addc$gender=='F'] <- 0
cookies_addc$male[cookies_addc$gender=='M'] <- 1
table(cookies_addc$male)
prop.table(table(cookies_addc$male))
table(cookies_addc$male, cookies_addc$treatment)
prop.table(table(cookies_addc$male, cookies_addc$treatment),2)

chisq.test(cookies_addc$male, cookies_addc$treatment, correct = FALSE)

## Education
table(cookies_addc$edu_level) 
cookies_addc$edu_level_cod_addc <- cookies_addc$edu_level
cookies_addc$edu_level_cod_addc[cookies_addc$edu_level == "Doctorate"] <- "Master's Degree"
cookies_addc$edu_level_cod_addc[cookies_addc$edu_level == "Other (specify)"] <- "High School Diploma"

table(cookies_addc$edu_level_cod_addc)
prop.table(table(cookies_addc$edu_level_cod_addc))
table(cookies_addc$edu_level_cod_addc[cookies_addc$edu_level !=""], cookies_addc$treatment)  # Remove missing data
prop.table(table(cookies_addc$edu_level_cod_addc[cookies_addc$edu_level !=""], cookies_addc$treatment[cookies_addc$edu_level !=""]),2)

chisq.test(cookies_addc$edu_level_cod_addc[cookies_addc$edu_level !=""], cookies_addc$treatment[cookies_addc$edu_level !=""], correct = FALSE)


## 5.4 Table E.3 ####
# Rejection rate
table(cookies_addc$accepted_selected)
prop.table(table(cookies_addc$accepted_selected))
table(cookies_addc$accepted_selected, cookies_addc$treatment)
prop.table(table(cookies_addc$accepted_selected, cookies_addc$treatment),2)

# Clicked on button "Manage cookies"
table(cookies_addc$manage_clicked)
prop.table(table(cookies_addc$manage_clicked))
table(cookies_addc$manage_clicked, cookies_addc$treatment)
prop.table(table(cookies_addc$manage_clicked, cookies_addc$treatment),2)

# Decision time
mean(cookies_addc$decision_time)
stats::sd(cookies_addc$decision_time)
median(cookies_addc$decision_time)
aggregate(cookies_addc$decision_time, list(cookies_addc$treatment), FUN=mean)
aggregate(cookies_addc$decision_time, list(cookies_addc$treatment), FUN=sd) 
aggregate(cookies_addc$decision_time, list(cookies_addc$treatment), FUN=median)

## 5.5 Hypothesis Testing ----
chisq.test(cookies_addc$accepted_all, cookies_addc$treatment, correct = FALSE)
chisq.test(cookies_addc$manage_clicked, cookies_addc$treatment, correct = FALSE)

# qqPlot(cookies_addc$decision_time[cookies_addc$treatment == "AC"])
shapiro.test(cookies_addc$decision_time[cookies_addc$treatment == "AC"])
# qqPlot(cookies_addc$decision_time[cookies_addc$treatment == "RC"])
shapiro.test(cookies_addc$decision_time[cookies_addc$treatment == "RC"])
wilcox.test(cookies_addc$decision_time[cookies_addc$treatment == "AC"], cookies_addc$decision_time[cookies_addc$treatment == "RC"])


## 5.6 Fig. E.3 Cookie rejection (add) ----
cookies_addc$ntreat <- 1
cookies_addc$ntreat[cookies_addc$treatment == "RC"] <- 2

graphE3 <- ggplot(cookies_addc, aes(x=ntreat)) + # , color='red')) + 
  stat_summary(aes(y = accepted_selected), 
               width = 0.75,
               fun = mean, na.rm = TRUE,
               geom = "bar",
               size = 3) + 
  stat_summary(aes(y = accepted_selected),
               fun.data = mean_se, na.rm = TRUE,
               geom = "errorbar",
               width = 0.2) +
  theme_classic() +
  theme(panel.background = element_rect(fill='transparent'),
        plot.background = element_rect(fill='transparent', color=NA),
        panel.grid.major.y = element_line(color = "darkgrey", size = 0.5, linetype = 2),
        panel.grid.minor = element_blank(),
        legend.background = element_rect(fill='transparent'),
        legend.box.background = element_rect(fill='transparent'),
        text = element_text(size = 15), axis.ticks.x=element_blank(),
        plot.margin = margin(r = 1, l = 1 )
  ) + 
  labs(title="", y="Cookie Rejection \n", x="\nTreatments",
       caption = '') +
  scale_y_continuous(limits = c(0,1), #breaks = seq(0.25, 1, by = 0.25)
                     expand = c(0,0)) + 
  scale_x_discrete(limits=c("ACCEPT\u2013Manage","MANAGE\u2013Accept"))

graphE3

# ggsave(
#   "reject_add.png",
#   path = "C:/Users/lucac/Dropbox/5 - Cookie Nudge/Data Analysis",
#   bg="white",
#   graphE3,
#   width = 6,
#   height = 6,
#   dpi = 300
# )

# Selection of cookies
table(cookies_addc$preferences)
table(cookies_addc$advertising)
table(cookies_addc$analytics)


##### Extra: Decision time graph #####
# graph2 <- ggplot(cookies, aes(x=ntreat)) + # , color='red')) + 
#   stat_summary(aes(y = decision_time), 
#                width = 0.75,
#                fun = mean, na.rm = TRUE,
#                geom = "bar",
#                size = 3) + 
#   stat_summary(aes(y = decision_time),
#                fun.data = mean_se, na.rm = TRUE,
#                geom = "errorbar",
#                width = 0.2) +
#   theme_classic() +
#   theme(panel.background = element_rect(fill='transparent'),
#         plot.background = element_rect(fill='transparent', color=NA),
#         panel.grid.major.y = element_line(color = "darkgrey", size = 0.5, linetype = 2),
#         panel.grid.minor = element_blank(),
#         legend.background = element_rect(fill='transparent'),
#         legend.box.background = element_rect(fill='transparent'),
#         text = element_text(size = 15), axis.ticks.x=element_blank(),
#         plot.margin = margin(r = 1, l = 1 )
#   ) + 
#   labs(title="", y="Decision Time \n", x="\nTreatments",
#        caption = '') +
#   scale_y_continuous(#limits = c(0, 10), #breaks = seq(0.25, 1, by = 0.25)
#                      expand = c(0,0)) + 
#   scale_x_discrete(limits=c("ACCEPT","REJECT","ACCEPT-Neg", "REJECT-Neg"))
# 
# graph2
# 
# 
# graph2_median <- ggplot(cookies, aes(x=ntreat)) + # , color='red')) + 
#   stat_summary(aes(y = decision_time), 
#                width = 0.75,
#                fun = median, na.rm = TRUE,
#                geom = "bar",
#                size = 3) + 
# #  stat_summary(aes(y = decision_time),
# #               fun.data = mean_se, na.rm = TRUE,
# #               geom = "errorbar",
# #               width = 0.2) +
#   theme_classic() +
#   theme(panel.background = element_rect(fill='transparent'),
#         plot.background = element_rect(fill='transparent', color=NA),
#         panel.grid.major.y = element_line(color = "darkgrey", size = 0.5, linetype = 2),
#         panel.grid.minor = element_blank(),
#         legend.background = element_rect(fill='transparent'),
#         legend.box.background = element_rect(fill='transparent'),
#         text = element_text(size = 15), axis.ticks.x=element_blank(),
#         plot.margin = margin(r = 1, l = 1 )
#   ) + 
#   labs(title="", y="Decision Time \n", x="\nTreatments",
#        caption = '') +
#   scale_y_continuous(#limits = c(0, 10), #breaks = seq(0.25, 1, by = 0.25)
#     expand = c(0,0)) + 
#   scale_x_discrete(limits=c("ACCEPT","REJECT","ACCEPT-Neg", "REJECT-Neg"))
# 
# graph2_median


#### Extra: Salience-Framing mechanism ####
# ggplot(cookies, aes(x=ntreat)) + 
#   stat_summary(aes(y = clicked_salient), width = 0.75, fun = mean, na.rm = TRUE, geom = "bar", size = 3) + 
#   theme_classic()
# 
# ggplot(cookies, aes(x=cookie_familiar)) + 
#   stat_summary(aes(y = clicked_salient), width = 0.75, fun = mean, na.rm = TRUE, geom = "bar", size = 3) + 
#   theme_classic()
# 
# chisq.test(cookies$clicked_salient[cookies$treatment=='AN' | cookies$treatment=='RN'],
#            cookies$cookie_familiar[cookies$treatment=='AN' | cookies$treatment=='RN'])
# 
# 
# logit_sf <- glm(clicked_salient[cookies$treatment=='AN' | cookies$treatment=='RN'] 
#                 ~ rejection_habit[cookies$treatment=='AN' | cookies$treatment=='RN'], data = cookies, family = "binomial")
# summary(logit_sf)$coef
# 
# chisq.test(cookies$clicked_salient[cookies$treatment=='AN' | cookies$treatment=='RN'],
#            cookies$accept_remember[cookies$treatment=='AN' | cookies$treatment=='RN'])
# chisq.test(cookies$clicked_salient[cookies$treatment=='AN' | cookies$treatment=='RN'],
#            cookies$accept_close[cookies$treatment=='AN' | cookies$treatment=='RN'])
# 
# chisq.test(cookies$clicked_salient[cookies$treatment=='AN' | cookies$treatment=='RN'],
#            cookies$accept_procedure[cookies$treatment=='AN' | cookies$treatment=='RN'])
# 
# chisq.test(cookies$clicked_salient[cookies$treatment=='AN' | cookies$treatment=='RN'],
#            cookies$accept_privacy[cookies$treatment=='AN' | cookies$treatment=='RN'])



# 6. Pilot session ----
## 5.1 Load Dataset ----
cookies_pilot <- read.csv("all_apps_wide-2021-08-10-pilot-an.csv")

colnames(cookies_pilot)
colnames(cookies_pilot)[7] <- "current_app_name"
colnames(cookies_pilot)[26] <- "treatment"
colnames(cookies_pilot)[29] <- "accepted_all"
colnames(cookies_pilot)[30] <- "managed_clicked"
colnames(cookies_pilot)[31] <- "cookie_managed"


cookies_pilot <- subset(cookies_pilot, current_app_name == "end" | current_app_name == "big_five_it_res")  # did not finish


table(cookies_pilot$managed_clicked)
prop.table(table(cookies_pilot$managed_clicked))[2]  # 11%
table(cookies_pilot$managed_clicked, cookies_pilot$treatment)
prop.table(table(cookies_pilot$managed_clicked, cookies_pilot$treatment),2)


table(cookies_pilot$cookie_managed)
prop.table(table(cookies_pilot$cookie_managed))
table(cookies_pilot$cookie_managed, cookies_pilot$treatment)
prop.table(table(cookies_pilot$cookie_managed, cookies_pilot$treatment),2)

# barplot(table(cookies_pilot$cookie_managed, cookies_pilot$treatment))
chisq.test(table(cookies_pilot$cookie_managed, cookies_pilot$treatment), correct = FALSE)

chisq.test(table(cookies_pilot$cookie_managed[cookies_pilot$treatment=="CA" | cookies_pilot$treatment=="A"], 
                 cookies_pilot$treatment[cookies_pilot$treatment=="CA" | cookies_pilot$treatment=="A"]), 
           correct = FALSE)
