Considerações Iniciais

A partir de dados da Winkpedia, dispostos em /data/search_data.csv, respoder as questões abaixo:

Mas, o que esse dataset descreve?

A Winkpedia reuniu dados de buscas e a navegação depois das buscas e dispos nas seguintes variáveis:

  • session_id : Um id único identificando sessões individuais
  • search_index : Um contador de buscas em uma mesma sessão ordenado cronologicamente
  • session_start_timestamp: O timestamp que a sessão iniciou
  • session_start_date : A data e hora que a sessão iniciou
  • group : O grupo que pode ser “a” ou “b”
  • results : A quantidade de resultados que a busca retornou
  • num_clicks : O número de páginas que o usuário visitou a partir da busca
  • first_click : A posição do link da página visitada no mecanismo de busca de páginas
  • session_length : A duração em segundos da sessão

Explorando o dataset

Vamos visualizar a disposição dessas variáveis dentro do dataset

head(data %>% arrange(session_id))
data %>% ggplot(aes(x = num_clicks)) + geom_histogram(binwidth = 1) 


Qual é a nossa taxa de cliques geral diária? Como isso varia entre os grupos?

## Warning in as.POSIXlt.POSIXct(x, tz = tz): unknown timezone '%d/%m/%Y'
data %>%
  group_by(session_start_date) %>%
  mutate(clicks_per_day = sum(num_clicks)) %>%
  ggplot(aes(x = session_start_date, y = clicks_per_day, colour=clicks_per_day)) +
  geom_line() +
  labs(x = "Data", y = "Cliques por Dia") +
  theme(legend.position = "none")

Vemos no gráfico acima que número de cliques foi maior no início de Março.

clicks <- data %>% 
                filter(num_clicks > 0) %>% 
                group_by(session_start_date, group) %>% 
                summarise( clicked_sessions = n_distinct(session_id) )

sessions <- data %>%
                group_by(session_start_date, group) %>% 
                summarise( total_sessions = n_distinct(session_id) )

sessions_by_date = clicks %>% 
                        inner_join(sessions, by = c("session_start_date", "group")) %>%
                        mutate(clickthrough_rate = clicked_sessions/total_sessions)

ggplot(data = sessions_by_date, aes(x = session_start_date, y = clickthrough_rate, group = group, color = group)) +
        geom_line() + labs(x = "Data", y = "Taxa de Cliques") + guides(color = guide_legend("Grupos"))

Analisando o gráfico acima, é fácil ver que o grupo A possui uma taxa de cliques maior.


Quais resultados as pessoas tendem a tentar primeiro? Como isso muda no dia-a-dia?

first_search <- data %>%
                    filter(num_clicks > 0) %>%
                    group_by(session_id) %>% 
                    summarise(first_search_index = min(search_index))

ggplot(first_search , aes(x = first_search_index)) + 
                            geom_histogram() + 
                                labs(y="Frequência", x="Primeiro Clique para Buscar")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Podemos ver que o primeiro resultado é o mais clicado. No dia-a-dia, isso indica a eficiência do mecânismo de busca, afinal, na maioria das vezes os primeiros resultados correspondem ao que o usuário queria.


Qual é a nossa taxa global zero de resultados? Como isso varia entre os grupos?

empty_results_search <- data %>% 
                            filter(results == 0) %>% 
                            group_by(session_start_date) %>% 
                            summarise(num_results_empty = n())

global_results <- data %>%
                    group_by(session_start_date) %>%
                    summarise(total_results = n())

zero_global_result_rate <- empty_results_search %>%
                            inner_join(global_results, by=c("session_start_date")) %>%
                            mutate(zero_results_rate = num_results_empty/total_results)


ggplot(data=zero_global_result_rate, aes(x=session_start_date, y=zero_results_rate)) + 
        geom_line() + 
        labs(x="Data", y="Taxa de Resultado Vazio")

Vemos que a taxa dispara na proximidade do dia 8 de Março.

group_results <- data %>%
                    group_by(session_start_date, group) %>%
                    summarise(total_results = n())

zero_group_result_rate <- empty_results_search %>%
                            inner_join(group_results, by=c("session_start_date")) %>%
                            mutate(zero_results_rate = num_results_empty/total_results)


ggplot(data=zero_group_result_rate, aes(x=session_start_date, y=zero_results_rate, group=group, color=group)) + 
        geom_line() + 
        labs(x="Data", y="Taxa de Resultado Vazio")

Analisando o gráfico que discrimina grupo, vemos que o grupo B teve uma taxa de resultados vazios maior do que no grupo A no dia 6.


A duração da sessão é aproximadamente o tempo entre o primeiro e o último evento de uma sessão. Escolha uma variável do conjunto de dados e descreva sua relação com o tamanho da sessão. Visualize o relacionamento