Objetivo: O objetivo do estudo é verificar se existe correlação entre a produção de aplicativos e a diversidade de formação de professores de programas de pós gradução brasileiros.

Hipótese: A diversidade de formação esta correlacionada com a produção de aplicação em um recorte temporal de 2013 até 2016.

Recorte de análise: Todos os programas que produziram ao 1 aplicativo de 2013 até 2016.

Contexto dos programas brazileiros de pós gradução: Quantos programas existiam em 2016 por (GRÁFICO), Por Instituição público e privada, Por grande área, por conceito.

Contexto dos programas que produzem aplicativos: Por Estado, Por Instituição público e privada, Por grande área,por conceito, Nuvem de termos DS_FINALIDADE (TODOS GRÁFICOS).

Importar dados

Os dados são provenientes das seguintes fonte:

  1. Data from Lattes Platform - Extract by Instituto Stela
  2. Data from Sucupira Platform

Abaixo o código para importar os dados que estão em formato CSV.

  1. A variável Apps recebe os dados dos aplicativos a partir do ano 2013 até 2016.
  2. A variável Professores recebe os dados dos docentes em todo o período de existência dos cursos
  3. A variável Graduate_2016 recebe os dados dos programas de pós graduação de todos os programas até o ano de 2016.
#Import Data
library(readr)

setwd("~/Artigo-da-tese-de-vivian-master2")

Apps <- read_delim("Dados dos aplicativos 2013-2016.csv",";",escape_double = FALSE, trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   CD_CONCEITO_PROGRAMA = col_double(),
##   AN_BASE_PRODUCAO = col_double(),
##   ID_ADD_PRODUCAO_INTELECTUAL = col_double(),
##   ID_TIPO_PRODUCAO = col_double(),
##   ID_SUBTIPO_PRODUCAO = col_double(),
##   IN_GLOSA = col_double()
## )
## See spec(...) for full column specifications.
Professors <- read_delim("Docentes.csv", ";", escape_double = FALSE, trim_ws = TRUE)
## Warning: Missing column names filled in: 'X32' [32]
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   seq_pessoa_fisica = col_double(),
##   seq_area_basica = col_double(),
##   nro_nota_doutorado = col_double(),
##   nro_nota_mestrado = col_double(),
##   nro_nota_mestrado_prof = col_double(),
##   seq_tipo_categoria_vinculo = col_double(),
##   ano_inicio_formacao = col_double(),
##   ano_fim_formacao = col_double(),
##   cod_area_curso_formacao = col_double(),
##   X32 = col_logical()
## )
## See spec(...) for full column specifications.
## Warning: 6 parsing failures.
##    row                     col           expected                                 actual           file
## 137219 cod_area_curso_formacao a double           Engenharia de produtos Naturais        'Docentes.csv'
## 137219 X32                     1/0/T/F/TRUE/FALSE Engenharia de Materiais e Metalúrgica 'Docentes.csv'
## 137220 cod_area_curso_formacao a double           Engenharia de produtos Naturais        'Docentes.csv'
## 137220 X32                     1/0/T/F/TRUE/FALSE Engenharia de Materiais e Metalúrgica 'Docentes.csv'
## 137221 cod_area_curso_formacao a double           Engenharia de produtos Naturais        'Docentes.csv'
## ...... ....................... .................. ...................................... ..............
## See problems(...) for more details.
Graduate_2016 <- read_delim("Programas PPG 2016.csv",";", escape_double = FALSE, trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   AN_BASE = col_double(),
##   CD_AREA_AVALIACAO = col_double(),
##   CD_CONCEITO_PROGRAMA = col_double(),
##   ANO_INICIO_PROGRAMA = col_double(),
##   ID_ADD_FOTO_PROGRAMA_IES = col_double(),
##   ID_ADD_FOTO_PROGRAMA = col_double()
## )
## See spec(...) for full column specifications.

Organização e limpeza dos dados

Essas são as variáveis e funções criadas para realizar a limpeza e organização dos dados

Funções

  1. Desenvolvidas funções para transformar variáveis em tabelas - função .Unianalysis
  2. Função para gráfico FunPlot

Processo de organização de dados

  1. Variável Area_Form_Prof_prog: Tabulação de quantidade de área de formação por programa.

  2. Variável Perm_Prof_prog: Tabulação de quatidade de professores por programas. Filtra somente os professores permanentes.

  3. Variável Tidy_frame: Concatena as variáveis 1 e 2.

  4. Variável App_prog: Tabulação dos aplicativos por programa.

  5. Variável Tidy_frame2: Concatena Aplicativos com as variáveis anteriores.

  6. Variável Metric_frame: Calcula as métricas da tese da Vivian: 6.1: Div_Prof_Perm: Diversidade de formação dos professores permanentes (DFPP); 6.2: Prod_App_prof: Produtividade de aplicativo por professores permanentes (PAPP).

  7. Variável Metric_frame2: concatena todas as variáveis anteriores com os metadados dos programas de pós-graduação. 7.1 Foi verificado que só ha um nível nesta variável (Em funcionamento). Há diversas linhas sem dado. Verificar como tratar isso.

# Function
# Transform vector into a data frame with frequency of levels and proportion
.Unianalysis = function (x) {
    y <- as.data.frame(as.table(table(x)))
    y <- mutate(y, proportion = prop.table(y$Freq) *100)#Proportion
    y <- arrange(y, desc(y$Freq))
return(y)
}

#1. Area of Professors per program        
Area_Form_Prof_prog <-
         Professors %>% 
        filter(seq_tipo_categoria_vinculo == 3)%>%
        group_by(cod_programa) %>%
        summarise(Area_Formacao_Prof = n_distinct(area_curso_formacao)) %>%
        arrange(desc(Area_Formacao_Prof))
dim(Area_Form_Prof_prog )
## [1] 3867    2
DT::datatable(Area_Form_Prof_prog)
#2. Permanents Professors per Program        
Perm_Prof_prog <-
        Professors %>%
        filter(seq_tipo_categoria_vinculo == 3)%>%
        group_by(cod_programa) %>%
        summarise(Professores_Perm = n_distinct(nro_id_cnpq)) %>%
        arrange(desc(Professores_Perm))
dim(Perm_Prof_prog)
## [1] 3867    2
DT::datatable(Perm_Prof_prog)
#3. Une codigo de programas com quantidade de professores e quantidade de área de formação
Tidy_frame <- merge(Perm_Prof_prog, Area_Form_Prof_prog, all = TRUE)
dim(Tidy_frame)
## [1] 3867    3
DT::datatable(Tidy_frame)
#4. Apps per program        
App_prog <-
         Apps %>%
        group_by(CD_PROGRAMA_IES)%>%
        summarise(Apps = n_distinct(ID_ADD_PRODUCAO_INTELECTUAL)) %>%
        arrange(desc(Apps))
dim(App_prog)
## [1] 1126    2
DT::datatable(App_prog)
#5. Concatena Aplicativos com as variáveis anteriores
Tidy_frame2 <- merge(App_prog, Tidy_frame, by.x="CD_PROGRAMA_IES", by.y="cod_programa", all = TRUE)
DT::datatable(Tidy_frame2)
## 6. Variável Calcula as métricas da tese da Vivian
  ## Div_Prof_Perm: Diversidade de formação dos professores permanentes (DFPP)
  ## Prod_App_prof: Produtividade de aplicativo por professores permanentes (PAPP)
Metric_frame <-
            Tidy_frame2 %>%
            group_by(CD_PROGRAMA_IES) %>%
            mutate(Div_Prof_Perm = Area_Formacao_Prof / Professores_Perm, 
                   Prod_App_prof = Apps / Professores_Perm)
 dim(Metric_frame)
## [1] 4011    6
 DT::datatable(Metric_frame)
## 7. Variável concatena todas as variáveis anteriores com os metadados dos programas de pós-graduação
Metric_frame2 <- merge(Metric_frame, 
                       Graduate_2016, 
                       by ="CD_PROGRAMA_IES", all = TRUE)
 dim(Metric_frame2)
## [1] 4387   35
DT::datatable(Metric_frame2)
## Warning in instance$preRenderHook(instance): It seems your data is too
## big for client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html

Vizualização do contexto dos programas de pós-graduação

Contexto Socio-Geográfico

Os graficos e tabelas a seguir apresentam o contexto dos programas de pós graduação no Brasil, em uma perspectiva geográfica.

  1. Variável Regiao_hab_prog e gráfico: apresenta a distribuição dos programas de pós-graduação no Brasil por região. A tabela apresenta também os dados dos habitantes por região (Habitantes_p_Regiao), retirado do site https://www.ibge.gov.br/estatisticas/sociais/populacao/17374-indicadores-sociais-minimos.html?=&t=resultados.

  2. Variável UF_prog, gráfico e tabela: Quantidade de programas de pós-graduação no Brasil por Estado

#Funções para gráficos

#Fun Plot
.Plot_FunPlot = function(x,y) {
  fan.plot(x$Freq,
           max.span=pi,
           labels=paste(x$x, x$Freq, sep=": "),
            main=y,ticks=360)
}
# Painel contexto - Região, habitantes por região, programas por região, programas por habitantes por região

#1. Graduate per Region
Regiao_prog  <-.Unianalysis(Metric_frame2$NM_REGIAO)

Regiao_hab_prog <- mutate(Regiao_prog,
                          Habitantes_p_Regiao = rbind(12342627, 11296224, 46995094, 24546983, 70190565))

Regiao_hab_prog <- mutate(Regiao_hab_prog, prop_Habitantes_p_Regiao =           prop.table(Regiao_hab_prog$Habitantes_p_Regiao) * 100 )

DT::datatable(Regiao_hab_prog)
x <- barplot(Regiao_hab_prog$proportion,
        names.arg= Regiao_hab_prog$x,
        ylab="Percentual",
        ylim = c(0, 50),
        las = 2,
        col=rainbow(8),
        main="Proporção de PPG por região e habi. por região",border="red")
lines(x, Regiao_hab_prog$prop_Habitantes_p_Regiao, ylim= c(0,100))
points(x, Regiao_hab_prog$prop_Habitantes_p_Regiao, ylim= c(0,100))

x
##      [,1]
## [1,]  0.7
## [2,]  1.9
## [3,]  3.1
## [4,]  4.3
## [5,]  5.5
#2. Graduate per State
UF_prog <- .Unianalysis(Metric_frame2$SG_UF_PROGRAMA)
barplot(UF_prog$Freq,
        names.arg=UF_prog$x,
        xlab="Estados brasileiros",
        ylab="Quantidade de programas",
        ylim = c(0, 1000),
        las = 2,
        col=rainbow(8),
        main="5. Programas de Pós Graduação por Estado",border="red")

## 1.2 Tabela de programas por Estado
DT::datatable(UF_prog)

Contexto das variáveis dos programas de pós-graduação no Brasil

  1. Variável Pub_Priv_prog e gráfico: Quantidade de programas de pós-graduação no Brasil por instituição pública e privada.

  2. Variável Tipo_prog e gráfico: Quantidade de programas de pós-graduação no Brasil por Tipo.

  3. Variável Conceito_prog e gráfico: Quantidade de programas de pós-graduação no Brasil por conceito CAPES.

  4. Variável Area_Avalia_prog e tabela: apresenta a distribuição dos programas de pós-graduação no Brasil por área de avaliação da Capes.

  5. Variável Ano_prog e tabela: apresenta a distribuição dos programas de pós-graduação no Brasil por no de início do programa.

#1. Graduate per Public or Private
Pub_Priv_prog  <-.Unianalysis(Metric_frame2$DS_DEPENDENCIA_ADMINISTRATIVA)
.Plot_FunPlot(Pub_Priv_prog, "2. Programa por insti. Publica ou Privada")

#2.  per Type
Tipo_prog <-.Unianalysis(Metric_frame2$NM_GRAU_PROGRAMA)
barplot(Tipo_prog$Freq,
        names.arg=paste(as.integer(Tipo_prog$proportion), "%"),
        xlab="Percentual",
        ylab="Quantidade de programas",
        legend=Tipo_prog$x,
        col=rainbow(8),
        main="3. Programas de Pós Graduação por tipo",border="red")

#3. Graduate per Capes Score
Conceito_prog <- .Unianalysis(Metric_frame2$CD_CONCEITO_PROGRAMA)
barplot(Conceito_prog$Freq,
        names.arg=Conceito_prog$x, 
        xlab="Conceito Capes",
        ylab="Quantidade de programas",
        legend= paste(as.integer(Conceito_prog$proportion), "%"),
        ylim = c(0, 2000),
        col=rainbow(8),
        main="4. Programas de Pós Graduação por Conceito Capes",border="red")

#4. Graduate per field
Area_Avalia_prog <- .Unianalysis(Metric_frame2$NM_AREA_AVALIACAO)
DT::datatable(Area_Avalia_prog)
#5. Programa por ano
Ano_prog <- .Unianalysis(Metric_frame2$ANO_INICIO_PROGRAMA)
Ano_prog <- arrange(Ano_prog, desc(Ano_prog$Freq))
DT::datatable(Ano_prog)

Professors and Apps

Falta documentar e colocar nos graficos

#Graduate Diversity and Apps production indicators per field
Ano_inicio_prog<-Metric_frame2 %>%
            group_by(ANO_INICIO_PROGRAMA) %>%
            summarise(Prodessores_Perm = sum(Professores_Perm),
                      Prod_App_prof = sum(Prod_App_prof),
                      Div_Prof_Perm = sum(Div_Prof_Perm))%>%
            arrange(ANO_INICIO_PROGRAMA)
DT::datatable(Ano_inicio_prog)
Conceito_prog<-Metric_frame2 %>%
            group_by(CD_CONCEITO_PROGRAMA) %>%
            summarise(media_Div_Prof_Perm = mean(Div_Prof_Perm),
                      media_Prod_App_prof = mean(Prod_App_prof))%>%
            arrange(CD_CONCEITO_PROGRAMA) 
DT::datatable(Conceito_prog)
Area_prog<-Metric_frame2 %>%
            group_by(NM_AREA_CONHECIMENTO) %>%
            summarise(media_Div_Prof_Perm = mean(Div_Prof_Perm),
                      media_Prod_App_prof = mean(Prod_App_prof))%>%
            arrange(NM_AREA_CONHECIMENTO)       
DT::datatable(Area_prog)
par(mfrow=c(2,2))

Média - Professors and Apps

Falta documentar e colocar nos graficos

Ver gráficos http://rstudio-pubs-static.s3.amazonaws.com/333174_2dd6bca1e4cc43159f088229bb76633e.html

#Histogram
histogram=function(x){
  hist(x,prob=T)
  lines(density(x),col="red")
  curve(dnorm(x,mean(x), sd(x)),add=T,col="blue")
}

## Diversity and Apps production indicators

#Graduate Diversity and Apps production indicators per field
Ano_inicio_prog<-Metric_frame2 %>%
            group_by(ANO_INICIO_PROGRAMA) %>%
            summarise(media_Div_Prof_Perm = mean(Div_Prof_Perm),
                      media_Prod_App_prof = mean(Prod_App_prof))%>%
            arrange(ANO_INICIO_PROGRAMA)       
DT::datatable(Ano_inicio_prog)
Conceito_prog<-Metric_frame2 %>%
            group_by(CD_CONCEITO_PROGRAMA) %>%
            summarise(media_Div_Prof_Perm = mean(Div_Prof_Perm),
                      media_Prod_App_prof = mean(Prod_App_prof))%>%
            arrange(CD_CONCEITO_PROGRAMA)  
DT::datatable(Ano_inicio_prog)
Area_prog<-Metric_frame2 %>%
            group_by(NM_AREA_CONHECIMENTO) %>%
            summarise(soma_Div_Prof_Perm = sum(Div_Prof_Perm),
                      soma_Prod_App_prof = sum(Prod_App_prof))%>%
            arrange(NM_AREA_CONHECIMENTO)     
DT::datatable(Area_prog)
Regiao_prog<-Metric_frame2 %>%
            group_by(NM_REGIAO) %>%
            summarise(soma_Div_Prof_Perm = sum(Div_Prof_Perm),
                      soma_Prod_App_prof = sum(Prod_App_prof))%>%
            arrange(NM_REGIAO)     
DT::datatable(Area_prog)