## Observations: 115
## Variables: 4
## $ user_id <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", …
## $ satisfaction <dbl> 2.0, 3.0, 1.5, 1.0, 2.0, 2.5, 2.0, 3.0, 2.0, 2.0, 2…
## $ scenario <chr> "baseline", "baseline", "baseline", "baseline", "ba…
## $ group <chr> "3", "1", "2", "2", "1", "1", "3", "3", "2", "1", "…
theta_diferenca = function(d, i){
df = d %>%
slice(i) %>%
group_by(scenario) %>%
summarise(media = mean(satisfaction))
baseline = df %>% filter(scenario == "baseline") %>% pull(media)
skip = df %>% filter(scenario == "skip") %>% pull(media)
voting = df %>% filter(scenario == "up/downvoting") %>% pull(media)
c(baseline, skip, voting)
}
theta_c = theta_diferenca(dados, 1:NROW(dados))
theta_c## [1] 2.130435 2.521739 4.391304
ics <- dados %>% boot(statistic = theta_diferenca, R = 4000) %>%
tidy(conf.level = 0.95,
conf.int = TRUE)
ics$scenario = c("baseline", "skip", "up/downvoting")
ics## # A tibble: 3 x 6
## statistic bias std.error conf.low conf.high scenario
## <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 2.13 -0.000514 0.136 1.86 2.39 baseline
## 2 2.52 -0.000290 0.106 2.31 2.73 skip
## 3 4.39 -0.00172 0.0941 4.21 4.58 up/downvoting
Observando os intervalos de confiança e os valores da estatística theta, podemos afirmar que para o mecanismo baseline a média das avaliações é 2.130435, (95% CI [1.861111, 2.388889]), já para o mecanismo skip a média das avaliações é 2.521739, (95% CI [2.312500, 2.725000]) e para o mecanismo up/downvoting a média das avaliações é 4.391304, (95% CI [4.214286, 4.583333]).
Por esse método, vemos que a satisfação dos usuário é maior com o mecanismo up/downvoting.
Vejamos as diferenças entre os mecanismos usando Intervalos de Confiança e Teste de Hipótese.
theta_diferenca_2 = function(d, i){
df = d %>%
slice(i) %>%
group_by(scenario) %>%
summarise(media = mean(satisfaction))
baseline = df %>% filter(scenario == "baseline") %>% pull(media)
skip = df %>% filter(scenario == "skip") %>% pull(media)
voting = df %>% filter(scenario == "up/downvoting") %>% pull(media)
c(baseline - skip, baseline - voting)
}
theta_c = theta_diferenca_2(dados, 1:NROW(dados))
theta_c## [1] -0.3913043 -2.2608696
theta_baseline_voting = function(d){
satisfacoes = d %>%
mutate(scenario_embaralhado = sample(scenario, n())) %>%
group_by(scenario_embaralhado) %>%
summarise(satisfacao = mean(satisfaction))
baseline = satisfacoes %>% filter(scenario_embaralhado == "baseline") %>% pull(satisfacao)
up = satisfacoes %>% filter(scenario_embaralhado == "up/downvoting") %>% pull(satisfacao)
baseline - up
}
theta_baseline_skip = function(d){
satisfacoes = d %>%
mutate(scenario_embaralhado = sample(scenario, n())) %>%
group_by(scenario_embaralhado) %>%
summarise(satisfacao = mean(satisfaction))
baseline = satisfacoes %>% filter(scenario_embaralhado == "baseline") %>% pull(satisfacao)
skip = satisfacoes %>% filter(scenario_embaralhado == "skip") %>% pull(satisfacao)
baseline - skip
}diffs_baseline_voting = replicate(4000, {theta_baseline_voting(dados)})
diffs_baseline_skip = replicate(4000, {theta_baseline_skip(dados)})ics <- dados %>% boot(statistic = theta_diferenca_2, R = 4000) %>%
tidy(conf.level = 0.95,
conf.int = TRUE)
ics$scenario = c("baseline - skip", "baseline - up/downvoting")
ics## # A tibble: 2 x 6
## statistic bias std.error conf.low conf.high scenario
## <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 -0.391 -0.00212 0.170 -0.719 -0.0610 baseline - skip
## 2 -2.26 0.00245 0.163 -2.57 -1.94 baseline - up/downvoting
Observando os intervalos de confiança e os valores da estatística theta, podemos afirmar que a diferença entre o mecanismo baseline e o mecanismo skip é em média de -0.3913043, (95% CI [-0.7169926, -0.05952865]), já para a diferença entre o mecanismo baseline e o skip é em média de -2.2608696, (95% CI [-2.5736353, -1.94745512]).
tibble(diferenca = diffs_baseline_skip) %>%
ggplot(aes(x = diferenca)) +
geom_histogram(binwidth = .2, fill = "white", color = "darkgreen") +
geom_vline(xintercept = theta_c[1],
color = "orange") +
geom_vline(xintercept = -theta_c[1],
color = "orange") +
labs(title = "Baselive vs Skip") +
hrbrthemes::theme_ipsum_rc()baseline = dados %>% select(-group) %>% filter(scenario == "baseline") %>% pull(satisfaction)
skip = dados %>% select(-group) %>% filter(scenario == "skip") %>% pull(satisfaction)
voting = dados %>% select(-group) %>% filter(scenario == "up/downvoting") %>% pull(satisfaction)
permTS(baseline, skip)##
## Exact Permutation Test (network algorithm)
##
## data: baseline and skip
## p-value = 0.03745
## alternative hypothesis: true mean baseline - mean skip is not equal to 0
## sample estimates:
## mean baseline - mean skip
## -0.3913043
A partir desta amostra, utilizando Intervalos de Confiança, estimamos que o mecanismo baseline tem, em média, aproximadamente -0.39 pontos de satisfação que o skip (95% CI [-0.7169926, -0.05952865]). Utilizando teste de hipótese, encontramos um p-valor de 0.03745, que nos deixa confortáveis para descartar a hipótese nula e, portanto, mostrando uma diferença com razoável significância, considerando uma escala de 0 a 5.
As análises concordam. Nos Intervalos de Confiança temos ainda a informação do quão diferente (0.39) e o sinal (-) dessa diferença.
tibble(diferenca = diffs_baseline_voting) %>%
ggplot(aes(x = diferenca)) +
geom_histogram(binwidth = .2, fill = "white", color = "darkgreen") +
geom_vline(xintercept = theta_c[2],
color = "orange") +
geom_vline(xintercept = -theta_c[2],
color = "orange") +
labs(title = "Baselive vs Up/Downvoting") +
hrbrthemes::theme_ipsum_rc()##
## Exact Permutation Test (network algorithm)
##
## data: baseline and voting
## p-value = 2.429e-13
## alternative hypothesis: true mean baseline - mean voting is not equal to 0
## sample estimates:
## mean baseline - mean voting
## -2.26087
A partir desta amostra, utilizando Intervalos de Confiança, estimamos que o mecanismo baseline tem, em média, aproximadamente -2.26 pontos de satisfação que o up/downvoting (95% CI [-2.5736353, -1.94745512]). Utilizando teste de hipótese, encontramos um p-valor de 02.429e-13, que nos deixa bem confortáveis para descartar a hipótese nula e, portanto, mostrando uma diferença com alta significância, considerando uma escala de 0 a 5.
As análises concordam. Nos Intervalos de Confiança temos ainda a informação do quão diferente (2.26) e o sinal (-) dessa diferença.