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:
bolsa_integral_cotas,
bolsa_integral_ampla;
bolsa_parcial_cotas;
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:
Ciência da Computação,
Engenharia da Computação;
Sistemas de Informação.
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.