Introdução
A Wikimedia Foundation é uma organização sem fins lucrativos que mantém projetos baseados em wiki como a Wikipedia.
Neste relatório, iremos responder algumas perguntas propostas por eles, em um desafio para seleção de analistas de dados:
- Existe uma diferença significativa na taxa de click geral diária entre os grupos?
- Existe uma diferença significativa na taxa de resultados zerados entre os grupos?
Para responder essas perguntas, utilizaremos os dados fornecidos por eles e modificados pelo professor Nazareno Andrade Como os dados providos pela Wikimedia são apenas uma amostra, faremos nossa análise, através de testes de hipótese. O nível de significância de 5%.
## here() starts at /home/jslucassf/Workspace/lab2-cp4-jslucassf
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:here':
##
## here
## The following object is masked from 'package:base':
##
## date
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:lubridate':
##
## intersect, setdiff, union
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Parsed with column specification:
## cols(
## session_id = col_character(),
## search_index = col_integer(),
## session_start_timestamp = col_double(),
## session_start_date = col_datetime(format = ""),
## group = col_character(),
## results = col_integer(),
## num_clicks = col_integer(),
## first_click = col_integer()
## )
Definições
Antes de mais nada, é importante para responder as perguntas a seguir, definir dois conceitos.
Taxa de cliques: A proporção de sessões em que o usuário clicou em ao menos um dos resultados. Taxa de resultados zerados: A proporção de sessões com 0 resultados.
Existe uma diferença significativa na taxa de click geral diária entre os grupos?
Em uma análise anterior, vimos que há uma diferença na taxa de cliques geral diária entre os grupos e que o grupo A possui valores muito mais altos desta taxa. Aqui, faremos uso de teste de hipótese, para tentar corroborar esta afirmação e além disto, saber se esta diferença é realmente significativa.
Desta forma, estas são as hipóteses utilizadas no teste:
H0: taxa de cliques no grupo A - taxa de cliques no grupo B = 0 (Não há diferença significativa entre os grupos) H1: taxa de cliques no grupo A - taxa de cliques no grupo B != 0 (Há diferença significativa entre os grupos)
sessoes <- buscas %>%
group_by(session_id) %>%
summarise(grupo = first(group),
com_clique = sum(num_clicks, na.rm = TRUE) > 0)
taxa_de_cliques <- function(value, i){
return(sum(value[i])/length(value))
}
teste <- permutationTest2(sessoes, taxa_de_cliques(com_clique), treatment = grupo)
teste## Call:
## permutationTest2(data = sessoes, statistic = taxa_de_cliques(com_clique),
## treatment = grupo)
## Replications: 9999
## Two samples, sample sizes are 29420 38531
##
## Summary Statistics for the difference between samples 1 and 2:
## Observed Mean Alternative PValue
## taxa_de_cliques(com_clique): a-b 0.49569 2.7946e-06 two.sided 2e-04
Obtivemos um p-valor de 210^{-4}, valor menor que nosso nível de significância de 0.5. Portanto podemos rejeitar a hipótese nula e concluímos que de fato, existe uma diferença significante entre a taxa de cliques nos dois grupos.
Existe uma diferença significativa na taxa de resultados zerados entre os grupos?
Responderemos aqui uma pergunta similar a anterior, entretanto desta vez estamos interessados na taxa de resultados zerados.
Desta vez, as hipóteses utilizadas no teste serão:
H0: taxa de resultados zerados no grupo A - taxa de resultados zerados no grupo B = 0 (Não há diferença significativa entre os grupos) H1: taxa de resultados zerados no grupo A - taxa de resultados zerados no grupo B != 0 (Há diferença significativa entre os grupos)
sessoes_zeradas <- buscas %>%
group_by(session_id) %>%
summarise(grupo = first(group),
sem_resultados = sum(results, na.rm = TRUE) == 0,
data = paste(day(first(session_start_date)), month(first(session_start_date)), year(first(session_start_date)), sep = "/"))
taxa_de_zerados <- function(value, i){
return(sum(value[i])/length(value))
}
teste2 <- permutationTest2(sessoes_zeradas, taxa_de_zerados(sem_resultados), treatment = grupo)
teste2## Call:
## permutationTest2(data = sessoes_zeradas, statistic = taxa_de_zerados(sem_resultados),
## treatment = grupo)
## Replications: 9999
## Two samples, sample sizes are 29420 38531
##
## Summary Statistics for the difference between samples 1 and 2:
## Observed Mean Alternative
## taxa_de_zerados(sem_resultados): a-b -0.1190655 1.377078e-06 two.sided
## PValue
## taxa_de_zerados(sem_resultados): a-b 2e-04
Obtivemos um p-valor de 210^{-4}, e mais uma vez, valor menor que nosso nível de significância de 0.5. Portantorejeitamos a hipótese nula e concluímos que de fato, existe uma diferença significante entre a taxa de resultados zerados nos dois grupos.
Intervalos de Confiança x Testes de hipótese
Tendo experimentado com as duas técnicas, podemos agora compará-las.
Testes de hipótese, tem uma função simples. Testar hipóteses! com eles podemos interpretar resultados de maneira puramente matemática. Entretanto, os intervalos de confiança nos permitem realizar o mesmo tipo de análise, e ainda podem nos informar ainda mais sobre a estatística de estudo. Podemos formar conclusões sobre o posicionamento exato da estatística da população, e até estimar com confiança, faixas de valores sobre as hipóteses. As perguntas originais do estudo tiveram de ser modificadas pois o teste de hipótese não seria capaz de prover as respostas desejadas, para citar um exemplo das limitações nos testes de hipótese.