Q1 - Qual a diferença entre as mensalidades médias e medianas dos cursos de Ciência da Computação do Nordeste e Sudeste? Na sua opnião, essa diferença é estatisticamente significativa? Justifique.
# lista de estados do Nordeste
nordeste <- c("AL", "BA", "CE", "MA", "PB", "PE", "PI", "RN", "SE")
# lista de estados do Sudeste
sudeste <- c("ES", "MG", "RJ", "SP")
# filtrando os dados apenas para os cursos de Ciência da Computação
dados_cc <- dff[dff$curso_busca == "Ciências da Computação", ]
# criar novas colunas para mensalidade média e mediana para cada região
dados_cc$regiao <- ifelse(dados_cc$uf_busca %in% c("PE", "CE", "RN", "PB", "SE", "AL", "BA", "MA", "PI"), "Nordeste", "Sudeste")
media_mensalidade <- tapply(dados_cc$mensalidade, dados_cc$regiao, mean)
mediana_mensalidade <- tapply(dados_cc$mensalidade, dados_cc$regiao, median)
media_resumo <- data.frame(regiao = names(media_mensalidade), media_mensalidade)
mediana_resumo <- data.frame(regiao = names(mediana_mensalidade), mediana_mensalidade)
dados_cc <- merge(dados_cc, media_resumo, by = "regiao")
dados_cc <- merge(dados_cc, mediana_resumo, by = "regiao")
# gráfico de caixa
boxplot(mensalidade ~ regiao, data = dados_cc,
main = "Mensalidade média e mediana para Ciência da Computação",
ylab = "Mensalidade", xlab = "Região")
# gráfico de densidade
library(ggplot2)
ggplot(dados_cc, aes(x = mensalidade, fill = regiao)) +
geom_density(alpha = 0.5) +
xlab("Mensalidade") +
ylab("Densidade") +
ggtitle("Densidade de mensalidades para Ciência da Computação") +
theme(plot.title = element_text(hjust = 0.5))
Acredito que não seja signficativa, uma vez que a diferença não é
grande.Aonde apresentam numeros que não distoam um do outro.Analisando a
mediana gerada por ambas as regiões pode se analisar que existe uma
diferença de, no maximo, 100 reais entre as mensalidades.
dp <- dff %>%
group_by(curso_busca) %>%
summarise(mens_media = mean(mensalidade),
mens_max = max(mensalidade),
mens_median = median(mensalidade))
dp
## # A tibble: 296 × 4
## curso_busca mens_media mens_max mens_median
## <chr> <dbl> <dbl> <dbl>
## 1 Administração 543. 6553. 394.
## 2 Administração Pública 390. 870. 311
## 3 Administração de Empresas 919 919 919
## 4 Administração de Recursos Humanos 469. 579 436
## 5 Agroindústria 651. 651. 651.
## 6 Agronegócio 385. 1113. 319
## 7 Agronomia 1304. 2166. 1228
## 8 Agropecuária 1000. 1000. 1000.
## 9 Alimentos 684. 966. 595
## 10 Análise e Desenvolvimento de Sistemas 401. 2520 299
## # ℹ 286 more rows
Q2 - Quais são os top 10 cursos com maior valor de mensalidade pelo total de bolsas (diferentes tipos)? Existe uma relação entre o valor total de mensalidade e o total de bolsas por curso? Justifique.
library(dplyr)
# criar uma nova coluna com o valor líquido da mensalidade
dff$mensalidade_liquida <- dff$mensalidade * (1 - (dff$bolsa_integral_cotas + dff$bolsa_integral_ampla) / 100)
# agrupar dados por curso e calcular a média de mensalidade líquida por curso
dados_agrupados <- dff %>%
group_by(curso_busca) %>%
summarise(media_mensalidade = mean(mensalidade_liquida, na.rm = TRUE))
# ordenar dados pela média de mensalidade em ordem decrescente e selecionar os 10 cursos com maior média
top_10_cursos <- dados_agrupados %>%
arrange(desc(media_mensalidade)) %>%
head(10)
# imprimir tabela com os top 10 cursos com a maior média de mensalidade considerando diferentes tipos de bolsas
top_10_cursos
## # A tibble: 10 × 2
## curso_busca media_mensalidade
## <chr> <dbl>
## 1 Medicina 6566.
## 2 Engenharia de Materiais e Nanotecnologia 4026.
## 3 Sistemas Biomédicos 3352.
## 4 Desenho Industrial 3224.
## 5 Artes Cênicas 3055.
## 6 Comunicação Social - Cinema 2710.
## 7 Comunicação e Multimeios 2482.
## 8 Música - Composição 2189.
## 9 Odontologia 2178.
## 10 Design de Games 2136.
Analisando as bolsas de maior valor, vemos que o top 10 apresenta um padrão da presença de medicina, porém sem nenhuma por parte do numero de bolsas
dados_resumidos <- dff %>%
group_by(curso_id, curso_busca) %>%
summarise(total_mensalidade = sum(mensalidade),
total_bolsas = sum(bolsa_integral_cotas + bolsa_integral_ampla + bolsa_parcial_cotas + bolsa_parcial_ampla, na.rm = T))
## `summarise()` has grouped output by 'curso_id'. You can override using the
## `.groups` argument.
# Calcular a relação entre o valor total de mensalidade e o total de bolsas por curso
correlacao <- cor(dados_resumidos$total_mensalidade, dados_resumidos$total_bolsas)
# Imprimir a correlação entre o valor total de mensalidade e o total de bolsas por curso
correlacao
## [1] 0.06602413
Ao tentar fazer uma analise de correlação podemos ver que é uma correlação baixa ficando fora da primeira casa. Confirmando assim a inexistencia de relação entre numero de bolsas e valor da mensalidade.
# agrupando por curso e calculando o total de bolsas
df_bolsas <- dff %>%
group_by(curso_busca) %>%
summarize(total_bolsas = sum(bolsa_integral_cotas) + sum(bolsa_integral_ampla) + sum(bolsa_parcial_cotas) + sum(bolsa_parcial_ampla))
# ordenando de forma decrescente pelo valor da mensalidade
df_top10 <- dff %>%
mutate(total_bolsas = df_bolsas$total_bolsas[match(curso_busca, df_bolsas$curso_busca)]) %>%
arrange(desc(mensalidade)) %>%
filter(!is.na(total_bolsas)) %>%
distinct(curso_busca, .keep_all = TRUE) %>%
top_n(10)
## Selecting by total_bolsas
# plotando o gráfico
ggplot(df_top10, aes(x = reorder(curso_busca, -mensalidade), y = mensalidade, fill = as.factor(total_bolsas))) +
geom_col() +
scale_fill_discrete(name = "Total de bolsas") +
labs(x = "Curso", y = "Mensalidade", title = "Top 10 cursos com maior valor de mensalidade pelo total de bolsas") +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))
Q3 - Quais são os cursos tecnológicos da Paraíba que oferecem mais bolsas de estudo e quantas bolsas de cada tipo estes cursos oferecem?
library(dplyr)
library(ggplot2)
library(tidyr)
# Filtrar para cursos tecnológicos da Paraíba
cursos_tec <- dff %>%
filter(uf_busca == "PB", grepl("tecnológico", grau, ignore.case = TRUE))
# agrupando por curso e somando as bolsas
cursos_tec_bolsas <- cursos_tec %>%
group_by(curso_busca) %>%
summarise_at(vars(starts_with("bolsa")), sum, na.rm = TRUE)
# ordenando de forma decrescente pelo total de bolsas
cursos_tec_bolsas <- cursos_tec_bolsas %>%
arrange(desc(bolsa_integral_cotas + bolsa_integral_ampla + bolsa_parcial_cotas + bolsa_parcial_ampla)) %>%
head(5)
# transformando os dados para formato longo
cursos_tec_bolsas_melt <- cursos_tec_bolsas %>%
pivot_longer(cols = starts_with("bolsa"),
names_to = "bolsa_tipo",
values_to = "quantidade_bolsas") %>%
mutate(bolsa_tipo = factor(bolsa_tipo,
levels = c("bolsa_integral_cotas",
"bolsa_integral_ampla",
"bolsa_parcial_cotas",
"bolsa_parcial_ampla")))
# criando o plot
ggplot(cursos_tec_bolsas_melt, aes(x = curso_busca, y = quantidade_bolsas, fill = bolsa_tipo)) +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_manual(values = c("#00429d", "#0072c6", "#80bfff", "#bfe6ff")) +
labs(title = "Cursos tecnológicos com mais bolsas na Paraíba",
subtitle = "Top 5",
x = "Curso",
y = "Quantidade de bolsas",
fill = "Tipo de bolsa") +
theme(plot.title = element_text(size = 18, hjust = 0.5),
plot.subtitle = element_text(size = 16, hjust = 0.5),
axis.title = element_text(size = 14),
axis.text.x = element_text(angle = 45, hjust = 1))
Podemos ver os cursos que apresentam o maior numero de bolsa e a quantidade de bolsa disponibilizada por eles, aonde analisamos a maior presença da bolsa de ampla concorrencia parcial, porém uma quase inexistencia dessa modalidade para a parte de cotas.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.1
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Filtra apenas cursos tecnológicos da Paraíba
df_paraiba <- dff %>%
filter(uf_busca == "PB", grau == "Tecnológico")
# Agrupa por curso e soma as bolsas
df_bolsas <- df_paraiba %>%
group_by(curso_busca) %>%
summarise(total_bolsas = sum(bolsa_integral_cotas, na.rm = TRUE) +
sum(bolsa_integral_ampla, na.rm = TRUE) +
sum(bolsa_parcial_cotas, na.rm = TRUE) +
sum(bolsa_parcial_ampla, na.rm = TRUE))
# Ordena pelo número de bolsas decrescente e seleciona os top 5
df_top5 <- df_bolsas %>%
top_n(5, total_bolsas) %>%
arrange(desc(total_bolsas))
# Formata os nomes dos cursos
df_top5$curso_busca <- str_to_title(str_replace_all(df_top5$curso_busca, "_", " "))
# Cria o gráfico
ggplot(df_top5, aes(x = fct_reorder(curso_busca, total_bolsas), y = total_bolsas)) +
geom_bar(stat="identity", fill="steelblue") +
xlab("Curso") +
ylab("Total de Bolsas") +
ggtitle("Top 5 cursos tecnológicos da Paraíba com mais bolsas de estudo") +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5))
Q4 - Considerando os cursos de Ciência da Computação, Engenharia da Computação e Sistemas de Informação, qual o percentual de bolsas ofertadas para cada modalidade (a distância, integral, noturno, etc.) por cada um dos cursos? Existe uma modalidade que é predominante?
library(ggplot2)
library(dplyr)
library(tidyr)
# Selecionando apenas as colunas necessárias e os cursos desejados
df_ccomp <- dff %>%
filter(str_detect(tolower(curso_busca), "ciência da computação") |
str_detect(tolower(curso_busca), "engenharia da computação") |
str_detect(tolower(curso_busca), "sistemas de informação")) %>%
select(curso_busca, turno) %>%
na.omit()
# Agrupando os dados por curso e tipo de bolsa e calculando o total
df_ccomp_total <- df_ccomp %>%
group_by(curso_busca, turno) %>%
summarise(total = n()) %>%
ungroup()
## `summarise()` has grouped output by 'curso_busca'. You can override using the
## `.groups` argument.
# Calculando o percentual de bolsas por tipo em cada curso
df_ccomp_percent <- df_ccomp_total %>%
group_by(curso_busca) %>%
mutate(percentual = round(total / sum(total) * 100, 2)) %>%
ungroup()
# Ordenando as modalidades por ordem crescente de percentual para cada curso
df_ccomp_percent <- df_ccomp_percent %>%
mutate(turno = factor(turno, levels = unique(turno)[order(percentual)]))
# Criando o gráfico
ggplot(df_ccomp_percent, aes(x = turno, y = percentual, fill = curso_busca)) +
geom_bar(stat = "identity", position = "dodge") +
labs(x = "Tipo de bolsa", y = "Percentual de bolsas (%)",
title = "Percentual de bolsas por tipo em cursos de TI") +
theme_bw() +
theme(plot.title = element_text(hjust = 0.5),
legend.position = "bottom",
axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.major.y = element_line(color = "gray", linetype = "dashed"),
panel.grid.minor.y = element_blank())
Analisando o percentual podemos ver uma grande descrepancia entre as modalidadaes, onde a modalidade noturna sai a frente de todas as outras e a vespertina quase não existe.