Introdução

A concessão de bolsas de formação para o nível superior é um importante instrumento fomentado pelo governo brasileiro, pois ajuda a apoiar e a desenvolver atividades científicas e tecnológicas que permeiam diversas áreas do conhecimento. A formação de profissionais qualificados é incentivada, pois a concessão de bolsas tem o intuito de fornecer aos estudantes e pesquisadores um recurso financeiro para que se dediquem integralmente à realização das pesquisas e aos estudos, visando assim evitar a evasão de estudantes por questões financeiras. Além disso, há o estímulo da produção de conhecimento acadêmico pois existem diversos requisitos do recebimento da bolsa que são exigidos aos contemplados, dentre os quais podemos destacar a publicação de artigos em jornais, convenções e revistas científicas adequadas.

O fortalecimento da capacidade de pesquisa e inovação, advindos dessa concessão de bolsas, pode gerar impactos positivos na economia com profissionais qualificados, como também na qualidade de vida da população com novas descobertas, entre outros, e em última instância no próprio desenvolvimento sustentável do país. Para que esse cenário ocorra, é de extrema importância o acompanhamento da distribuição desses recursos, contudo por muitas vezes os dados abertos são fornecidos de uma maneira que dificulta o acesso e o entendimento do cidadão comum. Esse projeto visa facilitar desde a visão do cidadão que deseja entender um pouco mais sobre as bolsas de estudos, até a realização de análise de dados mais aprofundadas para que possamos sempre visualizar possíveis melhorias no processo, e para que seja possível prezar por uma distribuição equitária das bolsas de fomento a pesquisa entre os estados da federação.

O processo de escolha da fonte

A priori consultamos o portal gov.br para identificarmos quais as principais fontes de dados abertos que poderíamos utilizar neste projeto. Diante do escopo da aplicação de bolsas para o nível superior, o acesso à área do Ministério da Ciência, Tecnologia e Inovação é o mais confiável para que possamos coletar os dados necessários para análise. Nesse acesso foi possível verificar diversas páginas com relatórios atualizados sobre diversas modalidades de pesquisa, bem como relatórios de anos anteriores. O Relatório de Pagamentos de Bolsas e Auxílios 2023 foi escolhido por ser o mais recente disponibilizado, e também por que atendia ao escopo definido para o projeto final da disciplina de análise de dados do curso de pós-graduação em informática aplicada da qual esse projeto faz parte.

Relevância do Relatório de Pagamentos de Bolsas e Auxílios

O Relatório de Pagamentos de bolsas e auxílio de 2023 possui diversas informações distribuídas em mais de cento e sessenta mil linhas, as quais fazem parte de um arquivo CSV disponibilizado pelo CNPQ. Seu entendimento nos dá a oportunidade de aplicar os conhecimentos adquiridos durante a disciplina com o auxílio da linguagem R, para obter clareza na distribuição dos recursos aplicados para o pagamento das bolsas de fomento. O relatório possui diversos tópicos dentre os quais podemos citar: 1) a Linha de fomento,2) a Modalidade do financiamento ou fomento, 3) a Categoria ou nível do beneficiário (por exemplo, graduação, mestrado, doutorado), 4) o Nome da chamada ou edital do programa, 5) Programa do Conselho Nacional de Desenvolvimento Científico e Tecnológico, 6) O estado destino, 7) Sigla da instituição de destino, entre outros.

Trazer clareza a esses dados fornece aos estudantes e professores das instituições públicas do país o conhecimento necessário para sugestões de melhorias, assim como para incentivar parcerias e troca de conhecimentos e aprendizados que podem surgir de parceiras entre instituições, por isso, devemos estar ciente das oportunidades que são oferecidas pelo governo e quaisquer entidades de fomento. Visto isso, se faz necessário o empenho para exploração desse relatório e detalhamento mais técnicos distrbuídos nos tópicos seguintes.

Conceitos práticos

Imports e Pacotes necessários

Para realizar as operações de dados em R neste projeto foram utilizados os seguintes pacotes e bibliotecas.

# Se Necessário instalar esses pacotes
# install.packages("kableExtra")
# install.packages("rnaturalearth")
# install.packages("devtools")
# install.packages("remotes")
# usethis::gh_token_help() #Gerando novo token no git
# gitcreds::gitcreds_set() #Setando o token para poder baixar a dependencia abaixo
# remotes::install_github("AndySouth/rnaturalearthhires")
#install.packages("scales")

#Carregando os pacotes

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── 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
library(rnaturalearth)
library(rnaturalearthhires)
library(knitr)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(stringr)
library(scales)
## 
## Attaching package: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor
library(showtext)
## Carregando pacotes exigidos: sysfonts
## Carregando pacotes exigidos: showtextdb
## Loading Google fonts (https://fonts.google.com/)
font_add_google("Gochi Hand", "gochi")
font_add_google("Schoolbell", "bell")

## Automatically use showtext to render text
showtext_auto()

Análise Inicial

Inicialmente se faz necessário a observação visual da planilha, pois é nessa inspeção que poderemos identificar quais tipos de dados existem, quais dentre eles podem ser elencados como fonte de informação relevante, quais precisam passar por um processo de padronização para a análise. Essas fontes de informação precisam estar disponíveis de forma adequada para a utilização das bibliotecas e métodos presentes na Linguagem R, visto que dados poluídos podem gerar problemas durante a execução dos nossos métodos que serão compilados pelo RStudio. Outro ponto importante, é perceber que essas fontes de informação podem ser utilizadas em conjunto para visualizarmos os dados de diferentes perspectivas, e assim chegarmos a novas ideias, conclusões ou identificar inconsistências.

Entre os tópicos presentes no relatório podemos destacar o estado do brasil na qual a bolsa de fomento foi concedida, a quantidade de bolsas presentes naquele estado e assim poderemos identificar quais as regiões do Brasil essas bolsas foram mais concedidas, pois esse é um subconjunto relevante no qual poderemos identificar desproporcionalidades na concessão.

1) Plotando as regiões do Brasil

#Baixar arquivo referentes aos mapas

#Baixando mapa do Brasil
mapa_brasil <- ne_states(country = "Brazil", returnclass = "sf")

#   Ao analisar a estrutura do dataframe mapa_brasil podemos observar que
# o mapa_brasil$postal é a referencia que contem a sigla dos estados, e 
# sera por essa estrutura que filtraremos cada um dos mapas dos estados.

AC <- mapa_brasil[mapa_brasil$postal == "AC",]
AL <- mapa_brasil[mapa_brasil$postal == "AL",]
AM <- mapa_brasil[mapa_brasil$postal == "AM",]
AP <- mapa_brasil[mapa_brasil$postal == "AP",]
BA <- mapa_brasil[mapa_brasil$postal == "BA",]
CE <- mapa_brasil[mapa_brasil$postal == "CE",]
DF <- mapa_brasil[mapa_brasil$postal == "DF",]
ES <- mapa_brasil[mapa_brasil$postal == "ES",]
GO <- mapa_brasil[mapa_brasil$postal == "GO",]
MA <- mapa_brasil[mapa_brasil$postal == "MA",]
MG <- mapa_brasil[mapa_brasil$postal == "MG",]
MS <- mapa_brasil[mapa_brasil$postal == "MS",]
MT <- mapa_brasil[mapa_brasil$postal == "MT",]
PA <- mapa_brasil[mapa_brasil$postal == "PA",]
PB <- mapa_brasil[mapa_brasil$postal == "PB",]
PE <- mapa_brasil[mapa_brasil$postal == "PE",]
PI <- mapa_brasil[mapa_brasil$postal == "PI",]
PR <- mapa_brasil[mapa_brasil$postal == "PR",]
RJ <- mapa_brasil[mapa_brasil$postal == "RJ",]
RN <- mapa_brasil[mapa_brasil$postal == "RN",]
RO <- mapa_brasil[mapa_brasil$postal == "RO",]
RR <- mapa_brasil[mapa_brasil$postal == "RR",]
RS <- mapa_brasil[mapa_brasil$postal == "RS",]
SC <- mapa_brasil[mapa_brasil$postal == "SC",]
SE <- mapa_brasil[mapa_brasil$postal == "SE",]
SP <- mapa_brasil[mapa_brasil$postal == "SP",]
TO <- mapa_brasil[mapa_brasil$postal == "TO",]

# Setando os nomes das regiões que não estao definidos no mapa

AC$region <- "Norte"
AL$region <- "Nordeste"
AM$region <- "Norte"
AP$region <- "Norte"
BA$region <- "Nordeste"
CE$region <- "Nordeste"
DF$region <- "Centro-Oeste"
ES$region <- "Sudeste"
GO$region <- "Centro-Oeste"
MA$region <- "Nordeste"
MG$region <- "Sudeste"
MS$region <- "Centro-Oeste"
MT$region <- "Centro-Oeste"
PA$region <- "Norte"
PB$region <- "Nordeste"
PE$region <- "Nordeste"
PI$region <- "Nordeste"
PR$region <- "Sul"
RJ$region <- "Sudeste"
RN$region <- "Nordeste"
RO$region <- "Norte"
RR$region <- "Norte"
RS$region <- "Sul"
SC$region <- "Sul"
SE$region <- "Nordeste"
SP$region <- "Sudeste"
TO$region <- "Norte"

#Concatenando todos os mapas para faciltar a geração do plot
dat <- rbind(AC,AL,AM,AP,BA,CE,DF,ES,GO,MA,MG,MS,MT,PA,PB,PE,PI,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO)

ggplot()+
  #geom_sf(data = mapa_brasil, color = "white")+
  theme_void()+
  geom_sf(data = dat,colour = "white",aes(fill=region))+
  labs(title="Regiões do Brasil", fill="Região")

2) Filtragem, Manipulação e Padronização de Dados no Mapa do Brasil

No passo anterior se fez necessário a utilização de um filtro para que fosse possível através das características identificadas no dataframe a inserção da identificação das regiões no mapa do Brasil, dessa forma criamos as condições necessárias para que fosse possível plotar o mapa adequadamente. Vale ressaltar que a padronização observada anteriormente com a adição das regiões para cada mapa dos estados teve o intuito de facilitar futuras plotagens e também como para outras visualizações de dados no mapa do Brasil no decorrer desse projeto.

3) Criação do Código para calcular a quantidade de concessão de bolsas por região

Inicialmente iremos carregar o relatório através da leitura do arquivo CSV, dessa forma poderemos realizar consultas relacionadas em cada estados e assim coletar as repectivas quantidades de bolsas concedidas. Com base nisso, poderemos calcular a quantidade de bolsas por região, e seguinte plotagem do gráfico. Note que diversos comentários foram colocados no código para tentar facilitar o entendimento.

#Projeto Final

# Analise Relatório de Pagamentos de Bolsas e Auxílios 2023


# Primeiro precisamos começar
# Importando o csv como dataframe
relatorio_2023 <- as.data.frame(read.csv("relatorio_2023.csv"))


#============= Limpeza de dados com a remoção de cabecalho da planilha==========
#Sobrescrevendo o nome das colunas 
colnames(relatorio_2023) <- relatorio_2023[7,]

#Removendo o cabecalho da planilha
relatorio_2023 <- relatorio_2023[-c(0:7),]
#===============================================================================



############################################    
#Qual Regiao tem mais bolsas?
############################################

    # Realizado consult abaixo para visualizarmos a criação da proxima atribuicao 
     sigla_regioes = levels(factor(relatorio_2023$REGIAO))

    #Limpando dados que não podem ser utilizados nessa consulta c("CO","NE","NO","SE","SU")
    sigla_regioes = sigla_regioes[4:8] 
    
    resposta <- c()
    for(sigla in sigla_regioes){
      relatorio_das_regioes <-  relatorio_2023[which(relatorio_2023$REGIAO==sigla),]
      numero_de_bolsas <- nrow(relatorio_das_regioes)
      #print(sprintf("%s %d",sigla,numero_de_bolsas))
      resposta<- c(resposta,numero_de_bolsas)
    }
    #print(resposta)
    #Gerando dataframe com a resposta
    bolsas_por_regiao <- data.frame("Regioes" = sigla_regioes,"Quantidade de Bolsas" = resposta)
    #bolsas_por_regiao
    
    #Consultando o estado com maior numero de bolsas
    maior_bolsas_concedidas <- bolsas_por_regiao[which(bolsas_por_regiao$Quantidade.de.Bolsas ==
                                                         max(bolsas_por_regiao$Quantidade.de.Bolsas)),]
    
    
    AC$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NO"),]$Quantidade.de.Bolsas#"Norte"
    AL$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    AM$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NO"),]$Quantidade.de.Bolsas#"Norte"
    AP$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NO"),]$Quantidade.de.Bolsas#"Norte"
    BA$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    CE$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    DF$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="CO"),]$Quantidade.de.Bolsas#"Centro-Oeste"
    ES$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="SE"),]$Quantidade.de.Bolsas#"Sudeste"
    GO$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="CO"),]$Quantidade.de.Bolsas#"Centro-Oeste"
    MA$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    MG$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="SE"),]$Quantidade.de.Bolsas#"Sudeste"
    MS$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="CO"),]$Quantidade.de.Bolsas#"Centro-Oeste"
    MT$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="CO"),]$Quantidade.de.Bolsas#"Centro-Oeste"
    PA$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NO"),]$Quantidade.de.Bolsas#"Norte"
    PB$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    PE$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    PI$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    PR$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="SU"),]$Quantidade.de.Bolsas#"Sul"
    RJ$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="SE"),]$Quantidade.de.Bolsas#"Sudeste"
    RN$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    RO$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NO"),]$Quantidade.de.Bolsas#"Norte"
    RR$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NO"),]$Quantidade.de.Bolsas#"Norte"
    RS$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="SU"),]$Quantidade.de.Bolsas#"Sul"
    SC$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="SU"),]$Quantidade.de.Bolsas#"Sul"
    SE$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NE"),]$Quantidade.de.Bolsas#"Nordeste"
    SP$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="SE"),]$Quantidade.de.Bolsas#"Sudeste"
    TO$region <- bolsas_por_regiao[which(bolsas_por_regiao$Regioes=="NO"),]$Quantidade.de.Bolsas#"Norte"
    
    
    dat <- rbind(AC,AL,AM,AP,BA,CE,DF,ES,GO,MA,MG,MS,MT,PA,PB,PE,PI,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO)
    
    texto <- paste("Regiao ",maior_bolsas_concedidas$Regioes, " disponibilizou a maior quantidade:",
                   maior_bolsas_concedidas$Quantidade.de.Bolsas, "bolsas")

    ggplot() + 
      theme_void()+ 
      labs(title=texto, fill="Quantidade de Bolsas")+
      geom_sf(data = dat,colour = "white",aes(fill=region))+
      scale_fill_gradient2()

Ao observarmos as cores do gráfico acima, é possível verificar que há uma quantidade significativa de bolsas na região sudeste, quando comparamos visualmente com os demais estados. O que pode estar relacionado principalmente com o índice demográfico da região, sendo considerado o maior do país pelo Censo IBGE de 2022.

4) Outros Detalhes sobre Orçamento

Outro ponto interessante quando olhando para o relatório é entender o total que foi gasto em cada estado, para isso precisamos somar todos os valores concedidos em cada uma das bolsas em cada estado. O detalhe tecnico está descrito no código abaixo.

################################################################################   
# Qual o Estado tem maior orcamento dessas bolsas?
################################################################################
    
    sigla_estados = c("AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT",
                      "PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO")
    resposta <- c()
    for(sigla in sigla_estados){
      relatorio_do_estados <-  relatorio_2023[which(relatorio_2023$SIGLA_UF_DESTINO==sigla),]
      orcamento <- 0.0
      for(x in 1:nrow(relatorio_do_estados)){
        orcamento<-orcamento + as.numeric(gsub(",", "",gsub("\\$|\\s", "",
                                            x = relatorio_do_estados$VALOR_PAGO[x])))
      }
      resposta<- c(resposta,orcamento)
    }
    
    orcamento_por_estado <- data.frame("Estado" = sigla_estados,"Orcamento" = resposta)
    
    AC$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="AC"),]$Orcamento)#"Norte"
    AL$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="AL"),]$Orcamento)#"Nordeste"
    AM$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="AM"),]$Orcamento)#"Norte"
    AP$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="AP"),]$Orcamento)#"Norte"
    BA$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="BA"),]$Orcamento)#"Nordeste"
    CE$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="CE"),]$Orcamento)#"Nordeste"
    DF$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="DF"),]$Orcamento)#"Centro-Oeste"
    ES$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="ES"),]$Orcamento)#"Sudeste"
    GO$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="GO"),]$Orcamento)#"Centro-Oeste"
    MA$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="MA"),]$Orcamento)#"Nordeste"
    MG$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="MG"),]$Orcamento)#"Sudeste"
    MS$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="MS"),]$Orcamento)#"Centro-Oeste"
    MT$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="MT"),]$Orcamento)#"Centro-Oeste"
    PA$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="PA"),]$Orcamento)#"Norte"
    PB$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="PB"),]$Orcamento)#"Nordeste"
    PE$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="PE"),]$Orcamento)#"Nordeste"
    PI$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="PI"),]$Orcamento)#"Nordeste"
    PR$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="PR"),]$Orcamento)#"Sul"
    RJ$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="RJ"),]$Orcamento)#"Sudeste"
    RN$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="RN"),]$Orcamento)#"Nordeste"
    RO$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="RO"),]$Orcamento)#"Norte"
    RR$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="RR"),]$Orcamento)#"Norte"
    RS$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="RS"),]$Orcamento)#"Sul"
    SC$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="SC"),]$Orcamento)#"Sul"
    SE$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="SE"),]$Orcamento)#"Nordeste"
    SP$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="SP"),]$Orcamento)#"Sudeste"
    TO$region <- round(orcamento_por_estado[which(orcamento_por_estado$Estado=="TO"),]$Orcamento)#"Norte"
    
    
    dat <- rbind(AC,AL,AM,AP,BA,CE,DF,ES,GO,MA,MG,MS,MT,PA,PB,PE,PI,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO)

    ggplot() + 
      theme_void()+ 
      labs(title="Orçamentos concedidos por região", fill="Orçamento Total")+
      geom_sf(data = dat,colour = "white",aes(fill=region))+
      scale_fill_gradient2()

    maior_orcamento <- orcamento_por_estado[
                              which(orcamento_por_estado$Orcamento==max(orcamento_por_estado$Orcamento)),]
    
    texto <- paste("O Estado",maior_orcamento$Estado, " possui o maior Orçamento")
    
    dat <- dat[which(dat$postal==maior_orcamento$Estado),]
    
    ggplot() + 
      theme_void()+ 
      labs(title=texto, fill="Orçamento Total")+
      geom_sf(data = dat, colour = "white",
              aes(fill=region))+
      scale_fill_gradient()

5) Indo da Além da Quantidade de Bolsas

A quantidade em si não retrata com qualidade e precisão necessária para sabermos se há algum tipo de discrepância perante a distribuição das bolsas, dado que a população varia entre os estados, por isso precisamos tentar responder perguntas mais especfícicas, com o intuito de que seja possível visualizar mais próximo do bolsista. Devido a isso, vamos seguir visanado responder as seguintes perguntas: Qual média paga pelas Bolsas? Qual a mediana paga? Qual o valor mais comum (moda)?

################################################################################
#   Qual Estado tem a maior media/mediana das bolsas pagas?
################################################################################
    
    getmoda <- function(x) {
      modal <- unique(x)
      modal[which.max(tabulate(match(x, modal)))]
    }
    
    
    sigla_estados = c("AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT","PA","PB","PE"
                      ,"PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO")
    mediana <- c()
    media <- c()
    moda<-c()
    bolsas <- c()
    for(sigla in sigla_estados){
      relatorio_do_estados <-  relatorio_2023[which(relatorio_2023$SIGLA_UF_DESTINO==sigla),]
      bolsas <- c()
      for(x in 1:nrow(relatorio_do_estados)){
        bolsa_da_vez <- c()
        
        #   Aqui tivemos que aplicar uma normalização dos dados para que fosse 
        # possível utilizar o numeric no R, e assim pudessemos manipular os valores
        
        bolsa_da_vez<-c(as.numeric(gsub(",", "",gsub("\\$|\\s", "",
                        x = relatorio_do_estados$VALOR_PAGO[x])))
                      )
        #print(bolsa_da_vez)
        bolsas <- c(bolsas,bolsa_da_vez)
        #print(bolsas)
      }
      mediana<- c(mediana,median(bolsas))
      media<-c(media,mean(bolsas))
      moda<-c(moda,getmoda(bolsas))
    }
    #View(resposta)
    media_por_estado <- data.frame("Estado" = sigla_estados,"Media" = media,
                                   "Mediana" = mediana,"Moda" = moda)
  media_por_estado%>%
  kbl() %>%
  scroll_box(width = "100%", height = "350px",fixed_thead = list(enabled = T,background="anycolor"))%>%
  kable_material_dark()
Estado Media Mediana Moda
AC 7195.691 2800 2800
AL 9125.126 3500 2800
AM 16611.402 4600 2800
AP 8790.616 3200 2800
BA 11552.551 4200 2800
CE 16779.378 5000 2800
DF 8137.213 3100 3100
ES 10704.443 4900 2800
GO 10531.842 3500 2800
MA 9132.064 2800 2800
MG 16156.126 5300 2800
MS 9809.244 2830 2800
MT 8122.953 2800 2800
PA 12766.175 4200 2800
PB 10469.215 3875 2800
PE 17995.535 4600 2800
PI 12387.549 3900 2800
PR 14828.669 4600 2800
RJ 10130.089 2800 700
RN 11889.221 3500 2800
RO 7746.718 2800 2800
RR 7956.019 2800 2800
RS 16257.161 5300 2800
SC 17905.277 5300 2800
SE 9489.432 2800 2800
SP 17892.716 5300 2800
TO 8276.033 2800 2800

A tabela acima retrata um conjunto de métricas retiradas do relatório, para que possamos entender melhor e respontas as perguntas sugeridas acima, os detalhes foram comentados no código. Como a tabela contém os dados brutos coletados sobre a media, a mediana e a moda, abaixo iremos detalhar mais e assim visualizar cada cenário de forma particular.

6) Qual média paga pelas Bolsas?

    AC$region <- media_por_estado[media_por_estado$Estado == "AC",]$Media
    AL$region <- media_por_estado[media_por_estado$Estado == "AL",]$Media
    AM$region <- media_por_estado[media_por_estado$Estado == "AM",]$Media
    AP$region <- media_por_estado[media_por_estado$Estado == "AP",]$Media
    BA$region <- media_por_estado[media_por_estado$Estado == "BA",]$Media
    CE$region <- media_por_estado[media_por_estado$Estado == "CE",]$Media
    DF$region <- media_por_estado[media_por_estado$Estado == "DF",]$Media
    ES$region <- media_por_estado[media_por_estado$Estado == "ES",]$Media
    GO$region <- media_por_estado[media_por_estado$Estado == "GO",]$Media
    MA$region <- media_por_estado[media_por_estado$Estado == "MA",]$Media
    MG$region <- media_por_estado[media_por_estado$Estado == "MG",]$Media
    MS$region <- media_por_estado[media_por_estado$Estado == "MS",]$Media
    MT$region <- media_por_estado[media_por_estado$Estado == "MT",]$Media
    PA$region <- media_por_estado[media_por_estado$Estado == "PA",]$Media
    PB$region <- media_por_estado[media_por_estado$Estado == "PB",]$Media
    PE$region <- media_por_estado[media_por_estado$Estado == "PE",]$Media
    PI$region <- media_por_estado[media_por_estado$Estado == "PI",]$Media
    PR$region <- media_por_estado[media_por_estado$Estado == "PR",]$Media
    RJ$region <- media_por_estado[media_por_estado$Estado == "RJ",]$Media
    RN$region <- media_por_estado[media_por_estado$Estado == "RN",]$Media
    RO$region <- media_por_estado[media_por_estado$Estado == "RO",]$Media
    RR$region <- media_por_estado[media_por_estado$Estado == "RR",]$Media
    RS$region <- media_por_estado[media_por_estado$Estado == "RS",]$Media
    SC$region <- media_por_estado[media_por_estado$Estado == "SC",]$Media
    SE$region <- media_por_estado[media_por_estado$Estado == "SE",]$Media
    SP$region <- media_por_estado[media_por_estado$Estado == "SP",]$Media
    TO$region <- media_por_estado[media_por_estado$Estado == "TO",]$Media
    
    
    dat <- rbind(AC,AL,AM,AP,BA,CE,DF,ES,GO,MA,MG,MS,MT,PA,PB,PE,PI,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO)
            

    ggplot() + 
      theme_void()+ 
      labs(title="Valores medios das bolsas por Estado", fill="Media das bolsas")+
      geom_sf(data = dat,colour = "white",aes(fill=region))+
      scale_fill_gradient()

No cenário acima, a média trás uma perspectiva limitada dos dados o que a primeira vista pode enganar olhares desatentos, contudo, nesse contexto há grandes bolsas para fomentos de pesquisas e isso impulsiona a média para cima, o que não significa que a maioria dos pesquisadores recebam valores em torno de 15 mil reais. Visando solucionar vamos ver as próximas perspectivas, vamos plotar abaixo a mediana.

7) Qual a mediana paga?

    #Utilizamos os dados calculados na tabela

    AC$region <- media_por_estado[media_por_estado$Estado == "AC",]$Mediana
    AL$region <- media_por_estado[media_por_estado$Estado == "AL",]$Mediana
    AM$region <- media_por_estado[media_por_estado$Estado == "AM",]$Mediana
    AP$region <- media_por_estado[media_por_estado$Estado == "AP",]$Mediana
    BA$region <- media_por_estado[media_por_estado$Estado == "BA",]$Mediana
    CE$region <- media_por_estado[media_por_estado$Estado == "CE",]$Mediana
    DF$region <- media_por_estado[media_por_estado$Estado == "DF",]$Mediana
    ES$region <- media_por_estado[media_por_estado$Estado == "ES",]$Mediana
    GO$region <- media_por_estado[media_por_estado$Estado == "GO",]$Mediana
    MA$region <- media_por_estado[media_por_estado$Estado == "MA",]$Mediana
    MG$region <- media_por_estado[media_por_estado$Estado == "MG",]$Mediana
    MS$region <- media_por_estado[media_por_estado$Estado == "MS",]$Mediana
    MT$region <- media_por_estado[media_por_estado$Estado == "MT",]$Mediana
    PA$region <- media_por_estado[media_por_estado$Estado == "PA",]$Mediana
    PB$region <- media_por_estado[media_por_estado$Estado == "PB",]$Mediana
    PE$region <- media_por_estado[media_por_estado$Estado == "PE",]$Mediana
    PI$region <- media_por_estado[media_por_estado$Estado == "PI",]$Mediana
    PR$region <- media_por_estado[media_por_estado$Estado == "PR",]$Mediana
    RJ$region <- media_por_estado[media_por_estado$Estado == "RJ",]$Mediana
    RN$region <- media_por_estado[media_por_estado$Estado == "RN",]$Mediana
    RO$region <- media_por_estado[media_por_estado$Estado == "RO",]$Mediana
    RR$region <- media_por_estado[media_por_estado$Estado == "RR",]$Mediana
    RS$region <- media_por_estado[media_por_estado$Estado == "RS",]$Mediana
    SC$region <- media_por_estado[media_por_estado$Estado == "SC",]$Mediana
    SE$region <- media_por_estado[media_por_estado$Estado == "SE",]$Mediana
    SP$region <- media_por_estado[media_por_estado$Estado == "SP",]$Mediana
    TO$region <- media_por_estado[media_por_estado$Estado == "TO",]$Mediana
    
    
    dat <- rbind(AC,AL,AM,AP,BA,CE,DF,ES,GO,MA,MG,MS,MT,PA,PB,PE,PI,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO)
            

    ggplot() + 
      theme_void()+ 
      labs(title="Medianas dos valores das bolsas por Estado", fill="Mediana das bolsas")+
      geom_sf(data = dat,colour = "white",aes(fill=region))+
      scale_fill_gradient()

Essa nova visão dos valores das medianas nos fornece um escopo diferente, com valores muito menores quando comparados à média, os quais chegam no máximo a está por volta de cinco mil reais, contudo temos que ressaltar que diversos estados estão abaixo de três mil e quinhentos reais anuais. Além disso, alguns estados mudaram de classificação se deslocando para o conjunto com valores mais baixos, o que pode estar sinalizando uma possível concentração de bolsas com maiores valores em um conjunto restrito de estados, ou como também a existência de possíveis programas de fomento supervalorizados.

8) Qual o valor mais comum, também conhecido como moda, que é recebido pelos bolsistas?

    #Utilizamos os dados calculados na tabela

    AC$region <- media_por_estado[media_por_estado$Estado == "AC",]$Moda
    AL$region <- media_por_estado[media_por_estado$Estado == "AL",]$Moda
    AM$region <- media_por_estado[media_por_estado$Estado == "AM",]$Moda
    AP$region <- media_por_estado[media_por_estado$Estado == "AP",]$Moda
    BA$region <- media_por_estado[media_por_estado$Estado == "BA",]$Moda
    CE$region <- media_por_estado[media_por_estado$Estado == "CE",]$Moda
    DF$region <- media_por_estado[media_por_estado$Estado == "DF",]$Moda
    ES$region <- media_por_estado[media_por_estado$Estado == "ES",]$Moda
    GO$region <- media_por_estado[media_por_estado$Estado == "GO",]$Moda
    MA$region <- media_por_estado[media_por_estado$Estado == "MA",]$Moda
    MG$region <- media_por_estado[media_por_estado$Estado == "MG",]$Moda
    MS$region <- media_por_estado[media_por_estado$Estado == "MS",]$Moda
    MT$region <- media_por_estado[media_por_estado$Estado == "MT",]$Moda
    PA$region <- media_por_estado[media_por_estado$Estado == "PA",]$Moda
    PB$region <- media_por_estado[media_por_estado$Estado == "PB",]$Moda
    PE$region <- media_por_estado[media_por_estado$Estado == "PE",]$Moda
    PI$region <- media_por_estado[media_por_estado$Estado == "PI",]$Moda
    PR$region <- media_por_estado[media_por_estado$Estado == "PR",]$Moda
    RJ$region <- media_por_estado[media_por_estado$Estado == "RJ",]$Moda
    RN$region <- media_por_estado[media_por_estado$Estado == "RN",]$Moda
    RO$region <- media_por_estado[media_por_estado$Estado == "RO",]$Moda
    RR$region <- media_por_estado[media_por_estado$Estado == "RR",]$Moda
    RS$region <- media_por_estado[media_por_estado$Estado == "RS",]$Moda
    SC$region <- media_por_estado[media_por_estado$Estado == "SC",]$Moda
    SE$region <- media_por_estado[media_por_estado$Estado == "SE",]$Moda
    SP$region <- media_por_estado[media_por_estado$Estado == "SP",]$Moda
    TO$region <- media_por_estado[media_por_estado$Estado == "TO",]$Moda
    
    
    dat <- rbind(AC,AL,AM,AP,BA,CE,DF,ES,GO,MA,MG,MS,MT,PA,PB,PE,PI,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO)
            

    ggplot() + 
      theme_void()+ 
      labs(title="Valores das bolsas mais frequentes por Estado", fill="Valor mais frequente")+
      geom_sf(data = dat,colour = "white",aes(fill=region))+
      scale_fill_gradient()

Capitais e Oportunidades

Quando tratamos mais especificamente da distribuição das bolsas entre as cidades de cada estado, podemos verificar a porporcionalidade das bolsas das capitais quando comparadas as demais cidades, o intuito é verificar onde há a maior concentração de numero de bolsa, e se as capitais são responsãveis pontos concentração dessas bolsas de fomento.

# Qual a cidade com maior quantidade de bolsas por estado?
    
    sigla_estados = c("AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS",
                      "MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO")
    
    resposta <- data.frame()
    
    for(sigla in sigla_estados){
      relatorio_do_estados <-  relatorio_2023[which(relatorio_2023$SIGLA_UF_DESTINO==sigla),]
      cidades_destino <- levels(factor(relatorio_do_estados$CIDADE_DESTINO))
      #print(cidades_destino)
      bolsas_por_cidade <- c()
      for(cidade in cidades_destino){
        #print(cidade)
        relatorio_por_cidade <- relatorio_do_estados[which(relatorio_do_estados$CIDADE_DESTINO==cidade),]
        bolsas_por_cidade <- c(bolsas_por_cidade,nrow(relatorio_por_cidade))
        #print(sprintf("%s %d",sigla,numero_de_bolsas))
      }
      #print(bolsas_por_cidade)
      #nome_Estado <- c(paste(replicate(as.numeric(length(cidades_destino)), sigla)))
      data_cidades <- data.frame("Estado"= sigla,
                                 "Cidade com mais bolsas" = cidades_destino[which(bolsas_por_cidade==max(bolsas_por_cidade))],
                                 "Quantidade_de_Bolsas" = max(bolsas_por_cidade),
                                 "Quantidade_totais_de_Bolsas" = sum(bolsas_por_cidade))
      #View(data_cidades)
      if(length(resposta)==0){
        resposta <- data_cidades
      }else{
        resposta <- rbind(resposta,data_cidades)
      }
    }
   
    resposta%>%
    kbl() %>%
    scroll_box(width = "100%", height = "350px",fixed_thead = list(enabled = T,background="anycolor"))%>%
    kable_material_dark()
Estado Cidade.com.mais.bolsas Quantidade_de_Bolsas Quantidade_totais_de_Bolsas
AC Rio Branco 347 349
AL Maceio 1552 1599
AM Manaus 1820 1930
AP Macapa 497 497
BA Salvador 3918 5949
CE Fortaleza 3796 4536
DF Brasilia 16741 16741
ES Vitoria 1664 1915
GO Goiania 2801 3449
MA Sao Luis 1396 1496
MG Belo Horizonte 5769 14896
MS Campo Grande 1627 2402
MT Cuiaba 1559 2175
PA Belem 3336 3982
PB Joao Pessoa 2559 4468
PE Recife 5884 6600
PI Teresina 1320 1440
PR Curitiba 4592 9253
RJ Rio de Janeiro 27746 32456
RN Natal 2685 3561
RO Porto Velho 586 612
RR Boa Vista 360 371
RS Porto Alegre 6522 13698
SC Florianopolis 4472 6139
SE Sao Cristovao 1042 1782
SP Sao Paulo 16194 31074
TO Palmas 641 764
    AC$region <- paste(resposta[resposta$Estado == "AC",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "AC",]$Quantidade_totais_de_Bolsas,sep="")
    AL$region <- paste(resposta[resposta$Estado == "AL",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "AL",]$Quantidade_totais_de_Bolsas,sep="")
    AM$region <- paste(resposta[resposta$Estado == "AM",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "AM",]$Quantidade_totais_de_Bolsas,sep="")
    AP$region <- paste(resposta[resposta$Estado == "AP",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "AP",]$Quantidade_totais_de_Bolsas,sep="")
    BA$region <- paste(resposta[resposta$Estado == "BA",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "BA",]$Quantidade_totais_de_Bolsas,sep="")
    CE$region <- paste(resposta[resposta$Estado == "CE",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "CE",]$Quantidade_totais_de_Bolsas,sep="")
    DF$region <- paste(resposta[resposta$Estado == "DF",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "DF",]$Quantidade_totais_de_Bolsas,sep="")
    ES$region <- paste(resposta[resposta$Estado == "ES",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "ES",]$Quantidade_totais_de_Bolsas,sep="")
    GO$region <- paste(resposta[resposta$Estado == "GO",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "GO",]$Quantidade_totais_de_Bolsas,sep="")
    MA$region <- paste(resposta[resposta$Estado == "MA",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "MA",]$Quantidade_totais_de_Bolsas,sep="")
    MG$region <- paste(resposta[resposta$Estado == "MG",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "MG",]$Quantidade_totais_de_Bolsas,sep="")
    MS$region <- paste(resposta[resposta$Estado == "MS",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "MS",]$Quantidade_totais_de_Bolsas,sep="")
    MT$region <- paste(resposta[resposta$Estado == "MT",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "MT",]$Quantidade_totais_de_Bolsas,sep="")
    PA$region <- paste(resposta[resposta$Estado == "PA",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "PA",]$Quantidade_totais_de_Bolsas,sep="")
    PB$region <- paste(resposta[resposta$Estado == "PB",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "PB",]$Quantidade_totais_de_Bolsas,sep="")
    PE$region <- paste(resposta[resposta$Estado == "PE",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "PE",]$Quantidade_totais_de_Bolsas,sep="")
    PI$region <- paste(resposta[resposta$Estado == "PI",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "PI",]$Quantidade_totais_de_Bolsas,sep="")
    PR$region <- paste(resposta[resposta$Estado == "PR",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "PR",]$Quantidade_totais_de_Bolsas,sep="")
    RJ$region <- paste(resposta[resposta$Estado == "RJ",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "RJ",]$Quantidade_totais_de_Bolsas,sep="")
    RN$region <- paste(resposta[resposta$Estado == "RN",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "RN",]$Quantidade_totais_de_Bolsas,sep="")
    RO$region <- paste(resposta[resposta$Estado == "RO",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "RO",]$Quantidade_totais_de_Bolsas,sep="")
    RR$region <- paste(resposta[resposta$Estado == "RR",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "RR",]$Quantidade_totais_de_Bolsas,sep="")
    RS$region <- paste(resposta[resposta$Estado == "RS",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "RS",]$Quantidade_totais_de_Bolsas,sep="")
    SC$region <- paste(resposta[resposta$Estado == "SC",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "SC",]$Quantidade_totais_de_Bolsas,sep="")
    SE$region <- paste(resposta[resposta$Estado == "SE",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "SE",]$Quantidade_totais_de_Bolsas,sep="")
    SP$region <- paste(resposta[resposta$Estado == "SP",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "SP",]$Quantidade_totais_de_Bolsas,sep="")
    TO$region <- paste(resposta[resposta$Estado == "TO",]$Quantidade_de_Bolsas,"/",
                       resposta[resposta$Estado == "TO",]$Quantidade_totais_de_Bolsas,sep="")
    
    
    dat <- rbind(AC,AL,AM,AP,BA,CE,DF,ES,GO,MA,MG,MS,MT,PA,PB,PE,PI,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO)
            

    ggplot() + 
      theme_void()+ 
      labs(title="Distribuição de bolsas", fill="Bolsas nas Capitais / Quantidade Total")+
      geom_sf(data = dat,colour = "white",aes(fill=region))+
      scale_fill_discrete()

Conclusão

Segundo o DIESSE, podemos atualmente considerar o custo de vida no Brasil em média por voltar de R$ 6.641,00 por mês em janeiro de 2023, mesmo havendo variação de acordo com a região. Vale ressaltar que nesse calculo é incluido a alimentação, moradia, transporte, saúde e outras despesas básicas. Logo, ao analizar as diversas visualizações dos dados obtidos nesse projeto, é possível supor que os valores das bolsas pagas anualmente não atendem ao custo de vida minimo do estudante, pesquisador brasileiro. O Rio de Janeiro, é o estado que possui o valor de fomento mais precarizado, pois o valor pago mais comum é de apenas setecentos reais. Os demais estados da federação possuem esses valores mais aproximados, girando em volta de dois mil e oitocentos reais anuais, contudo, ao olharmos mais atentamente a bolsa seria em torno de duzentos e trinta reais mensais, evidenciando assim a defasagem do atual momento de fomento a pesquisa e desenvolvimento científico e o custo de vida dos pesquisadores e estudantes. É fundamental a criação de um projeto governamental para aumento do orçamento disponível e que órgãos responsáveis pela distribuição do fomento continuem cada dia mais a considar o custo real de vida real ao definir valores para as bolsas, garantindo assim o aumento do desenvolvimento da pesquisa no país, a diminuição da evação devido a jornadas duplas dos estudantes, entre pesquisa e trabalho, como também influenciará no bem-estar do pesquisador, e que possam evitar a distribuição de bolsas não seja massivamente concentrada nas capitais do país.