Q01

Qual a diferença entre as mensalidades médias e medianas dos cursos de Ciência da Computação das regiões Nordeste e Sudeste? Na sua opinião, essa diferença o que causa essa diferença? Ela é estatisticamente significativa? Justifique.

# Seleciona os estados pertencentes às regiões Nordeste e Sudeste
estados_nordeste <- df_estados %>%
  filter(category == "State", region == "NE") %>%
  select(subdivision)


estados_sudeste <- df_estados %>%
  filter(category == "State", region == "SE") %>%
  select(subdivision)

# Filtra os cursos de Ciência da Computação e identifica a qual região cada curso pertence
dados_cc <- df_cursos %>%
  filter(curso_busca == "Ciência da Computação") %>%
  filter(uf_busca %in% estados_nordeste$subdivision | 
           uf_busca %in% estados_sudeste$subdivision) %>%
  mutate(
    regiao = case_when(
      uf_busca %in% estados_nordeste$subdivision ~ "Nordeste",
      uf_busca %in% estados_sudeste$subdivision ~ "Sudeste",
      TRUE ~ NA_character_
    )
  )

# Calcula a média e a mediana das mensalidades para cada região
resumo_mensalidades <- dados_cc %>%
  group_by(regiao) %>%
  summarise(
    mensalidade_media = mean(mensalidade, na.rm = TRUE),
    mensalidade_mediana = median(mensalidade, na.rm = TRUE),
    .groups = "drop"
  )

resumo_mensalidades
## # A tibble: 2 × 3
##   regiao   mensalidade_media mensalidade_mediana
##   <chr>                <dbl>               <dbl>
## 1 Nordeste              713.                743.
## 2 Sudeste               899.                779
# Calcula a diferença absoluta entre as médias e medianas das mensalidades
comparativo <- resumo_mensalidades %>%
  summarise(
    identificador = "Diferença",
    mensalidade_media = abs(diff(mensalidade_media)),
    mensalidade_mediana = abs(diff(mensalidade_mediana))
  )

comparativo
## # A tibble: 1 × 3
##   identificador mensalidade_media mensalidade_mediana
##   <chr>                     <dbl>               <dbl>
## 1 Diferença                  186.                36.2
# Gera um gráfico de barras para comparar as médias e medianas por região
grafico_q1 <- resumo_mensalidades %>%
  pivot_longer(cols = c(mensalidade_media, mensalidade_mediana), 
               names_to = "Tipo_Estatistica", values_to = "Valor") %>%
  ggplot(aes(x = regiao, y = Valor, fill = Tipo_Estatistica)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(aes(label = round(Valor, 2)), 
            position = position_dodge(width = 0.9), vjust = 1.5) +
  labs(
    title = "Comparativo de Média e Mediana das Mensalidades em Ciência da Computação",
    x = "Região",
    y = "Mensalidade (R$)",
    fill = "Tipo de Estatística"
  ) +
  scale_fill_manual(values = c("mensalidade_media" = "#0a8967",
                               "mensalidade_mediana" = "#07f9a2")) + 
  theme_minimal() +
  theme(legend.position = "bottom")

grafico_q1

Podemos observar que os cursos de Ciência da Computação possuem mensalidades médias mais elevadas na região Sudeste em comparação ao Nordeste. No Sudeste, o valor médio é de R$899,06, enquanto no Nordeste é de R$712,73, resultando em uma diferença média de R$186,33.

No entanto, ao considerarmos as medianas, a diferença se reduz significativamente para R$36,20 — com o valor de R$779,00 no Sudeste e R$742,80 no Nordeste.

Essa disparidade pode ser atribuída a fatores como custo de vida regional, concentração de instituições renomadas, demanda pelos cursos e estratégias de precificação adotadas pelas universidades.

Q02

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.

# Escolhendo as colunas relevantes para a análise
dados_bolsas <- df_cursos %>%
  select(curso_busca, mensalidade, bolsa_integral_cotas, 
         bolsa_integral_ampla, bolsa_parcial_cotas, bolsa_parcial_ampla)

# Agrupando informações por curso
dados_bolsas <- dados_bolsas %>%
  group_by(curso_busca)

# Gerando estatísticas de interesse para cada curso
estatisticas_bolsas <- dados_bolsas %>%
  summarise(
    maior_mensalidade = max(mensalidade, na.rm = TRUE),
    bolsas_integral_cotas = sum(bolsa_integral_cotas, na.rm = TRUE),
    bolsas_integral_ampla = sum(bolsa_integral_ampla, na.rm = TRUE),
    bolsas_parcial_cotas = sum(bolsa_parcial_cotas, na.rm = TRUE),
    bolsas_parcial_ampla = sum(bolsa_parcial_ampla, na.rm = TRUE),
    .groups = "drop"
  )

# Calculando o total de bolsas por curso
estatisticas_bolsas <- estatisticas_bolsas %>%
  mutate(
    total_bolsas = rowSums(across(c(bolsas_integral_cotas,
                                    bolsas_integral_ampla, 
                                    bolsas_parcial_cotas, 
                                    bolsas_parcial_ampla)))
  )

# Mantendo apenas as colunas necessárias
resumo_bolsas <- estatisticas_bolsas %>%
  select(curso_busca, maior_mensalidade, total_bolsas)

# Ordenando pelo maior número de bolsas e mensalidade
resumo_bolsas <- resumo_bolsas %>%
  arrange(desc(total_bolsas), desc(maior_mensalidade))

# Selecionando os 10 cursos em destaque
top_cursos_bolsas <- head(resumo_bolsas, 10)
top_cursos_bolsas
## # A tibble: 10 × 3
##    curso_busca                maior_mensalidade total_bolsas
##    <chr>                                  <dbl>        <dbl>
##  1 Administração                          6553.        20761
##  2 Pedagogia                              3282         19448
##  3 Direito                                7718.        14678
##  4 Ciências Contábeis                     5801.        13145
##  5 Educação Física                        8467.        10914
##  6 Enfermagem                             9836.        10302
##  7 Engenharia Civil                       6180          9442
##  8 Psicologia                             9689.         6779
##  9 Gestão de Recursos Humanos             3408.         6665
## 10 Engenharia de Produção                 7360.         5946
# Visualização da distribuição entre mensalidade e quantidade de bolsas
grafico_bolsas <- ggplot(resumo_bolsas, aes(x = maior_mensalidade,
                                            y = total_bolsas)) +
  geom_point(color = "green") +
  labs(
    title = "Distribuição da Mensalidade Máxima versus Total de Bolsas",
    x = "Mensalidade Máxima (R$)",
    y = "Quantidade Total de Bolsas"
  ) +
  theme_minimal()

grafico_bolsas

# Cálculo da correlação entre o valor da mensalidade e a quantidade de bolsas
coef_correlacao <- cor(resumo_bolsas$maior_mensalidade, 
                       resumo_bolsas$total_bolsas, method = "pearson")
print(sprintf(
  "O coeficiente de correlação de Pearson calculado é de aproximadamente %.4f", 
  coef_correlacao))
## [1] "O coeficiente de correlação de Pearson calculado é de aproximadamente 0.6067"

O coeficiente de correlação de Pearson calculado mostra uma correlação positiva moderada entre o valor da mensalidade máxima dos cursos e o total de bolsas ofertadas. Isso sugere que, em geral, cursos com mensalidades mais elevadas tendem a oferecer mais bolsas. Contudo, a força dessa associação não é muito alta, o que indica que outros fatores também influenciam a quantidade de bolsas concedidas.

Q03

Quais são os cursos tecnológicos do estado da Paraíba que oferecem mais bolsas de estudo e quantas bolsas de cada tipo estes cursos oferecem?

# Filtrando cursos tecnológicos localizados na Paraíba (PB)
cursos_tecnologicos_pb <- df_cursos %>%
  filter(uf_busca == "PB", grau == "Tecnológico")

# Agrupando por nome do curso e somando a quantidade total de bolsas concedidas
resumo_bolsas_pb <- cursos_tecnologicos_pb %>%
  group_by(nome) %>%
  summarise(
    bolsas_totais = 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),
    .groups = "drop"
  ) %>%
  arrange(desc(bolsas_totais))

# Quantidade de cursos tecnológicos distintos na Paraíba
quantidade_cursos_pb <- n_distinct(resumo_bolsas_pb$nome)

Tabela com total de bolsas para cada curso.

head(resumo_bolsas_pb, 34)
## # A tibble: 34 × 2
##    nome                               bolsas_totais
##    <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
## # ℹ 24 more rows

Q04

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?

# Definindo os cursos de interesse para análise
cursos_selecionados <- c("Ciência da Computação", 
                         "Engenharia da Computação", 
                         "Sistemas de Informação")

# Filtrando o dataset apenas para os cursos selecionados
dados_filtrados_bolsas <- df_cursos %>%
  filter(curso_busca %in% cursos_selecionados)

# Agrupando por curso e turno e somando a quantidade de bolsas
resumo_total_bolsas <- dados_filtrados_bolsas %>%
  group_by(curso_busca, turno) %>%
  summarise(
    bolsas_totais = 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),
    qtd_bolsa_integral_cotas = sum(bolsa_integral_cotas, na.rm = TRUE),
    qtd_bolsa_integral_ampla = sum(bolsa_integral_ampla, na.rm = TRUE),
    qtd_bolsa_parcial_cotas = sum(bolsa_parcial_cotas, na.rm = TRUE),
    qtd_bolsa_parcial_ampla = sum(bolsa_parcial_ampla, na.rm = TRUE),
    .groups = "drop"
  )
# Calculando a distribuição percentual de cada tipo de bolsa dentro de cada curso
percentuais_bolsas <- resumo_total_bolsas %>%
  group_by(curso_busca) %>%
  mutate(
    perc_integral_cotas = round(qtd_bolsa_integral_cotas 
                                / bolsas_totais * 100, 2),
    perc_integral_ampla = round(qtd_bolsa_integral_ampla 
                                / bolsas_totais * 100, 2),
    perc_parcial_cotas = round(qtd_bolsa_parcial_cotas 
                               / bolsas_totais * 100, 2),
    perc_parcial_ampla = round(qtd_bolsa_parcial_ampla 
                               / bolsas_totais * 100, 2)
  ) %>%
  select(
    curso_busca, turno, bolsas_totais,
    perc_integral_cotas, perc_integral_ampla, 
    perc_parcial_cotas, perc_parcial_ampla
  )

Exibindo tabela com percentuais de bolsas por modalidade e curso

percentuais_bolsas
## # A tibble: 11 × 7
## # Groups:   curso_busca [3]
##    curso_busca       turno bolsas_totais perc_integral_cotas perc_integral_ampla
##    <chr>             <chr>         <dbl>               <dbl>               <dbl>
##  1 Ciência da Compu… Inte…            20               15                  45   
##  2 Ciência da Compu… Matu…           384               28.1                35.9 
##  3 Ciência da Compu… Notu…          1169               15.4                32.3 
##  4 Ciência da Compu… Vesp…            17               23.5                29.4 
##  5 Engenharia da Co… Inte…            22                0                   9.09
##  6 Engenharia da Co… Matu…            19               21.0                63.2 
##  7 Engenharia da Co… Notu…            80               12.5                30   
##  8 Sistemas de Info… Curs…            95               62.1                35.8 
##  9 Sistemas de Info… Matu…           260               11.9                28.1 
## 10 Sistemas de Info… Notu…          1514               13.5                25.4 
## 11 Sistemas de Info… Vesp…            56                1.79                1.79
## # ℹ 2 more variables: perc_parcial_cotas <dbl>, perc_parcial_ampla <dbl>
# Criando gráfico de barras para visualizar a quantidade de bolsas por curso e turno
grafico_bolsas_turno <- ggplot(percentuais_bolsas, 
                               aes(x = curso_busca, 
                                   y = bolsas_totais, 
                                   fill = turno)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(
    title = "Distribuição do Total de Bolsas por Curso e Turno",
    x = "Curso",
    y = "Quantidade de Bolsas"
  ) +
  scale_y_continuous() +
  theme_bw() +
  theme(
    legend.position = "bottom",
    axis.text.x = element_text(angle = 45, hjust = 1)
  ) +
  facet_grid(~ turno)

grafico_bolsas_turno

Analisando os resultados

  1. Ciência da Computação:
    • A maior concentração percentual de bolsas destinadas a cotas integrais ocorre no turno Matutino, representando 28,12% das bolsas disponíveis.
    • No entanto, o turno Noturno é responsável pela maior quantidade absoluta de bolsas concedidas, totalizando 1169 bolsas.
  2. Engenharia da Computação:
    • No Matutino, observa-se o maior percentual de bolsas de cotas integrais (21,05%), embora o número absoluto de bolsas nesta faixa seja relativamente pequeno (19 bolsas).
    • Já no Noturno, o percentual de bolsas para cotas integrais é inferior (12,50%), mas o número total de bolsas é mais expressivo (80 bolsas).
  3. Sistemas de Informação:
    • A modalidade Curso a Distância (EaD) lidera em percentual de bolsas para cotas integrais, com 62,11% — destacando a forte presença do ensino a distância para esse curso.
    • Contudo, o maior número absoluto de bolsas está no turno Noturno, que oferece 1514 bolsas, mesmo que o percentual de cotas integrais seja mais modesto (13,47%).

De forma geral, o turno Noturno concentra a maior quantidade de bolsas ofertadas em todos os cursos analisados. Apesar disso, o percentual de bolsas destinadas a cotas integrais varia consideravelmente entre os cursos e modalidades, evidenciando diferentes perfis de distribuição conforme a estrutura do curso.