Com base no arquivo de dados (no diretório data) responda as questões abaixo, gerando um relatório final com as respostas. Cada resposta deve gerar tabelas e/ou gráficos para apresentar os resultados obtidos, além de uma justificativa para a escolha de métricas, estatísticas e visualizações. Vocês podem se basear no arquivo R Markdown gerado em sala (no diretório reports). O relatório final deve ser adicionado ao repositório do seu lab (por exemplo, um arquivo PDF).
library(readr)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ purrr 1.0.1
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ── 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
dff <- read_csv("data/cursos-prouni.csv")
## Rows: 41447 Columns: 20
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (9): grau, turno, curso_busca, cidade_busca, uf_busca, cidade_filtro, u...
## dbl (11): mensalidade, bolsa_integral_cotas, bolsa_integral_ampla, bolsa_par...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
calculate_cs_fees_by_region <- function(df, states) {
cs_df <- subset(df, nome == "Ciência da Computação" & uf_busca %in% states)
avg_tuition <- mean(cs_df$mensalidade)
median_tuition <- median(cs_df$mensalidade)
return(list(avg_tuition = avg_tuition, median_tuition = median_tuition))
}
calculate_ratio_by_name <- function(df) {
summary_stats <- aggregate(cbind(mensalidade, bolsa_integral_cotas, bolsa_integral_ampla, bolsa_parcial_cotas, bolsa_parcial_ampla) ~ nome, data = df, FUN = sum)
summary_stats$tuition_ratio <- summary_stats$mensalidade / (summary_stats$bolsa_integral_cotas + summary_stats$bolsa_integral_ampla + summary_stats$bolsa_parcial_cotas + summary_stats$bolsa_parcial_ampla)
summary_stats <- summary_stats[, c("nome", "mensalidade", "tuition_ratio")]
summary_stats <- summary_stats[order(summary_stats$mensalidade, decreasing = TRUE), ]
summary_stats <- head(summary_stats, 10)
return(summary_stats)
}
calculate_totals_by_name <- function(df) {
subset_df <- subset(df, uf_busca == "PB" & grau == "Tecnológico")
subset_df[is.na(subset_df)] = 0
summary_stats <- aggregate(cbind(bolsa_integral_cotas, bolsa_integral_ampla, bolsa_parcial_cotas, bolsa_parcial_ampla) ~ nome, data = subset_df, FUN = sum)
summary_stats$total <- summary_stats$bolsa_integral_cotas + summary_stats$bolsa_integral_ampla + summary_stats$bolsa_parcial_cotas + summary_stats$bolsa_parcial_ampla
summary_stats <- summary_stats[order(summary_stats$total, decreasing = TRUE), ]
return(summary_stats[, c("nome", "bolsa_integral_cotas", "bolsa_integral_ampla", "bolsa_parcial_cotas", "bolsa_parcial_ampla", "total")])
}
calculate_totals_by_course <- function(df) {
subset_df <- subset(df, nome %in% c("Ciência da Computação", "Engenharia da Computação", "Sistemas de Informação"))
subset_df[is.na(subset_df)] = 0
summarized_data <- subset_df %>%
group_by(nome, turno) %>%
summarise(b1_sum = sum(bolsa_integral_cotas), b2_sum = sum(bolsa_integral_ampla), b3_sum = sum(bolsa_parcial_cotas), b4_sum = sum(bolsa_parcial_ampla))
summarized_data$total <- summarized_data$b1_sum + summarized_data$b2_sum + summarized_data$b3_sum + summarized_data$b4_sum
grouped_data <- summarized_data %>%
group_by(nome) %>%
summarise(total_sum = sum(total))
matutino <- subset(summarized_data, turno == "Matutino")
matutino$total <- matutino$b1_sum + matutino$b2_sum + matutino$b3_sum + matutino$b4_sum
grouped_matutino <- matutino %>%
group_by(nome) %>%
summarise(total_sum_matutino = sum(total))
merged_data <- merge(x = grouped_data, y = grouped_matutino, by = "nome", all.x = TRUE)
integral <- subset(summarized_data, turno == "Integral")
integral$total <- integral$b1_sum + integral$b2_sum + integral$b3_sum + integral$b4_sum
grouped_integral <- integral %>%
group_by(nome) %>%
summarise(total_sum_integral = sum(total))
merged_data <- merge(x = merged_data, y = grouped_integral, by = "nome", all.x = TRUE)
noturno <- subset(summarized_data, turno == "Noturno")
noturno$total <- noturno$b1_sum + noturno$b2_sum + noturno$b3_sum + noturno$b4_sum
grouped_noturno <- noturno %>%
group_by(nome) %>%
summarise(total_sum_noturno = sum(total))
merged_data <- merge(x = merged_data, y = grouped_noturno, by = "nome", all.x = TRUE)
ead <- subset(summarized_data, turno == "Curso a Distância")
ead$total <- ead$b1_sum + ead$b2_sum + ead$b3_sum + ead$b4_sum
grouped_ead <- ead %>%
group_by(nome) %>%
summarise(total_sum_ead = sum(total))
merged_data <- merge(x = merged_data, y = grouped_ead, by = "nome", all.x = TRUE)
vespertino <- subset(summarized_data, turno == "Vespertino")
vespertino$total <- vespertino$b1_sum + vespertino$b2_sum + vespertino$b3_sum + vespertino$b4_sum
grouped_vespertino <- vespertino %>%
group_by(nome) %>%
summarise(total_sum_vespertino = sum(total))
merged_data <- merge(x = merged_data, y = grouped_vespertino, by = "nome", all.x = TRUE)
merged_data[is.na(merged_data)] = 0
merged_data$total_percent_matutino <- 100 * (merged_data$total_sum_matutino/merged_data$total_sum)
merged_data$total_percent_integral <- 100 * (merged_data$total_sum_integral/merged_data$total_sum)
merged_data$total_percent_noturno <- 100 * (merged_data$total_sum_noturno/merged_data$total_sum)
merged_data$total_percent_ead <- 100 * (merged_data$total_sum_ead/merged_data$total_sum)
merged_data$total_percent_vespertino <- 100 * (merged_data$total_sum_vespertino/merged_data$total_sum)
return(merged_data)
}
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.
Resultados do sudeste:
results_southeast <- calculate_cs_fees_by_region(dff, c("SP", "RJ", "ES", "MG"))
print(results_southeast)
## $avg_tuition
## [1] 899.0594
##
## $median_tuition
## [1] 779
Resultados do nordeste:
results_northeast <- calculate_cs_fees_by_region(dff, c("PB", "PE", "PI", "RN", "BA", "CE", "MA", "SE", "AL"))
print(results_northeast)
## $avg_tuition
## [1] 712.7342
##
## $median_tuition
## [1] 742.8
Na minha opinião, as diferenças entre as médias é relativamente significativa, porém entre as medianas nem tanto. Isso leva a enteder que existem mensalidades no Sudeste que tendem a elevar a média, já que as medianas são próximas.
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.
results <- calculate_ratio_by_name(dff)
print(results)
## nome mensalidade tuition_ratio
## 35 Direito 179997.41 60.34107
## 43 Engenharia Civil 137257.84 84.00113
## 1 Administração 134105.25 42.30450
## 95 Medicina 126170.32 606.58808
## 103 Pedagogia 115562.89 19.73410
## 7 Arquitetura e Urbanismo 100506.34 89.49808
## 38 Enfermagem 96433.81 55.23128
## 101 Odontologia 92985.88 167.84455
## 112 Psicologia 87825.22 58.12390
## 36 Educação Física 83388.46 44.71231
Na minha opinião, não existe. Visto que não há um padrão entre os valores de mensalidade e a relação reais/bolsa_ofertada.
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?
results_by_name <- calculate_totals_by_name(dff)
print(results_by_name)
## nome bolsa_integral_cotas
## 18 Gestão de Recursos Humanos 31
## 33 Segurança no Trabalho 11
## 31 Redes de Computadores 16
## 16 Gestão da Tecnologia da Informação 12
## 27 Negócios Imobiliários 6
## 25 Logística 9
## 5 Design de Interiores 13
## 30 Radiologia 12
## 13 Gestão Comercial 14
## 26 Marketing 15
## 11 Gastronomia 13
## 21 Gestão Financeira 14
## 1 Análise e Desenvolvimento de Sistemas 12
## 9 Estética e Cosmética 7
## 23 Gestão Pública 9
## 4 Construção de Edifícios 3
## 34 Sistemas para Internet 6
## 7 Design Gráfico 4
## 12 Gestão Ambiental 4
## 6 Design de Moda 4
## 22 Gestão Hospitalar 2
## 28 Processos Gerenciais 1
## 29 Produção Publicitária 2
## 32 Secretariado 1
## 10 Eventos 2
## 14 Gestão da Produção Industrial 1
## 24 Jogos Digitais 2
## 3 Comércio Exterior 0
## 8 Embelezamento e Imagem Pessoal 1
## 17 Gestão de Empreendimentos Esportivos 1
## 2 Banco de Dados 0
## 15 Gestão da Qualidade 0
## 19 Gestão de Serviços Jurídicos e Notariais 1
## 20 Gestão do Agronegócio 0
## bolsa_integral_ampla bolsa_parcial_cotas bolsa_parcial_ampla total
## 18 20 3 70 124
## 33 7 1 91 110
## 31 10 0 80 106
## 16 6 1 80 99
## 27 4 0 85 95
## 25 3 1 67 80
## 5 10 0 30 53
## 30 30 1 10 53
## 13 5 5 3 27
## 26 8 4 0 27
## 11 10 1 0 24
## 21 6 2 0 22
## 1 5 2 0 19
## 9 6 0 6 19
## 23 3 2 0 14
## 4 1 3 2 9
## 34 3 0 0 9
## 7 2 0 0 6
## 12 1 1 0 6
## 6 1 0 0 5
## 22 1 1 0 4
## 28 0 2 1 4
## 29 2 0 0 4
## 32 0 3 0 4
## 10 1 0 0 3
## 14 0 1 1 3
## 24 1 0 0 3
## 3 0 2 0 2
## 8 1 0 0 2
## 17 1 0 0 2
## 2 0 1 0 1
## 15 0 1 0 1
## 19 0 0 0 1
## 20 0 1 0 1
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?
results_by_modality <- calculate_totals_by_course(dff)
## `summarise()` has grouped output by 'nome'. You can override using the
## `.groups` argument.
print(results_by_modality)
## nome total_sum total_sum_matutino total_sum_integral
## 1 Ciência da Computação 1590 384 20
## 2 Engenharia da Computação 121 19 22
## 3 Sistemas de Informação 1925 260 0
## total_sum_noturno total_sum_ead total_sum_vespertino total_percent_matutino
## 1 1169 0 17 24.15094
## 2 80 0 0 15.70248
## 3 1514 95 56 13.50649
## total_percent_integral total_percent_noturno total_percent_ead
## 1 1.257862 73.52201 0.000000
## 2 18.181818 66.11570 0.000000
## 3 0.000000 78.64935 4.935065
## total_percent_vespertino
## 1 1.069182
## 2 0.000000
## 3 2.909091
Pelos dados apresentados, há uma maior concentração de bolsa ofertadas na modalidade Norturno.