Resposta das perguntas do github do laboratório 1 da cadeira de FPCC2
# Juntando cursos com estados para obter a região
cursos_regiao <- cursos %>%
left_join(select(estados, subdivision, region), by = c("uf_busca" = "subdivision")) %>%
filter(curso_busca == "Ciência da Computação", region %in% c("NE", "SE"))
# Calculando média e mediana por região
q1_resumo <- cursos_regiao %>%
group_by(region) %>%
summarise(
Media_Mensalidade = round(mean(mensalidade, na.rm = TRUE), 2),
Mediana_Mensalidade = round(median(mensalidade, na.rm = TRUE), 2),
Contagem = n()
) %>%
rename(Região = region, Média = Media_Mensalidade, Mediana = Mediana_Mensalidade, N = Contagem)
# Exibindo tabela de resumo
knitr::kable(q1_resumo, caption = "Média e Mediana das Mensalidades para Ciência da Computação por Região",
format = ifelse(knitr::is_html_output(), "html", "latex"), digits = 2, align = "c")
| Região | Média | Mediana | N |
|---|---|---|---|
| NE | 712.73 | 742.8 | 31 |
| SE | 899.06 | 779.0 | 113 |
# valor p
t_test_resultado <- t.test(mensalidade ~ region, data = cursos_regiao, var.equal = FALSE)
# boxplot
ggplot(cursos_regiao, aes(x = region, y = mensalidade, fill = region)) +
geom_boxplot() +
theme_minimal() +
labs(title = "Mensalidades de Cursos de Ciência da Computação por Região",
x = "Região", y = "Mensalidade Mensal (R$)") +
theme(legend.position = "none")
A tabela mostra a média e a mediana das mensalidades para cursos de Ciência da Computação no Nordeste e Sudeste, com o número de cursos por região. O boxplot visualiza a distribuição das mensalidades, destacando diferenças e possíveis outliers. O teste t resulta em um valor p de 0.003, indicando se a diferença média é significativa (p < 0,05 sugere significância). Também é possível notar a existencia de outliers no gráfico do Sudeste.
É notável que existe uma diferença significativa entre no nordeste e Sudeste,por exemplo a média de mensalidade do nordeste é mais significamente mais baixa, assim como amediana. Essa diferença pode ser explicada por fatores economicos, com o sudeste tendo mais poder econômico e de consumo do que o Nordeste, o que gera uma diferença no acesso a educação, além disso, a oferta de cursos no Sudeste tende a ser maior, devido a região ter um interior mais desenvolvido, como no estado de São Paulo.
Os 10 cursos com as maiores mensalidades e calculamos o total de
bolsas
(bolsa_integral_cotas + bolsa_integral_ampla + bolsa_parcial_cotas + bolsa_parcial_ampla).
Um gráfico de dispersão e um teste de correlação de Pearson exploram a
relação entre mensalidades e bolsas.
# Total de diferentes tipos de bolsas
cursos$total_bolsas <- rowSums(cursos[, c("bolsa_integral_cotas", "bolsa_integral_ampla",
"bolsa_parcial_cotas", "bolsa_parcial_ampla")], na.rm = TRUE)
# Calculando média de mensalidades e soma de bolsas por tipo de curso
q2_resumo <- cursos %>%
group_by(curso_busca) %>%
summarise(
Mensalidade_Media = round(mean(mensalidade, na.rm = TRUE), 2),
Bolsas_Total = sum(total_bolsas, na.rm = TRUE)
) %>%
arrange(desc(Mensalidade_Media)) %>%
slice_head(n = 10) %>%
rename(Curso = curso_busca, Mensalidade = Mensalidade_Media, Bolsas = Bolsas_Total)
# Exibindo tabela
knitr::kable(q2_resumo, caption = "Os 10 Tipos de Cursos com Maiores Médias de Mensalidades",
format = ifelse(knitr::is_html_output(), "html", "latex"), digits = 2, align = "c")
| Curso | Mensalidade | Bolsas |
|---|---|---|
| Medicina | 7168.34 | 1177 |
| Engenharia de Materiais e Nanotecnologia | 4108.00 | 2 |
| Desenho Industrial | 3467.00 | 28 |
| Sistemas Biomédicos | 3420.00 | 22 |
| Comunicação Social - Cinema | 2782.33 | 7 |
| Pilotagem Profissional de Aeronaves | 2630.89 | 44 |
| Comunicação e Multimeios | 2585.05 | 4 |
| Odontologia | 2324.17 | 2529 |
| Música - Composição | 2211.00 | 1 |
| Design de Games | 2180.00 | 2 |
#gráfico de disperção.
ggplot(cursos, aes(x = mensalidade, y = total_bolsas)) +
geom_point(alpha = 0.5) +
theme_minimal() +
labs(title = "Mensalidades vs. Total de Bolsas",
x = "Mensalidade Mensal (R$)", y = "Total de Bolsas")
# Teste de correlação
cor_teste <- cor.test(cursos$mensalidade, cursos$total_bolsas, method = "pearson")
A tabela lista os 10 cursos com as maiores mensalidades e o total de bolsas. O gráfico de dispersão mostra a relação entre mensalidades e bolsas. O coeficiente de correlação de Pearson é 0.216, com valor p de 0, indicando a força e significância da relação.
Para Visualização foi utilizado um gráfico de disperçao para relacionar os padroes entre mensalidade e bolsa,
É notável que cursos que oferecem mais bolsas são o que vão até 2500 R$ mensais, essa correlação pode ser devido a maior procura de cursos de baixo valor de mensalidade, através de programas de auxílio ao acesso a universidade, além disso cursos mais caros tendem a vir de instituições de mais prestígio que oferecem menos bolsas e auxílio.
filtrando cursos de tecnologia (como Ciência da Computação, Sistemas
de Informação, entre outros) na Paraíba (uf_busca == "PB")
e calculamos o total de bolsas por curso. Os 5 cursos com mais bolsas
são apresentados em uma tabela, detalhando cada tipo de bolsa.
# Total de bolsas
cursos$total_bolsas <- rowSums(cursos[, c("bolsa_integral_cotas", "bolsa_integral_ampla",
"bolsa_parcial_cotas", "bolsa_parcial_ampla")], na.rm = TRUE)
# Tabela 1: Cursos com grau "Tecnológico" na Paraíba
q3_tec_dados <- cursos %>%
filter(grau == "Tecnológico", uf_busca == "PB") %>%
arrange(desc(total_bolsas)) %>%
select(curso_busca, bolsa_integral_cotas, bolsa_integral_ampla, bolsa_parcial_cotas, bolsa_parcial_ampla, total_bolsas) %>%
slice_head(n = 5) %>%
rename(Curso = curso_busca, Int_Cotas = bolsa_integral_cotas, Int_Ampla = bolsa_integral_ampla,
Parc_Cotas = bolsa_parcial_cotas, Parc_Ampla = bolsa_parcial_ampla, Total = total_bolsas)
# Exibindo Tabela 1
knitr::kable(q3_tec_dados, caption = "Cursos com Grau Tecnológico na Paraíba com Mais Bolsas",
format = ifelse(knitr::is_html_output(), "html", "latex"), digits = 0, align = "c")
| Curso | Int_Cotas | Int_Ampla | Parc_Cotas | Parc_Ampla | Total |
|---|---|---|---|---|---|
| Segurança no Trabalho | 3 | 2 | NA | 50 | 55 |
| Negócios Imobiliários | 3 | 2 | NA | 50 | 55 |
| Logística | NA | NA | NA | 45 | 45 |
| Gestão de Recursos Humanos | 2 | 2 | NA | 40 | 44 |
| Redes de Computadores | 1 | NA | NA | 40 | 41 |
# Tabela 2: Cursos de tecnologia na Paraíba
cursos_tecnologia <- c(
"Ciência da Computação", "Engenharia de Computação", "Sistemas de Informação",
"Tecnologia da Informação", "Análise e Desenvolvimento de Sistemas",
"Gestão da Tecnologia da Informação", "Engenharia de Software",
"Redes de Computadores", "Banco de Dados", "Segurança da Informação"
)
q3_tecnologia_dados <- cursos %>%
filter(curso_busca %in% cursos_tecnologia, uf_busca == "PB") %>%
arrange(desc(total_bolsas)) %>%
select(curso_busca, bolsa_integral_cotas, bolsa_integral_ampla, bolsa_parcial_cotas, bolsa_parcial_ampla, total_bolsas) %>%
slice_head(n = 5) %>%
rename(Curso = curso_busca, Int_Cotas = bolsa_integral_cotas, Int_Ampla = bolsa_integral_ampla,
Parc_Cotas = bolsa_parcial_cotas, Parc_Ampla = bolsa_parcial_ampla, Total = total_bolsas)
# Exibindo Tabela 2
if (nrow(q3_tecnologia_dados) == 0) {
cat("Nenhum curso de tecnologia encontrado na Paraíba.\n")
} else {
knitr::kable(q3_tecnologia_dados, caption = "Cursos de Tecnologia na Paraíba com Mais Bolsas",
format = ifelse(knitr::is_html_output(), "html", "latex"), digits = 0, align = "c")
}
| Curso | Int_Cotas | Int_Ampla | Parc_Cotas | Parc_Ampla | Total |
|---|---|---|---|---|---|
| Redes de Computadores | 1 | NA | NA | 40 | 41 |
| Redes de Computadores | 1 | NA | NA | 40 | 41 |
| Gestão da Tecnologia da Informação | 1 | NA | NA | 40 | 41 |
| Gestão da Tecnologia da Informação | 1 | NA | NA | 40 | 41 |
| Gestão da Tecnologia da Informação | 5 | 4 | NA | NA | 9 |
A tabela mostra os cursos tecnológicos na Paraíba com o maior número de bolsas, detalhando os tipos de bolsas (integral cotas, integral ampla, parcial cotas, parcial ampla).
Para Ciência da Computação, Engenharia de Computação e Sistemas de
Informação, exibe o percentual de bolsas por modalidade
(turno). Um gráfico de barras empilhadas visualiza a
distribuição.
# Filtrando cursos relevantes
q4_dados <- cursos %>%
filter(curso_busca %in% c("Ciência da Computação", "Engenharia de Computação", "Sistemas de Informação")) %>%
mutate(total_bolsas = rowSums(select(., bolsa_integral_cotas, bolsa_integral_ampla,
bolsa_parcial_cotas, bolsa_parcial_ampla), na.rm = TRUE)) %>%
group_by(curso_busca, turno) %>%
summarise(total_bolsas = sum(total_bolsas, na.rm = TRUE), .groups = "drop") %>%
group_by(curso_busca) %>%
mutate(percentual = total_bolsas / sum(total_bolsas) * 100) %>%
ungroup() %>%
rename(Curso = curso_busca, Turno = turno, Bolsas = total_bolsas, Percentual = percentual)
# Exibindo tabela
knitr::kable(q4_dados, caption = "Percentuais de Bolsas por Modalidade para Cursos Selecionados",
format = ifelse(knitr::is_html_output(), "html", "latex"), digits = 2, align = "c")
| Curso | Turno | Bolsas | Percentual |
|---|---|---|---|
| Ciência da Computação | Integral | 20 | 1.26 |
| Ciência da Computação | Matutino | 384 | 24.15 |
| Ciência da Computação | Noturno | 1169 | 73.52 |
| Ciência da Computação | Vespertino | 17 | 1.07 |
| Engenharia de Computação | Curso a Distância | 132 | 11.87 |
| Engenharia de Computação | Integral | 43 | 3.87 |
| Engenharia de Computação | Matutino | 402 | 36.15 |
| Engenharia de Computação | Noturno | 517 | 46.49 |
| Engenharia de Computação | Vespertino | 18 | 1.62 |
| Sistemas de Informação | Curso a Distância | 95 | 4.94 |
| Sistemas de Informação | Matutino | 260 | 13.51 |
| Sistemas de Informação | Noturno | 1514 | 78.65 |
| Sistemas de Informação | Vespertino | 56 | 2.91 |
# Gráfico de barras empilhadas
ggplot(q4_dados, aes(x = Curso, y = Percentual, fill = Turno)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Distribuição de Bolsas por Modalidade",
x = "Curso", y = "Percentual de Bolsas (%)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
A tabela e o gráfico de barras empilhadas mostram o percentual de bolsas por modalidade para os cursos selecionados. O gráfico destaca se uma modalidade (e.g., noturno) predomina.
sessionInfo()
## R version 4.5.0 (2025-04-11 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26100)
##
## Matrix products: default
## LAPACK version 3.12.1
##
## locale:
## [1] LC_COLLATE=English_United States.utf8
## [2] LC_CTYPE=English_United States.utf8
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.utf8
##
## time zone: America/Sao_Paulo
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] readr_2.1.5 tidyr_1.3.1 ggplot2_3.5.2 dplyr_1.1.4
##
## loaded via a namespace (and not attached):
## [1] bit_4.6.0 gtable_0.3.6 jsonlite_2.0.0 crayon_1.5.3
## [5] compiler_4.5.0 tidyselect_1.2.1 parallel_4.5.0 jquerylib_0.1.4
## [9] scales_1.4.0 yaml_2.3.10 fastmap_1.2.0 R6_2.6.1
## [13] labeling_0.4.3 generics_0.1.3 knitr_1.50 tibble_3.2.1
## [17] bslib_0.9.0 pillar_1.10.2 RColorBrewer_1.1-3 tzdb_0.5.0
## [21] rlang_1.1.6 cachem_1.1.0 xfun_0.52 sass_0.4.10
## [25] bit64_4.6.0-1 cli_3.6.5 withr_3.0.2 magrittr_2.0.3
## [29] digest_0.6.37 grid_4.5.0 vroom_1.6.5 rstudioapi_0.17.1
## [33] hms_1.1.3 lifecycle_1.0.4 vctrs_0.6.5 evaluate_1.0.3
## [37] glue_1.8.0 farver_2.1.2 rmarkdown_2.29 purrr_1.0.4
## [41] tools_4.5.0 pkgconfig_2.0.3 htmltools_0.5.8.1