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.

Inicialmente, iremos fazer a leitura do csv e, posteriormente, filtraremos apenas as linhas em que a coluna curso_busca contém a string Ciência da Computação.

library(readr)
library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
cursos_prouni_dados <- read_csv("/Users/joaosoaresalmeida/Documents/Pós Graduação/projetos/fpcc2-lab1-joaosoaresalmeidaa-main/data/cursos-prouni.csv", show_col_types = FALSE)

cursos_prouni_dados <- cursos_prouni_dados %>%
  select(curso_busca, uf_busca, grau, turno, mensalidade, bolsa_integral_cotas) %>%
  filter(grepl("Ciência da Computação", curso_busca, ignore.case = TRUE))

Nosso próximo passo consiste em pegar os dados e criarmos um resumo da mensalidade do curso de Ciência da Computação em duas regiões do Brasil: Nordeste e Sudeste, com o intuito de calcular a média e a mediana da coluna mensalidade para cada grupo.

cc_dados_regiao <- cursos_prouni_dados %>% 
  mutate(regiao = ifelse(uf_busca %in% c("PE", "BA", "CE", "AL", "MA", "PB", "RN", "SE", "PI"), "Nordeste", ifelse(uf_busca %in% c("SP", "RJ", "MG", "ES"), "Sudeste", ""))) %>% 
  filter(regiao != "")

cc_data_region_summary <- cc_dados_regiao %>% 
  group_by(regiao) %>% 
  summarize(media = mean(mensalidade, na.rm = TRUE),
            mediana = median(mensalidade, na.rm = TRUE))

nordeste_resumo <- data.frame(regiao = "Nordeste", 
                               media = mean(cc_dados_regiao$mensalidade[cc_dados_regiao$regiao == "Nordeste"], na.rm = TRUE),
                               mediana = median(cc_dados_regiao$mensalidade[cc_dados_regiao$regiao == "Nordeste"], na.rm = TRUE))


sudeste_resumo <- data.frame(regiao = "Sudeste", 
                              media = mean(cc_dados_regiao$mensalidade[cc_dados_regiao$regiao == "Sudeste"], na.rm = TRUE),
                              mediana = median(cc_dados_regiao$mensalidade[cc_dados_regiao$regiao == "Sudeste"], na.rm = TRUE))

cc_dados_regiao_resumo <- rbind(nordeste_resumo, sudeste_resumo)

cc_dados_regiao_resumo
##     regiao    media mediana
## 1 Nordeste 712.7342   742.8
## 2  Sudeste 899.0594   779.0

E por fim, vamos imprimir o gráfico para que possamos observar visualmente a nossa a análise.

library(ggplot2)

ggplot(cc_data_region_summary, aes(x = regiao, y = media, fill = "Média")) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.5), width = 0.3) +
  geom_text(aes(label = sprintf("%.2f", media), y = media + 50), vjust = -0.5, size = 3.5, position = position_dodge(width = 0.5), color = "white") +
  geom_bar(aes(x = regiao, y = mediana, fill = "Mediana"), stat = "identity", position = position_nudge(x = 0.4), width = 0.3) + 
  geom_text(aes(label = sprintf("%.2f", mediana), y = mediana + 50, x = regiao), vjust = -0.5, size = 3.5, position = position_nudge(x = 0.4), color = "white") +
  geom_text(aes(label = sprintf("%.2f", media), y = media, x = regiao), vjust = 1.5, size = 3.5, position = position_dodge(width = 0.5)) +
  geom_text(aes(label = sprintf("%.2f", mediana), y = mediana, x = regiao), vjust = 1.5, size = 3.5, position = position_nudge(x = 0.4)) +
  scale_fill_manual(name = "", values = c("Média" = "blue", "Mediana" = "orange"), 
                    guide = guide_legend(keywidth = 0.7, keyheight = 0.7, label.position = "right", title.position = "top", title.hjust = 0.5)) +
  labs(x = "", y = "Mensalidade (em reais)", 
       title = "Mensalidades do curso de Ciência da Computação",
       fill = "") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_y_continuous(name = "Valor", expand = c(0, 0), limits = c(0, 1200))

Resposta:

Com base na análise exploratória dos dados das mensalidades dos cursos de Ciência da Computação no Nordeste e Sudeste, observa-se que a média e mediana das mensalidades são maiores no Sudeste do que no Nordeste. No entanto, é importante notar que essa diferença pode não ser estatisticamente significativa, pois pode ser influenciada por valores extremos ou por diferenças na distribuição das mensalidades entre as regiões. Portanto, é necessário realizar testes estatísticos para avaliar a significância da diferença e verificar se ela não ocorreu ao acaso.


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.

Iniciamos a leitura do csv e, em seguida, é criado um novo objeto chamado cursos_prouni_data_sem_nulos, que contém apenas as linhas do conjunto de dados original que não possuem valores faltantes (N/A), utilizando a função na.omit(). Essa etapa de limpeza é importante para garantir que não haja dados ausentes no conjunto de dados analisado.

library(readr)
library(dplyr)
library(ggplot2)

cursos_prouni_dados <- read_csv("/Users/joaosoaresalmeida/Documents/Pós Graduação/projetos/fpcc2-lab1-joaosoaresalmeidaa-main/data/cursos-prouni.csv", show_col_types = FALSE)

# Remover linhas com valores N/A
cursos_prouni_data_sem_nulos <- na.omit(cursos_prouni_dados)

Logo em seguida, faremos o agrupamento dos dados da tabela pela coluna curso_busca. Em seguida, calcularemos o total de bolsas de estudos oferecidas para cada curso, levando em consideração as seguintes colunas:

  1. bolsa_integral_cotas,

  2. bolsa_integral_ampla;

  3. bolsa_parcial_cotas;

  4. bolsa_parcial_ampla.

total_bolsas <- cursos_prouni_data_sem_nulos %>% 
  group_by(curso_busca) %>% 
  summarize(total_bolsas = sum(bolsa_integral_cotas, bolsa_integral_ampla, bolsa_parcial_cotas, bolsa_parcial_ampla))

Abaixo o trecho junta os dados de total de bolsas por curso com os dados de mensalidade, calculando a mensalidade por bolsa para cada curso, e selecionando somente as colunas de curso e mensalidade por bolsa.

mensalidade_por_bolsa <- cursos_prouni_data_sem_nulos %>% 
  left_join(total_bolsas, by = "curso_busca") %>% 
  mutate(total_bolsas = replace_na(total_bolsas, 0),
         mensalidade_por_bolsa = mensalidade / total_bolsas) %>% 
  select(curso_busca, mensalidade_por_bolsa)

Em seguida é criada a tabela e então ordenada de forma decrescente de acordo com a coluna mensalidade_por_bolsa e apenas as 10 primeiras linhas são selecionadas, criando a tabela top_10_cursos.

top_10_cursos <- cursos_prouni_data_sem_nulos %>%
  group_by(curso_busca) %>%
  summarize(total_bolsas = sum(bolsa_integral_cotas, bolsa_integral_ampla, bolsa_parcial_cotas, bolsa_parcial_ampla),
            mensalidade_media = mean(mensalidade, na.rm = TRUE)) %>%
  mutate(mensalidade_por_bolsa = mensalidade_media / ifelse(is.na(total_bolsas), 0, total_bolsas)) %>%
  arrange(desc(mensalidade_por_bolsa)) %>%
  head(10)

Por fim, analisaremos a correlação entre as variáveis e imprimiremos o gráfico.

correlacao <- cor(top_10_cursos$total_bolsas, top_10_cursos$mensalidade_media)
cat("Correlação entre a mensalidade média e o total de bolsas por curso: ", correlacao, "\n")
## Correlação entre a mensalidade média e o total de bolsas por curso:  0.6528588
ggplot(top_10_cursos, aes(x = total_bolsas, y = mensalidade_media)) +
  geom_bar(stat = "identity", fill = "orange", position = position_dodge(width = 0.8)) +
  geom_point(position = position_dodge(width = 0.8)) +
  geom_text(aes(label = curso_busca), hjust = -0.1, vjust = 0.4, size = 2.5, color = "blue", position = position_dodge(width = 0.8)) +
  xlab("Total de Bolsas") + ylab("Mensalidade Média") +
  ggtitle("Top 10 cursos com a maior mensalidade por bolsa") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1),
        plot.title = element_text(hjust = 0.5))

Resposta:

É importante destacar que a correlação calculada de 0.6528588 sugere que existe uma relação moderada entre o valor total de mensalidade e o total de bolsas por curso. No entanto, é preciso lembrar que correlação não implica causalidade, ou seja, não podemos afirmar que o aumento das bolsas é a causa do aumento da mensalidade, ou vice-versa. A relação pode ser influenciada por outros fatores que não foram considerados na análise.


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?

Inicialmente, começaremos realizando a leitura dos dados e filtraremos para selecionar apenas os cursos da Paraíba com grau “Tecnológico” e atribuiremos o total de bolsas, somando todos os tipos de bolsas.

library(readr)
library(dplyr)

cursos_prouni_dados <- read_csv("/Users/joaosoaresalmeida/Documents/Pós Graduação/projetos/fpcc2-lab1-joaosoaresalmeidaa-main/data/cursos-prouni.csv", show_col_types = FALSE)

cursos_pb <- cursos_prouni_dados %>%
  filter(uf_busca == "PB", grau == "Tecnológico") %>%
  group_by(nome) %>%
  summarize(total_bolsas = sum(bolsa_integral_ampla, na.rm = TRUE) +
              sum(bolsa_parcial_cotas, na.rm = TRUE) +
              sum(bolsa_parcial_ampla, na.rm = TRUE) +
              sum(bolsa_integral_cotas, na.rm = TRUE)) %>%
  arrange(desc(total_bolsas))

Em seguida, retiraremos todos os valores ausentes.

cursos_pb_sem_na <- na.omit(cursos_pb)

Por fim, imprimeremos a tabela com o total de bolsas por curso de grau tecnológico. E em seguida imprimeremos o gráfico com as informações de bolsas por curso, como visualização alternativa.

Resposta:

print(cursos_pb_sem_na, n=34)
## # A tibble: 34 × 2
##    nome                                     total_bolsas
##    <chr>                                           <dbl>
##  1 Gestão de Recursos Humanos                        124
##  2 Segurança no Trabalho                             110
##  3 Redes de Computadores                             106
##  4 Gestão da Tecnologia da Informação                 99
##  5 Negócios Imobiliários                              95
##  6 Logística                                          80
##  7 Design de Interiores                               53
##  8 Radiologia                                         53
##  9 Gestão Comercial                                   27
## 10 Marketing                                          27
## 11 Gastronomia                                        24
## 12 Gestão Financeira                                  22
## 13 Análise e Desenvolvimento de Sistemas              19
## 14 Estética e Cosmética                               19
## 15 Gestão Pública                                     14
## 16 Construção de Edifícios                             9
## 17 Sistemas para Internet                              9
## 18 Design Gráfico                                      6
## 19 Gestão Ambiental                                    6
## 20 Design de Moda                                      5
## 21 Gestão Hospitalar                                   4
## 22 Processos Gerenciais                                4
## 23 Produção Publicitária                               4
## 24 Secretariado                                        4
## 25 Eventos                                             3
## 26 Gestão da Produção Industrial                       3
## 27 Jogos Digitais                                      3
## 28 Comércio Exterior                                   2
## 29 Embelezamento e Imagem Pessoal                      2
## 30 Gestão de Empreendimentos Esportivos                2
## 31 Banco de Dados                                      1
## 32 Gestão da Qualidade                                 1
## 33 Gestão de Serviços Jurídicos e Notariais            1
## 34 Gestão do Agronegócio                               1

A seguir exibição do gráfico

ggplot(cursos_pb_sem_na, aes(x = reorder(nome, desc(total_bolsas)), y = total_bolsas, fill = "Total de bolsas")) +
  geom_bar(stat = "identity", position = "dodge") +
  ggtitle("Cursos tecnológicos da Paraíba com mais bolsas de estudo") +
  labs(x = "Curso", y = "Número de bolsas", fill = " ") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        plot.title = element_text(hjust = 0.5)) +
  scale_fill_manual(values = c("dodgerblue", "deepskyblue"), name = "Bolsas")


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?

Inicialmente, faremos a leitura do CSV para consultar as informações contidas nele.

library(readr)
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
cursos_prouni_dados <- read_csv("/Users/joaosoaresalmeida/Documents/Pós Graduação/projetos/fpcc2-lab1-joaosoaresalmeidaa-main/data/cursos-prouni.csv", show_col_types = FALSE)

Logo em seguida, filtraremos os cursos de nosso interesse:

df_bolsas_filtrado <- cursos_prouni_dados %>%
  filter(curso_busca %in% c("Ciência da Computação", "Engenharia da Computação", "Sistemas de Informação"))

Em seguida agruparemos as bolsas por turno para cada curso

df_bolsas_totais <- df_bolsas_filtrado %>%
  group_by(curso_busca, turno) %>%
  summarise(total_bolsas = sum(bolsa_integral_cotas) + sum(bolsa_integral_ampla) + sum(bolsa_parcial_cotas) + sum(bolsa_parcial_ampla),
            bolsa_integral_cotas = sum(bolsa_integral_cotas),
            bolsa_integral_ampla = sum(bolsa_integral_ampla),
            bolsa_parcial_cotas = sum(bolsa_parcial_cotas),
            bolsa_parcial_ampla = sum(bolsa_parcial_ampla),
            .groups = "drop")

Posteriormente, abaixo calcularemos as porcentagens de bolsas integrais e parciais (de cotas e ampla concorrência) em relação ao total de bolsas por curso, agrupando-os por curso e atribuindo os resultados a uma nova variável chamada df_bolsas_percentuais.

df_bolsas_percentuais <- df_bolsas_totais %>%
  group_by(curso_busca) %>%
  mutate(bolsa_integral_cotas_perc = round(bolsa_integral_cotas / total_bolsas * 100, 2),
         bolsa_integral_ampla_perc = round(bolsa_integral_ampla / total_bolsas * 100, 2),
         bolsa_parcial_cotas_perc = round(bolsa_parcial_cotas / total_bolsas * 100, 2),
         bolsa_parcial_ampla_perc = round(bolsa_parcial_ampla / total_bolsas * 100, 2),
         total_bolsas = total_bolsas) %>%
  select(curso_busca, turno, total_bolsas, bolsa_integral_cotas_perc:bolsa_parcial_ampla_perc)

E por fim, exibir através de um gráfico.

df_bolsas_percentuais %>%
  ggplot(aes(x = curso_busca, y = total_bolsas, fill = turno)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Total de bolsas por curso e turno",
       x = "Curso",
       y = "Total de bolsas") +
  scale_y_continuous() +
  theme_bw() +
  theme(legend.position = "bottom", 
        axis.text.x = element_text(angle = 45, hjust = 1)) +
  facet_grid(~ turno)
## Warning: Removed 10 rows containing missing values (`geom_bar()`).

Resposta: Sim, considerando o dataset analisado, pode-se afirmar que a predominância de bolsas está no curso de Sistemas de Informação, com destaque para o turno vespertino. As demais modalidades e cursos não apresentaram bolsas disponíveis no dataset.