Esta análise foi feita com base em dados que trazem a contagem de quantas pessoas que editaram arquivos com diferentes extensões em cada dia dos anos de 2016 e 2017 no GitHub, escolhendo duas linguagens de programação: java e javascript.

Os dados trazem as seguintes colunas: file_extension: Extensão do arquivo, por onde veremos qual foi a linguagem de programação utilizada, month_day: Dia do mês, the_month: Mês do ano, the_year: Ano, users: Quantidade de usuários.

Aos dados originais foram acrescentadas as colunas date(data), week_day(dia da semana), weekend(se é fim de semana) e month(que é a abreviação do mês correspondente).

github = read_csv("https://raw.githubusercontent.com/nazareno/fpcc2/master/datasets/github-users-committing-filetypes.csv")

github = github %>%
  mutate(
    date = as.Date(paste(the_year, the_month, month_day, sep='-'), format = "%Y-%m-%d"), 
    week_day = wday(date), 
    weekend = isWeekend(date), 
    month = as.character(month(ymd(010101)+months(the_month-1), label=TRUE, abbr=TRUE)))

Para cada uma delas, há uma diferença significativa na sua popularidade durante a semana e durante o fim de semana? Essa diferença é grande?

Aqui a estatística adotada para medir popularidade foi a mediana, por esta não ser afetada por valores extremos como a média.

java <- github %>% filter(file_extension == 'java')

java %>% 
  group_by(weekend) %>%
  ggplot(aes(x = weekend, 
             y = users)) + 
  geom_boxplot(width = .5, outlier.colour = "red", outlier.shape = 1, outlier.size = 2) +
  ggtitle("Popularidade java") + 
  labs(x = "É final de semana?", y = "Quantidade de Usuários")

Com a mediana obtida no boxplot acima, vemos que a linguagem Java é mais popular nos dias de semana do que nos finais de semana. Podemos confirmar esse fato no gráfico que segue:

java_weekend = java %>% 
  filter(weekend) %>% 
  bootstrap(median(users), 
            R = 2000) %>% 
    CI.percentile(probs = c(.025, .975))

java_week = java %>% 
  filter(!weekend) %>% 
  bootstrap(median(users), 
            R = 2000) %>% 
    CI.percentile(probs = c(.025, .975))

df_java = data.frame(rbind(java_weekend, java_week))

df_java$medida = c("Final de semana", "Dia de semana")

df_java %>% 
  ggplot(aes(x = medida, ymin = X2.5., ymax = X97.5.)) + 
  geom_errorbar(width = .2) +
  labs(x = "")

Assim como aconteceu com Java, vemos que Javscript também é mais popular aos fins de semana.

js <- github %>% filter(file_extension == 'js')

js %>% 
  group_by(weekend) %>%
  ggplot(aes(x = weekend, 
             y = users)) + 
  geom_boxplot(width = .5, outlier.colour = "red", outlier.shape = 1, outlier.size = 2) +
  ggtitle("Popularidade Javascript") + 
  labs(x = "É final de semana?", y = "Quantidade de Usuários")

Como os traços do gráfico abaixo não ocupam uma mesma faixa de valores, podemos afirmar que Javascript é mais popular durante a semana.

js_weekend = js %>% 
  filter(weekend) %>% 
  bootstrap(median(users), 
            R = 2000) %>% 
    CI.percentile(probs = c(.025, .975))

js_week = js %>% 
  filter(!weekend) %>% 
  bootstrap(median(users), 
            R = 2000) %>% 
    CI.percentile(probs = c(.025, .975))

df_js = data.frame(rbind(js_weekend, js_week))

df_js$medidajs = c("Final de semana", "Dia de semana")

df_js %>% 
  ggplot(aes(x = medidajs, ymin = X2.5., ymax = X97.5.)) + 
  geom_errorbar(width = .2) +
  labs(x = "")

Existe uma diferença significativa entre a popularidade das duas linguagens nos fins de semana?

Sim, como vemos no gráfico abaixo, Javascript é mais popular do que Java nos finais de semana.

l1 = java %>% 
  filter(weekend) %>%
  bootstrap(median(users))

median_java = l1 %>% 
  CI.percentile(probs = c(.025, .975))

l2 = js %>% 
  filter(weekend) %>%
  bootstrap(median(users))

median_js = l2 %>% 
  CI.percentile(probs = c(.025, .975))

df.median = data.frame(rbind(median_java, 
                             median_js))

df.median$medida = c("Java", "Javascript")

df.median %>% 
  ggplot(aes(x = medida, ymin = X2.5., ymax = X97.5.)) + 
  geom_errorbar(width = .2)