library(dplyr)
library(readr)
library(here)
library(ggplot2)
library(hrbrthemes)
library(ggchicklet)
library(kableExtra)
theme_set(theme_ipsum_ps())Neste relatório serão respondidas algumas perguntas sobre os alunos matriculos na disciplina de Fundamentos de Pesquisa em Ciência da Computação, do PPGCC-UFCG. Os dados utilizados foram colhidos através de formulário e são referentes às respostas desses alunos.
dados <- read_csv(here("data/dados-fpcc2.csv"))
colnames(dados) <- c("data", "idade", "sexo",
"curso", "area", "interesse",
"progr", "origem", "estado",
"irmaos", "altura")
dados <- dados %>%
mutate(estado = case_when(
estado == "Paraíba" ~ "PB",
estado == "Ceará" ~ "CE",
estado == "Santa Catarina" ~ "SC",
TRUE ~ estado
))media_idade <- dados %>% pull(idade) %>% mean()
desvio_idade <- dados %>% pull(idade) %>% sd()
media_interesse <- dados %>% pull(interesse) %>% mean()
desvio_interesse <- dados %>% pull(interesse) %>% sd()
metricas_df <- tibble(metrica = c("média", "desvio padrão",
"média", "desvio padrão"),
variavel = c("idade", "idade",
"interesse", "interesse"),
valores = c(media_idade, desvio_idade,
media_interesse, desvio_interesse)) %>%
group_by(variavel) %>%
arrange(valores)
metricas_df %>%
select(`Métrica` = metrica,
`Varíável` = variavel,
`Valor` = valores) %>%
kable(align = "c") %>%
kable_styling(bootstrap_options = c("striped", "hover", "responsive"))| Métrica | Varíável | Valor |
|---|---|---|
| desvio padrão | interesse | 0.3844259 |
| média | interesse | 2.8275862 |
| desvio padrão | idade | 4.9524836 |
| média | idade | 25.7931034 |
A média de idade geral é de 25.79 com desvio padrão de 4.95. Já para o nível de interesse, o valor da média é 2.83 com desvio padrão de 0.38. Esses resultados mostram que, no geral, a turma possui alunos com uma média de idade de aproximadamente 26 anos com alto nível de interesse no curso.
media_idade_cursos <- dados %>%
group_by(curso) %>%
summarise(media_idade = mean(idade)) %>%
arrange(-media_idade)
media_idade_cursos %>%
select(`Curso` = curso,
`Idade (média)` = media_idade) %>%
kable(align = "c") %>%
kable_styling(bootstrap_options = c("striped", "hover", "responsive"))| Curso | Idade (média) |
|---|---|
| Aluno especial | 36.33333 |
| Doutorado | 30.25000 |
| Mestrado | 23.54545 |
A maior média de idade é a dos alunos especiais, com valor 36.33. Contudo, há uma diferença entre a quantidade de alunos por curso. Vejamos a distribuição de suas idades.
medias = data.frame(curso = c("Aluno especial", "Doutorado", "Mestrado"),
medias = c(media_idade_cursos[[2]][1],
media_idade_cursos[[2]][2],
media_idade_cursos[[2]][3]))
dados %>%
ggplot(aes(x = "",
y = idade)) +
geom_jitter(width = .35,
colour = "#333333") +
facet_grid(~ curso) +
geom_hline(aes(yintercept = medias),
medias,
colour = "red",
linetype = 2) +
labs(subtitle = "Distribuição das idades dos alunos por curso.",
x = "Curso",
y = "Idade") +
scale_y_continuous(breaks = seq(20, 40, 5),
limits = c(20, 40)) +
ggsave(here("data/distribuicao_idade.png"))No gráfico acima, cada ponto representa um aluno, e a linha vermelha tracejada a média de idade para aquele curso. A partir dele, observamos que a média para os alunos especiais foi calculada com base nas 3 observações existentes. Como a diferença entre esses valores não é tão grande, a média representa bem a idade desses alunos especiais.
media_idade_cursos %>%
ggplot(aes(x = reorder(curso, media_idade),
y = media_idade,
label = round(media_idade, 2))) +
geom_chicklet(width = 0.5,
fill = "royalblue4") +
geom_text(nudge_y = 1.5,
colour = "#555555") +
labs(title = "Idade média para cada curso.",
x = NULL,
y = "Idade") +
guides(fill=FALSE) +
ggsave(here("data/media_idade.png"))A maior média de idade pertence aos alunos especiais, e a menor aos alunos do mestrado. A diferença de idade entre os alunos desses cursos, de forma geral, é de aproximadamente 13 anos.
total <- dados %>% NROW()
alunos_estado <- dados %>%
count(estado) %>%
mutate(porcentagem = n / total)
alunos_estado %>%
ggplot(aes(x = reorder(estado, porcentagem),
y = porcentagem,
label = paste0(round(porcentagem * 100, 2), "%"))) +
geom_chicklet(width = 0.75,
fill = "royalblue4") +
geom_text(nudge_y = 0.03,
colour = "#333333") +
labs(title = "Percentual de alunos por estado.",
x = "Estado",
y = "Percentual") +
scale_y_continuous(labels = scales::percent) +
ggsave(here("data/alunos_estado.png"))O estado com maior percentual de alunos é a Paraíba, seguido pelos estados de São Paulo e Bahia. Além da Paraíba, existem alunos de outros cinco estados no Nordeste.
top_5 <- dados %>%
arrange(-idade) %>%
slice(1:5) %>%
pull(idade) %>%
mean()
bottom_5 <- dados %>%
arrange(idade) %>%
slice(1:5) %>%
pull(idade) %>%
mean()
df_medias <- tibble(media = c("Geral", "Top-5", "Bottom-5"),
valor = c(media_idade, top_5, bottom_5))
df_medias %>%
select(`Média` = media,
`Valor` = valor) %>%
kable(align = "c") %>%
kable_styling(bootstrap_options = c("striped", "hover", "responsive"))| Média | Valor |
|---|---|
| Geral | 25.7931 |
| Top-5 | 35.2000 |
| Bottom-5 | 21.8000 |
A média das 5 maiores idades é 35.2 e a das 5 menores é 21.8. A média das maiores idades difere em pouco mais de 10 anos da média de idade geral (25.79), e esta difere em pouco menos de 4 anos da média das menores idades.
Uma forma de verificar se existe alguma relação entre idade e nível de interesse é observar a distribuição das observações quando uma das variáveis está em função da outra.
dados %>%
ggplot(aes(x = idade,
y = as.factor(interesse),
colour = as.factor(interesse))) +
geom_jitter(width= 0.35) +
scale_x_continuous(limits = c(20, 40)) +
labs(title = "Interesse em função da idade.",
x = "Idade",
y = "Interesse",
colour = "Interesse")Pelo gráfico, podemos observar que, embora existam alunos com menos de 30 anos com interesse nível 3, não existem alunos que possuem mais que 30 anos com interesse nível 2. Portanto, com base nessas informações, pode-se dizer que sim, existe uma relação entre idade e nível de interesse.