dados = read_csv(here::here("data/satisfacoes.csv"),
col_types = "cdcc")
get_ic <- function(the_data, col1, col2){
the_data = the_data %>%
filter(scenario %in% c(col1, col2))
theta <- function(d, i) {
agrupado = d %>%
slice(i) %>%
group_by(scenario) %>%
summarise(media = mean(satisfaction))
mecanismo1 = agrupado %>% filter(scenario == col1) %>% pull(media)
mecanismo2 = agrupado %>% filter(scenario == col2) %>% pull(media)
mecanismo2 - mecanismo1
}
ci = boot(data = the_data,
statistic = theta,
R = 2000) %>%
tidy(conf.level = .95,
conf.method = "bca",
conf.int = TRUE)
return(ci %>% mutate(mecanismo = paste(col2, col1, sep = " - ")))
}
plot_ics <- function(data){
data %>%
ggplot(aes(x = mecanismo, y = statistic, color = mecanismo)) +
geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width = .05) +
geom_point(aes(position = statistic), size = 3) +
theme_minimal() +
theme(axis.text.x=element_blank())
}
Iniciamos comparando os mecanismos propostos com o baseline
# Mecanismos: baseline, like/dislike, up/downvoting, skip, combined
base_ld <- get_ic(dados, "baseline", "like/dislike")
base_ud <- get_ic(dados, "baseline", "up/downvoting")
base_sk <- get_ic(dados, "baseline", "skip")
ics_base <- rbind(base_ld, base_ud, base_sk)
plot_ics(ics_base)
## Warning: Ignoring unknown aesthetics: position
Os intervalos de confiança nos mostram, que temos evidência para afirmar que todos os mecanismos foram efetivos em aumentar a satisfação dos usuários das playlists. Entretanto, alguns mais do que outros. O mecanismo de up/downvoting, parece aumentar considerávelmente a satisfação, e ser o mais efetivo nessa tarefa. O que a relação entre ele e os demais nos diz?
ud_sk <- get_ic(dados, "up/downvoting", "skip")
ud_ld <- get_ic(dados, "up/downvoting", "like/dislike")
ics_ud <- rbind(ud_sk, ud_ld)
plot_ics(ics_ud)
## Warning: Ignoring unknown aesthetics: position
Temos então mais evidências de que up/downvoting foi o mecanismo mais efetivo em aumentar a satisfação dos usuários, uma vez que os intervalos de confiança mostram uma relação negativa quando calculamos a relação dos outros mecanismos menos up/downvoting.
Nos resta investigar por fim, se os mecanismos são mais efetivos sozinhos ou quando implementados em conjunto.
cb_ld <- get_ic(dados, "combined", "like/dislike")
cb_ud <- get_ic(dados, "combined", "up/downvoting")
cb_sk <- get_ic(dados, "combined", "skip")
ics_cb <- rbind(cb_ld, cb_ud, cb_sk)
plot_ics(ics_cb)
## Warning: Ignoring unknown aesthetics: position
A combinação de todos os mecanismos parece apresentar bons resultados, porém ainda temos evidências para acreditar que up/downvoting ainda seja o melhor. Para compará-los, vamos visualizar a comparação inicial (com o baseline) mais uma vez, desta vez incluindo a combinação.
base_cb <- get_ic(dados, "baseline", "combined")
ics_base_cb <- rbind(base_ld, base_ud, base_sk, base_cb)
plot_ics(ics_base_cb)
## Warning: Ignoring unknown aesthetics: position
De fato, a combinação dos mecanismos parece apresentar uma melhora na satisfação dos usuários. Além disso, analisando apenas esta última visualização não poderíamos afirmar que há um maior efeito quando comparamos a combinação e like/deslike, ou combinação e up/downvoting. Porém, quando realizamos a comparação em relação ao valor combinado obtemos evidência de que este realmente é mais efetivo que like/ðeslike e menos efetivo que up/downvoting.