dados = read_csv(here::here("data/satisfacoes.csv"), 
                 col_types = "cdcc") 

dados = dados %>% 
    filter(scenario != "like/dislike")

glimpse(dados)
## Rows: 92
## Columns: 4
## $ user_id      <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", …
## $ satisfaction <dbl> 2.0, 3.0, 1.5, 1.0, 2.0, 2.5, 2.0, 3.0, 2.0, 2.0, 2.0, 2.…
## $ scenario     <chr> "baseline", "baseline", "baseline", "baseline", "baseline…
## $ group        <chr> "3", "1", "2", "2", "1", "1", "3", "3", "2", "1", "3", "2…
dados_wide = dados %>% 
    pivot_wider(names_from = "scenario", values_from = satisfaction) 

dados_wide = dados_wide %>% 
    mutate(
        combined_baseline = combined - baseline, 
        updown_baseline = `up/downvoting` - baseline,
        skip_baseline = skip - baseline
    ) 

baseline, skip, up/downvoting e combined.

theta <- function(d, i) {
    d[i] %>% 
        mean(na.rm = T)
}

theta(dados_wide$combined_baseline, 1:NROW(dados_wide))
## [1] 1.95
theta(dados_wide$updown_baseline, 1:NROW(dados_wide))
## [1] 2.25
theta(dados_wide$skip_baseline, 1:NROW(dados_wide))
## [1] 0.425
ci_combined = boot(data = dados_wide$combined_baseline,
                   statistic = theta,
                   R = 2000) %>%
    tidy(conf.level = .95,
         conf.method = "bca",
         conf.int = TRUE)

ci_combined
## # A tibble: 1 x 5
##   statistic     bias std.error conf.low conf.high
##       <dbl>    <dbl>     <dbl>    <dbl>     <dbl>
## 1      1.95 -0.00321     0.219     1.56       2.4
ci_updown = boot(data = dados_wide$updown_baseline,
                   statistic = theta,
                   R = 2000) %>%
    tidy(conf.level = .95,
         conf.method = "bca",
         conf.int = TRUE)

ci_updown
## # A tibble: 1 x 5
##   statistic     bias std.error conf.low conf.high
##       <dbl>    <dbl>     <dbl>    <dbl>     <dbl>
## 1      2.25 -0.00353     0.180     1.92      2.63
ci_skip = boot(data = dados_wide$skip_baseline,
                   statistic = theta,
                   R = 2000) %>%
    tidy(conf.level = .95,
         conf.method = "bca",
         conf.int = TRUE)

ci_skip
## # A tibble: 1 x 5
##   statistic    bias std.error conf.low conf.high
##       <dbl>   <dbl>     <dbl>    <dbl>     <dbl>
## 1     0.425 0.00442     0.127    0.131      0.65

Qual o tamanho do efeito de cada uma das alternativas do sistema comparada com o baseline? Esse efeito é relevante? Vale à pena para um desenvolvedor implementar alguma delas? Qual/quais?

Tendo essas avaliações sendo obtidadas na escala Likert, onde seu intervalo vai de 1 a 5, sendo 1 muito baixo, e 5 muito alto, adotamos a seguintes criterios.

tendo |x| > 2 uma diferença alta, tendo 1 > |x| < 2, diferença media tendo |x| < 1, diferenca irrelevante

Com base nos dados amostrais, podemos dizer que os mecanismos combined e up/downvoting valem a pena ser implementados, por resultar numa diferença relevante para a satisfação dos usuarios comparados ao baseline.

dados_wide2 = dados_wide %>% 
    mutate(
        baseline_combined =  baseline - combined, 
        updown_combined = `up/downvoting` - combined,
        skip_combined = skip - combined
    ) 

theta(dados_wide2$baseline_combined, 1:NROW(dados_wide2))
## [1] -1.95
theta(dados_wide2$updown_combined, 1:NROW(dados_wide2))
## [1] 0.3478261
theta(dados_wide2$skip_combined, 1:NROW(dados_wide2))
## [1] -1.521739
ci_baseline_c = boot(data = dados_wide2$baseline_combined,
                   statistic = theta,
                   R = 2000) %>%
    tidy(conf.level = .95,
         conf.method = "bca",
         conf.int = TRUE)

ci_baseline_c
## # A tibble: 1 x 5
##   statistic     bias std.error conf.low conf.high
##       <dbl>    <dbl>     <dbl>    <dbl>     <dbl>
## 1     -1.95 -0.00491     0.217    -2.39     -1.55
ci_updown_c = boot(data = dados_wide2$updown_combined,
                   statistic = theta,
                   R = 2000) %>%
    tidy(conf.level = .95,
         conf.method = "bca",
         conf.int = TRUE)

ci_updown_c
## # A tibble: 1 x 5
##   statistic     bias std.error conf.low conf.high
##       <dbl>    <dbl>     <dbl>    <dbl>     <dbl>
## 1     0.348 -0.00335     0.158   0.0476     0.676
ci_skip_c = boot(data = dados_wide2$skip_combined,
                   statistic = theta,
                   R = 2000) %>%
    tidy(conf.level = .95,
         conf.method = "bca",
         conf.int = TRUE)

ci_skip_c
## # A tibble: 1 x 5
##   statistic    bias std.error conf.low conf.high
##       <dbl>   <dbl>     <dbl>    <dbl>     <dbl>
## 1     -1.52 0.00555     0.174    -1.90     -1.22

Qual o tamanho do efeito da combinação de alternativas (a combined) em relação às alternativas separadas?

dados_wide2 = dados_wide %>% 
    mutate(
        updown_skip = `up/downvoting` - skip
    ) 

theta(dados_wide2$updown_skip, 1:NROW(dados_wide2))
## [1] 1.869565
ci_updown_skip = boot(data = dados_wide2$updown_skip,
                   statistic = theta,
                   R = 2000) %>%
    tidy(conf.level = .95,
         conf.method = "bca",
         conf.int = TRUE)

ci_updown_skip
## # A tibble: 1 x 5
##   statistic     bias std.error conf.low conf.high
##       <dbl>    <dbl>     <dbl>    <dbl>     <dbl>
## 1      1.87 -0.00452     0.136     1.62      2.16

Considerando a escolha entre skip e up/downvoting, você recomendaria a alguém interessado em aumentar a satisfação de usuários que prefira a implementação de um deles?

Fazendo uma comparação entre up/downvoting e skip, estimamos, com 95% de confiança, que up/downvoting se comporta melhor que o skip, havendo uma melhora , de acordo com o nosso criterio de relevancia, media ou alta, tendo seu IC[1.630435, 1.630435]. Com base nesses dados, recomendamos o uso do mecanismo up/downvoting.

Se implementar a variante combined é a opção mais trabalhosa, em que situação você a recomendaria para implementação?

Se coletarmos mais amostras, fazendo com que o ic seja mais centrado em um valor(mais preciso) e tal melhoria retornar-se um deta maior que 2, tendo todo seu intervalo de confianca maior que 2 , recomendamos tal implementacao