O objeto principal da análise são as buscas e a navegação depois da busca. Criamos esses dados a partir dos dados originais da wikimedia em /data/search_data.csv.
Aqui, exploramos esses dados.
library(tidyverse)
## -- Attaching packages ------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.1.1 v purrr 0.3.2
## v tibble 2.1.1 v dplyr 0.8.0.1
## v tidyr 0.8.3 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## -- Conflicts ---------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(here)
## here() starts at C:/Users/asana/Workspace/l1p2-amslv
library(lubridate)
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:here':
##
## here
## The following object is masked from 'package:base':
##
## date
library(tidyr)
library(dplyr)
theme_set(theme_bw())
buscas = read_csv(here::here("data/search_data.csv"))
## Parsed with column specification:
## cols(
## session_id = col_character(),
## search_index = col_double(),
## session_length = col_double(),
## session_start_timestamp = col_double(),
## session_start_date = col_datetime(format = ""),
## group = col_character(),
## results = col_double(),
## num_clicks = col_double(),
## first_click = col_double()
## )
search_date <- buscas %>%
mutate(d_busca = format(session_start_date, "%Y-%m-%d"))
count_clicks_filter <- buscas %>%
group_by(first_click) %>%
summarise(count_clicks = n()) %>%
arrange(desc(count_clicks)) %>%
top_n(20)
## Selecting by count_clicks
zero_results_found <- search_date %>%
group_by(d_busca) %>%
mutate(d_zero = unique(d_busca)) %>%
count(results == 0)
Ao analisar o gráfico abaixo é possível verificar que a quantidade de cliques diários oscila entre 10 e 20. Também é possível verificar que a maioria dos usuários é do grupo A, justificando assim a maior quantidade de cliques registrados por usuários deste grupo.
search_date %>%
filter(num_clicks > 0) %>%
ggplot(aes(x = num_clicks, y = d_busca)) +
geom_jitter(aes(color = group)) +
labs(x="Search date", y="Number of clicks")
Para essa análise foi selecionado o top 20 com relação a quantidade de clicks até o usuário encontrar o resultado esperado. Ao analisar o gráfico é possível verificar que em 90% dos casos, o usuário encontrou o resultado antes dos 2.500 clicks.
No dia a dia, fica nítido que a maioria dos cliques por parte do usuário estão concentrados entre o primeiro e o quinto resultado.
count_clicks_filter %>%
filter(first_click != "NA") %>%
ggplot(aes(x = first_click, y = count_clicks)) +
geom_point() +
labs(y="Number of clicks", x="Result position")
search_date %>%
filter (first_click < 25) %>%
ggplot(aes(y = first_click, x = format(session_start_date, "%Y-%m-%d"))) +
geom_jitter() +
labs(
x = "Search date",
y = "First click position")
Ao analisar o gráfico de buscas com zero resultados é possível visualizar que, em sua maioria, a quantidade de buscas zeradas oscila entre 3000 e 3600 por dia.
Ao visualizar esse mesmo dado, mas pela perspectiva dos grupos, fica nítido que o grupo A se deparou com uma quantidade maior de buscas zeradas.
zero_results_found %>%
filter(`results == 0`) %>%
ggplot(aes(x = d_busca, y = n)) +
labs(x = "Search Date", y = "Count of zero results") +
coord_flip() +
theme(legend.position = "none") +
geom_jitter()
search_date %>%
filter(!is.na(results) & results == 0) %>%
ggplot(aes(x = group, fill=group)) +
geom_bar() +
theme(legend.position = "none") +
labs(
y = "Zero results searchs",
x = "Group")
Neste caso, tentamos verificar se existe uma relação entre o tamanho da sessão e a quantidade de cliques efetuados pelo usuário. Ao visualizar o gráfico, é possível inferir que, independentemente do tempo da sessão, a quantidade de cliques, majoritariamente, oscila entre 0 2.
buscas %>%
filter(session_length > 0) %>%
filter(session_length < 1000) %>%
top_n(100) %>%
ggplot(aes(x = num_clicks, y = session_length)) +
coord_flip() +
geom_jitter()
## Selecting by first_click