3 Análise exploratória: inscritos no curso
library(magrittr)
library(tidyverse)
library(stringr)
library(lubridate)
library(forcats)
3.1 Objetivos
- Verificar a bagagem dos alunos.
- Verificar se há concentração de inscritos da graduação.
- Verificar se há diferenças entre a turma do CEC e do Jacy.
3.2 Base de dados
d_alunos <- read_csv('data/lista_anon.csv')
glimpse(d_alunos)
## Observations: 95
## Variables: 7
## $ Timestamp <chr> ...
## $ Universidade: <chr> ...
## $ Estou no(a): <chr> ...
## $ Curso: <chr> ...
## $ 1. Em que opção você situaria seu conhecimento em R? <chr> ...
## $ 2. Você considera ter conhecimento intermediário/avançado em quais linguagens abaixo? <chr> ...
## $ 3. Você atua no mercado de trabalho? <chr> ...
3.3 Data tidying
d_alunos %<>%
mutate(Timestamp = mdy_hms(Timestamp)) %>%
rownames_to_column('id_pessoa') %>%
mutate(cec = id_pessoa %in% as.character(1:45)) %>%
gather(pergunta, resposta, matches('^[0-9]')) %>%
renomear() %>%
spread(pergunta, resposta) %>%
mutate(uni = with(., case_when(
str_detect(universidade, re_usp) ~ 'USP',
str_detect(universidade, re_ufscar) ~ 'UFSCar',
str_detect(universidade, re_unip) ~ 'UNIP',
TRUE ~ 'Outra'
))) %>%
mutate(esc = with(., case_when(
str_detect(estou_no_a, 'raduado|formado|Mestrado|Pós') ~ 'Formado / Pós',
str_detect(estou_no_a, 'Graduação') ~ 'Graduação',
TRUE ~ 'Outra'
))) %>%
mutate(ime = str_detect(universidade, re_ime),
cec = if_else(cec, 'CEC', 'Jacy'))
3.4 Alguns gráficos
Volume de inscrições no tempo
d_alunos %>%
arrange(timestamp) %>%
mutate(um = 1, inscricoes = cumsum(um)) %>%
ggplot(aes(x = timestamp, y = inscricoes, colour = cec)) +
geom_step() +
geom_hline(yintercept = 45, colour = 'red', linetype = 2) +
scale_x_datetime(breaks = scales::date_breaks('1 day'),
labels = scales::date_format('%b %d')) +
scale_y_continuous(breaks = 0:4 * 25, limits = c(0, 100)) +
theme_bw(14) +
xlab('Data') +
ylab('Volume de inscrições')
Escolaridade dos inscritos
d_alunos %>%
replace_na(list(esc = 'Outra')) %>%
mutate(esc = fct_infreq(esc)) %>%
ggplot(aes(x = esc, fill = cec)) +
geom_bar(position = 'dodge') +
theme_bw(14) +
xlab('') +
ylab('Quantidade de inscritos')
Perguntas 1 e 3: sobre utilização do R.
d_alunos %>%
gather(questao, resposta, matches('^[13]')) %>%
replace_na(list(resposta = 'Não.')) %>%
count(cec, questao, resposta) %>%
mutate(prop = n / sum(n)) %>%
ggplot(aes(x = str_wrap(resposta, 20), fill = cec, y = prop)) +
geom_bar(position = 'dodge', stat = 'identity') +
facet_wrap(~questao, scales = 'free_x', ncol = 1) +
scale_y_continuous(labels = scales::percent) +
geom_text(aes(label = scales::percent(prop), group = cec),
position = position_dodge(.9), vjust = -.2) +
theme_bw(14) +
theme(strip.background = element_blank()) +
xlab('') +
ylab('Proporção de inscritos')
Pergunta 2: sobre conhecimento em outras linguagens. Não soma 100%!
d_alunos %>%
gather(questao, resposta, matches('^[2]')) %>%
replace_na(list(resposta = 'Nenhuma')) %>%
mutate(ling = str_split(resposta, '\\., ')) %>%
unnest(ling) %>%
mutate(ling = str_replace(ling, '\\.$', '')) %>%
group_by(cec) %>%
mutate(ntot = n_distinct(id_pessoa)) %>%
group_by(cec, ling) %>%
summarise(n = n_distinct(id_pessoa), ntot = first(ntot)) %>%
mutate(prop = n / ntot) %>%
mutate(ling = str_wrap(ling, 20) %>% fct_reorder(prop, .desc = TRUE)) %>%
ggplot(aes(x = ling, fill = cec, y = prop)) +
geom_bar(position = 'dodge', stat = 'identity') +
scale_y_continuous(labels = scales::percent, limits = c(0, .7)) +
geom_text(aes(label = scales::percent(prop), group = cec),
position = position_dodge(.9), vjust = -.2) +
theme_bw(14) +
xlab('Linguagem de programação') +
ylab('Proporção de inscritos')