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)
library(here)
library(scales)
library(lubridate)
library(ggstance)
library(broom)
library(ggpubr)
library(reshape2)
theme_set(theme_bw())
buscas = read_csv(here::here("data/search_data.csv")) %>%
mutate(session_date = stamp("1 Jan, 1999")(date(session_start_date))) %>%
rename(session_datetime = session_start_date,
session_timestamp = session_start_timestamp) %>%
mutate(session_result = ifelse(results == 0, "zero results", ifelse(num_clicks > 0, "clickthrough", "no clicks")))
A partir das informações do wikimedia-research, vemos que a empresa se interessa pelas métricas:
Podemos separar cada sessão e classificar da maneira acima: “clickthrough” e “zero results”, além de um “no clicks” que corresponde a sessões com algum resultado, mas o usuário não clicou em nenhum deles. A distribuição entre as sessões desses tipos segue abaixo.
hpRst = buscas %>% ggplot(aes(x = session_result)) +
geom_histogram(stat = "count")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
lhpRst = buscas %>% ggplot(aes(x = session_result)) +
geom_histogram(stat = "count") + scale_y_log10()
## Warning: Ignoring unknown parameters: binwidth, bins, pad
vpRst = buscas %>% ggplot(aes(y = session_datetime, x = session_result)) +
geom_point() + geom_violin(scale = "count") +
scale_y_datetime(date_labels = "%b %d %H:%M", date_breaks = "12 hour")
ggarrange(ggarrange(hpRst, lhpRst),
vpRst, ncol = 1)
Há mais sessões “clickthrough” do que “zero results”, por uma margem pequena. A grande da maioria das sessões cai no caso de “no clicks”. Se analisarmos as proporções ao longo dos dias dos dois eventos, temos:
buscasDiarias = buscas %>% group_by(session_date) %>%
summarise(clickthrough_rate = sum(session_result == "clickthrough")/n(),
zero_results_rate = sum(session_result == "zero results")/n())
lpRt = buscasDiarias %>% melt(id = "session_date") %>% ggplot(aes(x = session_date, y = value, color = variable, group = variable)) +
geom_line()
lpRt
Podemos ver que quase 1/5 das buscas, tendem a gerar 0 resultados, enquanto que em quase 1/4 das buscas o usuário clica em um dos resultados.
Observando os primeiros clicks, separei uma análise da média diária, mediana e 3º Quartil dos dados diários.
primeirosClicks = buscas %>% filter(session_result == "clickthrough") %>%
filter(!is.na(first_click)) %>%
group_by(session_date) %>%
summarise(mean_first_click = mean(first_click),
median_first_click = median(first_click),
thQ_first_click = quantile(first_click, c(0.75), type = 1))
primeirosClicks
Podemos ver que os primeiros resultados são os primeiros clicks em até 75% dos casos. A média alta em alguns dos dias comprova que há exceções com clicks distantes, aumentando a média.