1 Introdução

INDICADORES DE PERCEPÇÃO DO ENADE E SUA CORRELAÇÃO COM A TAXA DE SUCESSO DO ESTUDANTE EM INSTITUIÇÕES DE ENSINO SUPERIOR

Este projeto R é disponibilizado para a comunidade como suporte a publicação do artigo realizado atráves dos workshops de escrita científica da USCS, em 2021, com publicação final em:

O projeto passará pelas etapas de importação dos microdados do censo do ensino superior 2019, planilha final de resultados do CPC-ENADE , tratamento dos dados, junção e calculos, culminando nas análises apresentadas.

O intuito da publicação é permitir ao pesquisador reproduzir, até para outras amostras, o resultado obtido.

Boa leitura.

2 Importação

2.1 Censo Superior 2019

Importação dos microdados do censo do ensino superior 2019. Faça o download em: https://download.inep.gov.br/microdados/microdados_educacao_superior_2019.zip.

O arquivo contém as seguintes bases (CSV) que iremos importar :

  • SUP_IES_2019.CSV
  • SUP_CURSO_2019.CSV
  • SUP_ALUNO_2019.CSV

2.1.1 Instituições - IES

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
library(readr)
library(dplyr)

Importação do arquivo relativo ao registro das IES em 2019

#importa já qualificando as variáveis
BaseIES = read_delim("./raw-data/SUP_IES_2019.CSV", 
                     "|", 
                     escape_double = FALSE, 
                     col_types = cols(NU_ANO_CENSO= col_integer(),
                                      CO_IES = col_integer(),
                                      NO_IES = col_character(),
                                      SG_IES = col_character(),
                                      CO_MANTENEDORA = col_integer(),
                                      NO_MANTENEDORA = col_character(),
                                      TP_CATEGORIA_ADMINISTRATIVA = col_integer(),
                                      TP_ORGANIZACAO_ACADEMICA = col_integer(),
                                      CO_REGIAO = col_integer(),
                                      CO_UF = col_integer(),
                                      CO_MUNICIPIO = col_integer(),
                                      IN_CAPITAL = col_integer(),
                                      QT_TEC_TOTAL = col_integer(),
                                      QT_TEC_FUNDAMENTAL_INCOMP_FEM = col_integer(),
                                      QT_TEC_FUNDAMENTAL_INCOMP_MASC = col_integer(),
                                      QT_TEC_FUNDAMENTAL_COMP_FEM = col_integer(),
                                      QT_TEC_FUNDAMENTAL_COMP_MASC = col_integer(),
                                      QT_TEC_MEDIO_FEM = col_integer(),
                                      QT_TEC_MEDIO_MASC = col_integer(),
                                      QT_TEC_SUPERIOR_FEM = col_integer(),
                                      QT_TEC_SUPERIOR_MASC = col_integer(),
                                      QT_TEC_ESPECIALIZACAO_FEM = col_integer(),
                                      QT_TEC_ESPECIALIZACAO_MASC = col_integer(),
                                      QT_TEC_MESTRADO_FEM = col_integer(),
                                      QT_TEC_MESTRADO_MASC = col_integer(),
                                      QT_TEC_DOUTORADO_FEM = col_integer(),
                                      QT_TEC_DOUTORADO_MASC = col_integer(),
                                      IN_ACESSO_PORTAL_CAPES = col_integer(),
                                      IN_ACESSO_OUTRAS_BASES = col_integer(),
                                      IN_ASSINA_OUTRA_BASE = col_integer(),
                                      IN_REPOSITORIO_INSTITUCIONAL = col_integer(),
                                      IN_BUSCA_INTEGRADA = col_integer(),
                                      IN_SERVICO_INTERNET = col_integer(),
                                      IN_PARTICIPA_REDE_SOCIAL = col_integer(),
                                      IN_CATALOGO_ONLINE = col_integer(),
                                      QT_PERIODICO_ELETRONICO = col_integer(),
                                      QT_LIVRO_ELETRONICO = col_integer(),
                                      TP_REFERENTE = col_integer(),
                                      VL_RECEITA_PROPRIA = col_double(),
                                      VL_RECEITA_TRANSFERENCIA = col_double(),
                                      VL_RECEITA_OUTRA = col_double(),
                                      VL_DESPESA_PESSOAL_DOCENTE = col_double(),
                                      VL_DESPESA_PESSOAL_TECNICO = col_double(),
                                      VL_DESPESA_PESSOAL_ENCARGO = col_double(),
                                      VL_DESPESA_CUSTEIO = col_double(),
                                      VL_DESPESA_INVESTIMENTO = col_double(),
                                      VL_DESPESA_PESQUISA = col_double(),
                                      VL_DESPESA_OUTRA = col_double()), 
                      locale = locale(encoding = "ISO-8859-1"))
dim(BaseIES)
## [1] 2608   48

Tratamento dos dados, junção com a base de municípios (IBGE) e salvamento da base.

#tratando os dados e colunas não existentes
#
BaseIES = BaseIES %>% select(everything()) %>% 
  mutate(NO_CATEGORIA_ADMINISTRATIVA = case_when(
          TP_CATEGORIA_ADMINISTRATIVA == 1  ~ "PUBLICA FEDERAL",
          TP_CATEGORIA_ADMINISTRATIVA == 2  ~ "PUBLICA ESTADUAL",
          TP_CATEGORIA_ADMINISTRATIVA == 3  ~ "PUBLICA MUNICIPAL",
          TP_CATEGORIA_ADMINISTRATIVA == 4  ~ "PRIVADA COM FINS LUCRATIVOS",
          TP_CATEGORIA_ADMINISTRATIVA == 5  ~ "PRIVADA SEM FINS LUCRATIVOS",
          TP_CATEGORIA_ADMINISTRATIVA == 6  ~ "PRIVADA - PARTICULAR EM SENTIDO ESTRITO",
          TP_CATEGORIA_ADMINISTRATIVA == 7  ~ "ESPECIAL",
          TP_CATEGORIA_ADMINISTRATIVA == 8  ~ "PRIVADA COMUNITARIA",
          TP_CATEGORIA_ADMINISTRATIVA == 9  ~ "PRIVADA CONFESSIONAL"),
    
        NO_ORGANIZACAO_ACADEMICA = case_when(
          TP_ORGANIZACAO_ACADEMICA == 1  ~ "UNIVERSIDADE",
          TP_ORGANIZACAO_ACADEMICA == 2  ~ "CENTRO UNIVERSITARIO",
          TP_ORGANIZACAO_ACADEMICA == 3  ~ "FACULDADE",
          TP_ORGANIZACAO_ACADEMICA == 4  ~ "INSTITUTO FEDERAL DE EDUCACAO - CIENCIA E TECNOLOGIA",
          TP_ORGANIZACAO_ACADEMICA == 5  ~ "CENTRO FEDERAL DE EDUCACAO TECNOLOGICA"),
        
        NO_REGIAO = case_when(
          CO_REGIAO == 1  ~ "NORTE",
          CO_REGIAO == 2  ~ "NORDESTE",
          CO_REGIAO == 3  ~ "SUDESTE",
          CO_REGIAO == 4  ~ "SUL",
          CO_REGIAO == 5  ~ "CENTRO-OESTE"),
      
        )
#FAZ JOIN COM CADASTRO DE MUNICIPIOS(SUBIR DATATABLE BaseMun)
BaseMun = readRDS("./data/cad_municipios_data.rds")
dim(BaseMun)
## [1] 5570   12
BaseIES = BaseIES %>% 
  left_join(select(BaseMun, SGL_UF, DS_MESORREGIAO, DS_MICRORREGIAO, NOME_MUNICIPIO, LATITUDE, LONGITUDE, CO_MUNICIPIO), by = c("CO_MUNICIPIO" = "CO_MUNICIPIO"))
dim(BaseIES)
## [1] 2608   57
saveRDS(BaseIES, "./data/ies_2019_data.rds")                          

#liberando variáveis
rm(BaseIES)
rm(BaseMun)

2.1.2 Cursos das Instituições

Importação dos dados dos cursos das IES e criação de base de dados.

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
library(readr)
library(dplyr)

Leitura da base de dados de municípios:

BaseMun = readRDS("./data/cad_municipios_data.rds")

Importando arquivo de cursos:

BaseCurso = read_delim("./raw-data/SUP_CURSO_2019.CSV", 
                     "|", 
                     escape_double = FALSE, 
                     col_types = cols(NU_ANO_CENSO                  = col_integer(),
                                      CO_IES                            = col_integer(),
                                      TP_CATEGORIA_ADMINISTRATIVA   = col_integer(),
                                      TP_ORGANIZACAO_ACADEMICA      = col_integer(),
                                      CO_LOCAL_OFERTA               = col_integer(),
                                      CO_UF                             = col_integer(),
                                      CO_MUNICIPIO                  = col_integer(),
                                      IN_CAPITAL                        = col_integer(),
                                      CO_CURSO                      = col_integer(),
                                      NO_CURSO                      = col_character(),
                                      TP_SITUACAO                   = col_integer(),
                                      CO_CINE_ROTULO                    = col_character(),
                                      TP_GRAU_ACADEMICO                 = col_integer(),
                                      TP_MODALIDADE_ENSINO          = col_integer(),
                                      TP_NIVEL_ACADEMICO                = col_integer(),
                                      IN_GRATUITO                   = col_integer(),
                                      TP_ATRIBUTO_INGRESSO          = col_integer(),
                                      NU_CARGA_HORARIA              = col_integer(),
                                      DT_INICIO_FUNCIONAMENTO       = col_character(),
                                      DT_AUTORIZACAO_CURSO          = col_character(),
                                      IN_AJUDA_DEFICIENTE           = col_integer(),
                                      IN_MATERIAL_DIGITAL           = col_integer(),
                                      IN_MATERIAL_AMPLIADO          = col_integer(),
                                      IN_MATERIAL_TATIL                 = col_integer(),
                                      IN_MATERIAL_IMPRESSO          = col_integer(),
                                      IN_MATERIAL_AUDIO                 = col_integer(),
                                      IN_MATERIAL_BRAILLE           = col_integer(),
                                      IN_MATERIAL_LIBRAS                = col_integer(),
                                      IN_DISCIPLINA_LIBRAS          = col_integer(),
                                      IN_TRADUTOR_LIBRAS                = col_integer(),
                                      IN_GUIA_INTERPRETE                = col_integer(),
                                      IN_RECURSOS_COMUNICACAO       = col_integer(),
                                      IN_RECURSOS_INFORMATICA       = col_integer(),
                                      IN_INTEGRAL                       = col_integer(),
                                      IN_MATUTINO                   = col_integer(),
                                      IN_VESPERTINO                     = col_integer(),
                                      IN_NOTURNO                        = col_integer(),
                                      NU_INTEGRALIZACAO_INTEGRAL        = col_number(),
                                      NU_INTEGRALIZACAO_MATUTINO        = col_number(),
                                      NU_INTEGRALIZACAO_VESPERTINO  = col_number(),
                                      NU_INTEGRALIZACAO_NOTURNO         = col_number(),
                                      NU_INTEGRALIZACAO_EAD             = col_number(),
                                      IN_OFERECE_DISC_SEMI_PRES         = col_integer(),
                                      NU_PERC_CARGA_SEMI_PRES       = col_number(),
                                      IN_POSSUI_LABORATORIO             = col_integer(),
                                      QT_INSC_VAGA_NOVA_INTEGRAL        = col_integer(),
                                      QT_INSC_VAGA_NOVA_MATUTINO        = col_integer(),
                                      QT_INSC_VAGA_NOVA_VESPERTINO  = col_integer(),
                                      QT_INSC_VAGA_NOVA_NOTURNO         = col_integer(),
                                      QT_INSC_VAGA_NOVA_EAD             = col_integer(),
                                      QT_INSC_VAGA_REMAN_INTEGRAL   = col_integer(),
                                      QT_INSC_VAGA_REMAN_MATUTINO   = col_integer(),
                                      QT_INSC_VAGA_REMAN_VESPERTINO     = col_integer(),
                                      QT_INSC_VAGA_REMAN_NOTURNO        = col_integer(),
                                      QT_INSC_VAGA_REMAN_EAD            = col_integer(),
                                      QT_INSC_PROG_ESP_INTEGRAL         = col_integer(),
                                      QT_INSC_PROG_ESP_MATUTINO         = col_integer(),
                                      QT_INSC_PROG_ESP_VESPERTINO   = col_integer(),
                                      QT_INSC_PROG_ESP_NOTURNO      = col_integer(),
                                      QT_INSC_PROG_ESP_EAD          = col_integer(),
                                      QT_INSC_PRINCIPAL_INTEGRAL        = col_integer(),
                                      QT_INSC_PRINCIPAL_MATUTINO        = col_integer(),
                                      QT_INSC_PRINCIPAL_VESPERTINO  = col_integer(),
                                      QT_INSC_PRINCIPAL_NOTURNO         = col_integer(),
                                      QT_INSC_PRINCIPAL_EAD             = col_integer(),
                                      QT_INSC_OUTRA_VAGA_INTEGRAL   = col_integer(),
                                      QT_INSC_OUTRA_VAGA_MATUTINO   = col_integer(),
                                      QT_INSC_OUTRA_VAGA_VESPERTINO     = col_integer(),
                                      QT_INSC_OUTRA_VAGA_NOTURNO        = col_integer(),
                                      QT_INSC_OUTRA_VAGA_EAD            = col_integer(),
                                      QT_INSC_ANUAL_INTEGRAL            = col_integer(),
                                      QT_INSC_ANUAL_MATUTINO            = col_integer(),
                                      QT_INSC_ANUAL_VESPERTINO      = col_integer(),
                                      QT_INSC_ANUAL_NOTURNO             = col_integer(),
                                      QT_INSC_ANUAL_EAD                 = col_integer(),
                                      QT_VAGAS_NOVAS_INTEGRAL       = col_integer(),
                                      QT_VAGAS_NOVAS_MATUTINO       = col_integer(),
                                      QT_VAGAS_NOVAS_VESPERTINO         = col_integer(),
                                      QT_VAGAS_NOVAS_NOTURNO            = col_integer(),
                                      QT_VAGAS_NOVAS_EAD                = col_integer(),
                                      QT_VAGAS_REMAN_INTEGRAL       = col_integer(),
                                      QT_VAGAS_REMAN_MATUTINO       = col_integer(),
                                      QT_VAGAS_REMAN_VESPERTINO         = col_integer(),
                                      QT_VAGAS_REMAN_NOTURNO            = col_integer(),
                                      QT_VAGAS_REMAN_EAD                = col_integer(),
                                      QT_VAGAS_PROG_ESP_INTEGRAL        = col_integer(),
                                      QT_VAGAS_PROG_ESP_MATUTINO        = col_integer(),
                                      QT_VAGAS_PROG_ESP_VESPERTINO  = col_integer(),
                                      QT_VAGAS_PROG_ESP_NOTURNO         = col_integer(),
                                      QT_VAGAS_PROG_ESP_EAD             = col_integer(),
                                      QT_VAGAS_PRINCIPAL_INTEGRAL   = col_integer(),
                                      QT_VAGAS_PRINCIPAL_MATUTINO   = col_integer(),
                                      QT_VAGAS_PRINCIPAL_VESPERTINO     = col_integer(),
                                      QT_VAGAS_PRINCIPAL_NOTURNO        = col_integer(),
                                      QT_VAGAS_PRINCIPAL_EAD            = col_integer(),
                                      QT_VAGAS_OUTRAS_INTEGRAL      = col_integer(),
                                      QT_VAGAS_OUTRAS_MATUTINO      = col_integer(),
                                      QT_VAGAS_OUTRAS_VESPERTINO        = col_integer(),
                                      QT_VAGAS_OUTRAS_NOTURNO       = col_integer(),
                                      QT_VAGAS_OUTRAS_EAD           = col_integer(),
                                      QT_VAGAS_ANUAL_INTEGRAL       = col_integer(),
                                      QT_VAGAS_ANUAL_MATUTINO       = col_integer(),
                                      QT_VAGAS_ANUAL_VESPERTINO         = col_integer(),
                                      QT_VAGAS_ANUAL_NOTURNO            = col_integer(),
                                      QT_VAGAS_ANUAL_EAD                = col_integer(),
                                      QT_MATRICULA_TOTAL                = col_integer(),
                                      QT_CONCLUINTE_TOTAL           = col_integer(),
                                      QT_INGRESSO_TOTAL                 = col_integer(),
                                      QT_INGRESSO_VAGA_NOVA             = col_integer(),
                                      QT_INGRESSO_PROCESSO_SELETIVO     = col_integer(),
                                      QT_VAGA_TOTAL                     = col_integer(),
                                      QT_INSCRITO_TOTAL                 = col_integer()
                     ), 
                     locale = locale(encoding = "ISO-8859-1"))

Total de registros e dimensões:

dim(BaseCurso)
## [1] 40709   112

Tratando e Qualificando as colunas:

BaseCurso = BaseCurso %>% select(everything()) %>% 
  mutate(DS_SITUACAO = case_when(
      TP_SITUACAO == 1  ~ "EM ATIVIDADE",
      TP_SITUACAO == 2  ~ "EXTINTO",
      TP_SITUACAO == 3  ~ "EM EXTINCAO"),
    
    NO_GRAU_ACADEMICO = case_when(
      TP_GRAU_ACADEMICO == 1  ~ "BACHARELADO",
      TP_GRAU_ACADEMICO == 2  ~ "LICENCIATURA",
      TP_GRAU_ACADEMICO == 3  ~ "TECNOLOGICO",
      TP_GRAU_ACADEMICO == 4  ~ "BACHARELADO E LICENCIATURA"),
      
    NO_MODALIDADE_ENSINO = case_when(
      TP_MODALIDADE_ENSINO == 1  ~ "PRESENCIAL",
      TP_MODALIDADE_ENSINO == 2  ~ "CURSO A DISTANCIA"),
    
    NO_NIVEL_ACADEMICO = case_when(
      TP_NIVEL_ACADEMICO == 1  ~ "GRADUACAO",
      TP_NIVEL_ACADEMICO == 2  ~ "SEQUENCIAL"),
    
    NO_IN_GRATUITO = case_when(
      IN_GRATUITO == 0  ~ "NAO",
      IN_GRATUITO == 1  ~ "SIM"),
    
    NO_ATRIBUTO_INGRESSO = case_when(
      TP_ATRIBUTO_INGRESSO == 0  ~ "NORMAL",
      TP_ATRIBUTO_INGRESSO == 1  ~ "AREA BASICA DE INGRESSO",
      TP_ATRIBUTO_INGRESSO == 2  ~ "BACHARELADO OU LICENCIATURA")
  )

Join com a base de municípios:

BaseCurso = BaseCurso %>% 
  left_join(select(BaseMun, SGL_UF, DS_MESORREGIAO, DS_MICRORREGIAO, NOME_MUNICIPIO, LATITUDE, LONGITUDE, CO_MUNICIPIO), by = c("CO_MUNICIPIO" = "CO_MUNICIPIO"))

Total de registros e dimensões:

dim(BaseCurso)
## [1] 40709   124

Salvando em base de dados:

saveRDS(BaseCurso, "./data/curso_2019_data.rds")

Liberando as variáveis:

rm(BaseMun)
rm(BaseCurso)

2.1.3 Matrículas das Instituições e Cursos

Importação dos dados das matrículas dos estudantes das IES e criação de base de dados.

Carga de Bibliotecas utilizadas

# #install.packages("readr")
# #install.packages("dplyr")
# #install.packages("stringr")
library(readr)
library(dplyr)
library(stringr)

Leitura da base de dados de municípios:

BaseMun = readRDS("./data/cad_municipios_data.rds")

Importando arquivo de cursos:

BaseAluno = read_delim("./raw-data/SUP_ALUNO_2019.CSV",
"|",
escape_double = FALSE,
col_types = cols(NU_ANO_CENSO                  = col_integer(),
                 CO_IES                        = col_integer(),
                 TP_CATEGORIA_ADMINISTRATIVA   = col_integer(),
                 TP_ORGANIZACAO_ACADEMICA      = col_integer(),
                 CO_CURSO                      = col_integer(),
                 CO_CURSO_POLO                 = col_integer(),
                 TP_TURNO                      = col_integer(),
                 TP_GRAU_ACADEMICO             = col_integer(),
                 TP_MODALIDADE_ENSINO          = col_integer(),
                 TP_NIVEL_ACADEMICO            = col_integer(),
                 CO_CINE_ROTULO                = col_character(),
                 ID_ALUNO                      = col_character(),
                 CO_ALUNO_CURSO                = col_integer(),
                 CO_ALUNO_CURSO_ORIGEM         = col_integer(),
                 TP_COR_RACA                   = col_integer(),
                 TP_SEXO                       = col_integer(),
                 NU_ANO_NASCIMENTO             = col_integer(),
                 NU_MES_NASCIMENTO             = col_integer(),
                 NU_DIA_NASCIMENTO             = col_integer(),
                 NU_IDADE                      = col_integer(),
                 TP_NACIONALIDADE              = col_integer(),
                 CO_PAIS_ORIGEM                = col_integer(),
                 CO_UF_NASCIMENTO              = col_integer(),
                 CO_MUNICIPIO_NASCIMENTO       = col_integer(),
                 IN_DEFICIENCIA                = col_integer(),
                 IN_DEFICIENCIA_AUDITIVA       = col_integer(),
                 IN_DEFICIENCIA_FISICA         = col_integer(),
                 IN_DEFICIENCIA_INTELECTUAL    = col_integer(),
                 IN_DEFICIENCIA_MULTIPLA       = col_integer(),
                 IN_DEFICIENCIA_SURDEZ         = col_integer(),
                 IN_DEFICIENCIA_SURDOCEGUEIRA  = col_integer(),
                 IN_DEFICIENCIA_BAIXA_VISAO    = col_integer(),
                 IN_DEFICIENCIA_CEGUEIRA       = col_integer(),
                 IN_DEFICIENCIA_SUPERDOTACAO   = col_integer(),
                 IN_TGD_AUTISMO                = col_integer(),
                 IN_TGD_SINDROME_ASPERGER      = col_integer(),
                 IN_TGD_SINDROME_RETT          = col_integer(),
                 IN_TGD_TRANSTOR_DESINTEGRATIVO= col_integer(),
                 TP_SITUACAO                   = col_integer(),
                 QT_CARGA_HORARIA_TOTAL        = col_integer(),
                 QT_CARGA_HORARIA_INTEG        = col_integer(),
                 DT_INGRESSO_CURSO             = col_character(),
                 IN_INGRESSO_VESTIBULAR        = col_integer(),
                 IN_INGRESSO_ENEM              = col_integer(),
                 IN_INGRESSO_AVALIACAO_SERIADA = col_integer(),
                 IN_INGRESSO_SELECAO_SIMPLIFICA= col_integer(),
                 IN_INGRESSO_OUTRO_TIPO_SELECAO= col_integer(),
                 IN_INGRESSO_VAGA_REMANESC     = col_integer(),
                 IN_INGRESSO_VAGA_PROG_ESPECIAL= col_integer(),
                 IN_INGRESSO_TRANSF_EXOFFICIO  = col_integer(),
                 IN_INGRESSO_DECISAO_JUDICIAL  = col_integer(),
                 IN_INGRESSO_CONVENIO_PECG     = col_integer(),
                 IN_INGRESSO_EGRESSO           = col_integer(),
                 IN_INGRESSO_OUTRA_FORMA       = col_integer(),
                 IN_RESERVA_VAGAS              = col_integer(),
                 IN_RESERVA_ETNICO             = col_integer(),
                 IN_RESERVA_DEFICIENCIA        = col_integer(),
                 IN_RESERVA_ENSINO_PUBLICO     = col_integer(),
                 IN_RESERVA_RENDA_FAMILIAR     = col_integer(),
                 IN_RESERVA_OUTRA              = col_integer(),
                 IN_FINANCIAMENTO_ESTUDANTIL   = col_integer(),
                 IN_FIN_REEMB_FIES             = col_integer(),
                 IN_FIN_REEMB_ESTADUAL         = col_integer(),
                 IN_FIN_REEMB_MUNICIPAL        = col_integer(),
                 IN_FIN_REEMB_PROG_IES         = col_integer(),
                 IN_FIN_REEMB_ENT_EXTERNA      = col_integer(),
                 IN_FIN_REEMB_OUTRA            = col_integer(),
                 IN_FIN_NAOREEMB_PROUNI_INTEGR = col_integer(),
                 IN_FIN_NAOREEMB_PROUNI_PARCIAL= col_integer(),
                 IN_FIN_NAOREEMB_ESTADUAL      = col_integer(),
                 IN_FIN_NAOREEMB_MUNICIPAL     = col_integer(),
                 IN_FIN_NAOREEMB_PROG_IES      = col_integer(),
                 IN_FIN_NAOREEMB_ENT_EXTERNA   = col_integer(),
                 IN_FIN_NAOREEMB_OUTRA         = col_integer(),
                 IN_APOIO_SOCIAL               = col_integer(),
                 IN_APOIO_ALIMENTACAO          = col_integer(),
                 IN_APOIO_BOLSA_PERMANENCIA    = col_integer(),
                 IN_APOIO_BOLSA_TRABALHO       = col_integer(),
                 IN_APOIO_MATERIAL_DIDATICO    = col_integer(),
                 IN_APOIO_MORADIA              = col_integer(),
                 IN_APOIO_TRANSPORTE           = col_integer(),
                 IN_ATIVIDADE_EXTRACURRICULAR  = col_integer(),
                 IN_COMPLEMENTAR_ESTAGIO       = col_integer(),
                 IN_COMPLEMENTAR_EXTENSAO      = col_integer(),
                 IN_COMPLEMENTAR_MONITORIA     = col_integer(),
                 IN_COMPLEMENTAR_PESQUISA      = col_integer(),
                 IN_BOLSA_ESTAGIO              = col_integer(),
                 IN_BOLSA_EXTENSAO             = col_integer(),
                 IN_BOLSA_MONITORIA            = col_integer(),
                 IN_BOLSA_PESQUISA             = col_integer(),
                 TP_ESCOLA_CONCLUSAO_ENS_MEDIO = col_integer(),
                 IN_ALUNO_PARFOR               = col_integer(),
                 TP_SEMESTRE_CONCLUSAO         = col_integer(),
                 TP_SEMESTRE_REFERENCIA        = col_integer(),
                 IN_MOBILIDADE_ACADEMICA       = col_integer(),
                 TP_MOBILIDADE_ACADEMICA       = col_integer(),
                 TP_MOBILIDADE_ACADEMICA_INTERN= col_integer(),
                 CO_IES_DESTINO                = col_integer(),
                 CO_PAIS_DESTINO               = col_integer(),
                 IN_MATRICULA                  = col_integer(),
                 IN_CONCLUINTE                 = col_integer(),
                 IN_INGRESSO_TOTAL             = col_integer(),
                 IN_INGRESSO_VAGA_NOVA         = col_integer(),
                 IN_INGRESSO_PROCESSO_SELETIVO = col_integer(),
                 NU_ANO_INGRESSO               = col_integer()),
locale = locale(encoding = "ISO-8859-1"))

Total de registros e dimensões:

dim(BaseAluno)
## [1] 12350832      105

Tratando e Qualificando as colunas:

BaseAluno = BaseAluno %>% select(everything()) %>%
  mutate(DS_TURNO = case_when(
            TP_TURNO == 1  ~ "MATUTINO",
            TP_TURNO == 2  ~ "VESPERTINO",
            TP_TURNO == 3  ~ "NOTURNO",
            TP_TURNO == 4  ~ "INTEGRAL",
            TP_TURNO == 5  ~ "AFASTADO SAUDE",
            TRUE ~ "EAD"),
          DS_GRAU_ACADEMICO = case_when(
            TP_GRAU_ACADEMICO == 1  ~ "BACHARELADO",
            TP_GRAU_ACADEMICO == 2  ~ "LICENCIATURA",
            TP_GRAU_ACADEMICO == 3  ~ "TECNOLOGICO",
            TP_GRAU_ACADEMICO == 4  ~ "BACHARELADO E LICENCIATURA",
            TRUE ~ "NA"),
      
          DS_MODALIDADE_ENSINO = case_when(
            TP_MODALIDADE_ENSINO == 1  ~ "PRESENCIAL",
            TP_MODALIDADE_ENSINO == 2  ~ "CURSO A DISTANCIA"),
      
          DS_NIVEL_ACADEMICO = case_when(
            TP_NIVEL_ACADEMICO == 1  ~ "GRADUACAO",
            TP_NIVEL_ACADEMICO == 2  ~ "SEQUENCIAL DE FORMACAO"),
      
          DS_SEXO = case_when(
            TP_SEXO == 1  ~ "FEMININO",
            TP_SEXO == 2  ~ "MASCULINO"),
      
          DS_COR_RACA = case_when(
            TP_COR_RACA == 0  ~ "NAO DECLARADO",
            TP_COR_RACA == 1  ~ "BRANCA",
            TP_COR_RACA == 2  ~ "PRETA",
            TP_COR_RACA == 3  ~ "PARDA",
            TP_COR_RACA == 4  ~ "AMARELA",
            TP_COR_RACA == 5  ~ "INDIGENA",
            TP_COR_RACA == 9  ~ "SEM INFO",),
      
          DS_NACIONALIDADE = case_when(
            TP_NACIONALIDADE == 1  ~ "BRASILEIRA",
            TP_NACIONALIDADE == 2  ~ "BRASILEIRO NATURALIZADO",
            TP_NACIONALIDADE == 3  ~ "ESTRANGEIRO"),
      
          DS_SITUACAO = case_when(
            TP_SITUACAO == 2  ~ "CURSANDO",
            TP_SITUACAO == 3  ~ "MATRICULA TRANCADA",
            TP_SITUACAO == 4  ~ "DESVINCULADO",
            TP_SITUACAO == 5  ~ "TRANSFERIDO MESMA IES",
            TP_SITUACAO == 6  ~ "FORMADO",
            TP_SITUACAO == 7  ~ "FALECIDO"))

Criação das datas (Nascimento):

    # NECESSÁRIOS TRATAMENTOS DE DATAS / CAST
BaseAluno = BaseAluno %>% select(everything()) %>%
  mutate(DT_NASC = as.Date(str_c(NU_ANO_NASCIMENTO,'-', NU_MES_NASCIMENTO, '-', NU_DIA_NASCIMENTO)))

Criação das datas (Ingresso):

BaseAluno = BaseAluno %>% 
  select(everything()) %>%
  mutate(DT_INGRESSO_D = 
           as.Date(str_c(substr(DT_INGRESSO_CURSO, start = 6, stop = 9),
                "-",
                case_when(substr(DT_INGRESSO_CURSO, start = 3, stop = 5) == "JAN"  ~ "01",
                          substr(DT_INGRESSO_CURSO, start = 3, stop = 5) == "JUL"  ~ "07"),
                "-",
                "01")))

Join com a base de municípios:

BaseAluno = BaseAluno %>%
  left_join(select(BaseMun, SGL_UF, DS_MESORREGIAO, DS_MICRORREGIAO, NOME_MUNICIPIO, LATITUDE, LONGITUDE, CO_MUNICIPIO), by = c("CO_MUNICIPIO_NASCIMENTO" = "CO_MUNICIPIO"))

Total de registros e dimensões:

dim(BaseAluno)
## [1] 12350832      121

Salvando em base de dados:

saveRDS(BaseAluno, "./data/aluno_2019_data.rds")
#trabalhar com dados reduzidos
# BaseAluno1perc = BaseAluno %>% sample_frac(size = .01)
# saveRDS(BaseAluno1perc, "./data/aluno_1perc_2019_data.rds")

Liberando as variáveis:

rm(BaseAluno)
# rm(BaseAluno1perc)
rm(BaseMun)

2.2 CPC ENADE 2019

Importação da planilha final de resultados do ENADE (https://download.inep.gov.br/educacao_superior/indicadores/resultados/2019/resultados_cpc_2019.xlsx) e dos microdados (https://download.inep.gov.br/microdados/Enade_Microdados/microdados_enade_2019.zip).

2.2.1 Microdados

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
library(readr)
library(dplyr)

Importação do arquivo relativo ao ENADE em 2019

#importa já qualificando as variáveis
microdados_enade = read_delim("./raw-data/microdados_enade_2019.txt",";",escape_double = FALSE,  
                               col_types=cols(DS_VT_ACE_OFG=col_character(), DS_VT_ACE_OCE=col_character()),locale = locale(encoding = "ISO-8859-1"), 
                               trim_ws = TRUE)

Dados da base ENADE:

dim(microdados_enade)
## [1] 433930    137

Tratamento dos dados, junção com a base de municípios (IBGE) e salvamento da base.

#TRANSFORMANDO CODIGOS EM DESCRITIVOS (TABELA VARIAVEIS)
microdados_enade = microdados_enade %>% select(everything()) %>% 
  mutate(NO_GRUPO_CURSO = case_when(
    CO_GRUPO == 5  ~ "MEDICINA VETERINÁRIA",
    CO_GRUPO == 6  ~ "ODONTOLOGIA",
    CO_GRUPO == 12  ~ "MEDICINA",
    CO_GRUPO == 17  ~ "AGRONOMIA",
    CO_GRUPO == 19  ~ "FARMÁCIA",
    CO_GRUPO == 21  ~ "ARQUITETURA E URBANISMO",
    CO_GRUPO == 23  ~ "ENFERMAGEM",
    CO_GRUPO == 27  ~ "FONOAUDIOLOGIA",
    CO_GRUPO == 28  ~ "NUTRIÇÃO",
    CO_GRUPO == 36  ~ "FISIOTERAPIA",
    CO_GRUPO == 51  ~ "ZOOTECNIA",
    CO_GRUPO == 55  ~ "BIOMEDICINA",
    CO_GRUPO == 69  ~ "TECNOLOGIA EM RADIOLOGIA",
    CO_GRUPO == 90  ~ "TECNOLOGIA EM AGRONEGÓCIOS",
    CO_GRUPO == 91  ~ "TECNOLOGIA EM GESTÃO HOSPITALAR",
    CO_GRUPO == 92  ~ "TECNOLOGIA EM GESTÃO AMBIENTAL",
    CO_GRUPO == 95  ~ "TECNOLOGIA EM ESTÉTICA E COSMÉTICA",
    CO_GRUPO == 3501  ~ "EDUCAÇÃO FÍSICA (BACHARELADO)",
    CO_GRUPO == 4003  ~ "ENGENHARIA DA COMPUTAÇÃO",
    CO_GRUPO == 5710  ~ "ENGENHARIA CIVIL",
    CO_GRUPO == 5806  ~ "ENGENHARIA ELÉTRICA",
    CO_GRUPO == 5814  ~ "ENGENHARIA DE CONTROLE E AUTOMAÇÃO",
    CO_GRUPO == 5902  ~ "ENGENHARIA MECÂNICA",
    CO_GRUPO == 6002  ~ "ENGENHARIA DE ALIMENTOS",
    CO_GRUPO == 6008  ~ "ENGENHARIA QUÍMICA",
    CO_GRUPO == 6208  ~ "ENGENHARIA DE PRODUÇÃO",
    CO_GRUPO == 6307  ~ "ENGENHARIA AMBIENTAL",
    CO_GRUPO == 6405  ~ "ENGENHARIA FLORESTAL",
    CO_GRUPO == 6410  ~ "TECNOLOGIA EM SEGURANÇA NO TRABALHO",
    TRUE ~ "SEM GRUPO"),
    
    DS_MODALIDADE = case_when(
      CO_MODALIDADE == 1  ~ "PRESENCIAL",
      CO_MODALIDADE == 2  ~ "EAD",
      TRUE ~ "PRESENCIAL"),
    
    DS_TURNO = case_when(
      CO_TURNO_GRADUACAO == 1  ~ "MATUTINO",
      CO_TURNO_GRADUACAO == 2  ~ "VESPERTINO",
      CO_TURNO_GRADUACAO == 3  ~ "INTEGRAL",
      CO_TURNO_GRADUACAO == 4  ~ "NOTURNO",
      TRUE ~ "EAD"),
    
    DS_INSCRICAO_ADM = case_when(
      TP_INSCRICAO_ADM == 0  ~ "TRADICIONAL",
      TP_INSCRICAO_ADM == 1  ~ "JUDICIAL",
      TP_INSCRICAO_ADM == 2  ~ "ADMINISTRATIVA",
      TRUE ~ "TRADICIONAL"),
    
    DS_INSCRICAO = case_when(
      TP_INSCRICAO == 0  ~ "INSCRITO",
      TP_INSCRICAO == 1  ~ "NÃO INSCRITO",
      TRUE ~ "NÃO INSCRITO"))

Base Final bruta:

dim(microdados_enade)
## [1] 433930    142

Salvando a base e liberando variáveis:

#Base Final 

#SALVANDO E LIBERANDO VARIAVEIS
saveRDS(microdados_enade, file = "./data/enade_microdados_2019.rds")
rm(microdados_enade)

2.2.2 Planilha de Resultados

Antes de reaalizada a importação, a planilha original de resultados do CPC, indicada pelo link, sofreu alguns tratamentos como criação da coluna totalizadora da Nota de Percepção do Estudante, troca do símbolo decimal (de “,” para “.”) e criação de arquivo csv.

# IMPORTANDO PLANILHA CPC 2019
resultados_cpc_2019 = read.csv2(file = "./raw-data/resultados_cpc_2019_2.CSV", sep = ";")

Após a importação e tratamento, temos o seguinte resultado:

resultados_cpc_2019$NOTA_TOTAL_PERCEPCAO = as.numeric(resultados_cpc_2019$NOTA_TOTAL_PERCEPCAO)
resultados_cpc_2019$NOTA_PADR_NO = as.numeric(resultados_cpc_2019$NOTA_PADR_NO)
resultados_cpc_2019$NOTA_PADR_NA = as.numeric(resultados_cpc_2019$NOTA_PADR_NA)
resultados_cpc_2019$NOTA_PADR_NF = as.numeric(resultados_cpc_2019$NOTA_PADR_NF)
resultados_cpc_2019$NOTA_TOTAL_PERCEPCAO[is.na(resultados_cpc_2019$NOTA_TOTAL_PERCEPCAO)] = 0
dim(resultados_cpc_2019)
## [1] 8368   40

Realizando salvamento da base bruta importada:

#SALVANDO E LIBERANDO VARIAVEIS
saveRDS(resultados_cpc_2019, file = "./data/enade_cpc_2019_data.rds")
rm(resultados_cpc_2019)

3 Tratamento dos dados

Nesta etapa do processo temos a preparação dos dados, calculo da taxa de sucesso, junção de bases e outras tarefas de tratamento e transformação.

3.1 Montagem da Base de Dados

Primeiro criamos a base de dados, analítica na matricula (aluno), com a junção das bases IES + Cursos + Matriculas.

Bibliotecas Utilizadas:

#install.packages("dplyr")
#install.packages("lubridate")
library(dplyr)
library(lubridate)

Carga das bases importados previamente:

ies = readRDS("./data/ies_2019_data.rds")
cursos = readRDS("./data/curso_2019_data.rds")
alunos = readRDS("./data/aluno_2019_data.rds")

Resultados:

# IES
dim(ies)
## [1] 2608   57
# Cursos
dim(cursos)
## [1] 40709   124
# Matriculas
dim(alunos)
## [1] 12350832      121

Seleção dos dados das IES:

dados_ies = ies %>% select(c(1,2,3,49,50,11,51,52,53,54,55,13))
# dados selecionados:
dim(dados_ies)
## [1] 2608   12

Seleção dos dados dos alunos (dado o volume, primeiro tratado fracionado com 0,1% dos registros):

#trabalhar com dados reduzidos
#BaseAluno1perc = taxa_sucesso %>% sample_frac(size = .001)
dados_alunos =  alunos %>% 
  select(c(1,2,5,106,12,13,108,109,110,111,113,114,115,40,41)) 
# dados selecionados:
dim(dados_alunos)
## [1] 12350832       15

Liberando variável:

rm(alunos)

Seleção dos dados dos Cursos:

dados_cursos =  cursos %>% 
  select(c(1,2,9,10,18,38,39,40,41,42,113,114,115,116,117))
# dados selecionados:
dim(dados_cursos)
## [1] 40709    15

Incorporando nos dados dos alunos os dados necessários para avaliação de integralização e outras análises, realizando o join com a base de cursos.

dados_alunos = dados_alunos %>% 
                select(everything()) %>% 
                left_join(dados_cursos, select(NU_ANO_CENSO, CO_IES, CO_CURSO, NO_CURSO, NU_CARGA_HORARIA,                                                  NO_MODALIDADE_ENSINO, NO_IN_GRATUITO), 
                          by = c("NU_ANO_CENSO" = "NU_ANO_CENSO", "CO_IES" = "CO_IES", 
                                 "CO_CURSO" = "CO_CURSO"))

Alterando nome de colunas:

names(dados_alunos)[names(dados_alunos) == 'DS_SITUACAO.x'] = 'DS_SITUACAO_ALUNO'
names(dados_alunos)[names(dados_alunos) == 'DS_SITUACAO.y'] = 'DS_SITUACAO_CURSO'

Criando a coluna/variável de tempo de integralização (em anos), de acordo com o turno do aluno e cadastro do curso:

dados_alunos=  dados_alunos %>% 
                mutate(NU_INTEGRALIZACAO = ifelse(DS_TURNO == "MATUTINO", NU_INTEGRALIZACAO_MATUTINO,                                                      ifelse(DS_TURNO == "VESPERTINO", NU_INTEGRALIZACAO_VESPERTINO,
                                               ifelse(DS_TURNO == "NOTURNO", NU_INTEGRALIZACAO_NOTURNO,
                                                ifelse(DS_TURNO == "INTEGRAL", NU_INTEGRALIZACAO_INTEGRAL,
                                                       NU_INTEGRALIZACAO_EAD)))))

Removendo colunas agora desnecessárias:

dados_alunos = dados_alunos %>% select(-c(18:22)) %>% select(-c(20,21))

#Resultado até agora:
dim(dados_alunos)
## [1] 12350832       21

Incorporando aos dados dos alunos os dados referentes a IES:

dados_alunos = dados_alunos %>% 
  select(everything()) %>% 
  left_join(dados_ies, select(NU_ANO_CENSO, CO_IES,NO_IES,NO_CATEGORIA_ADM, NO_ORGANIZACAO_ACAD,                                         CO_MUNICIPIO, NO_REGIAO, SGL_UF, DS_MESORREGIAO, 
                              DS_MICRORREGIAO, NOME_MUNICIPIO, QT_TEC_TOTAL), 
            by = c("NU_ANO_CENSO" = "NU_ANO_CENSO", "CO_IES" = "CO_IES"))

Organizando os dados/colunas:

dados_alunos = dados_alunos %>% select(c(1,2,3, 5,6,22,23,24,25,26,27,28,29,30, #IES
                                         16,17,18,19,20,21,#CURSO
                                         4,7,8,9,10,12,13,14,15,11))#ALUNO

# ficamos assim:
dim(dados_alunos)
## [1] 12350832       30
head(dados_alunos)
## # A tibble: 6 x 30
##   NU_ANO_CENSO CO_IES CO_CURSO ID_ALUNO  CO_ALUNO_CURSO NO_IES  NO_CATEGORIA_AD~
##          <int>  <int>    <int> <chr>              <int> <chr>   <chr>           
## 1         2019      1        1 7DF871BB~       73964798 UNIVER~ PUBLICA FEDERAL 
## 2         2019      1        1 77996A09~       73959106 UNIVER~ PUBLICA FEDERAL 
## 3         2019      1        1 C29BBC4B~       74008622 UNIVER~ PUBLICA FEDERAL 
## 4         2019      1        1 B51D6C75~       73958663 UNIVER~ PUBLICA FEDERAL 
## 5         2019      1        1 C17ADA14~       73957885 UNIVER~ PUBLICA FEDERAL 
## 6         2019      1        1 3C5C13FF~       73994643 UNIVER~ PUBLICA FEDERAL 
## # ... with 23 more variables: NO_ORGANIZACAO_ACADEMICA <chr>,
## #   CO_MUNICIPIO <int>, NO_REGIAO <chr>, SGL_UF <chr>, DS_MESORREGIAO <chr>,
## #   DS_MICRORREGIAO <chr>, NOME_MUNICIPIO <chr>, NO_CURSO <chr>,
## #   NU_CARGA_HORARIA <int>, DS_SITUACAO_CURSO <chr>, NO_GRAU_ACADEMICO <chr>,
## #   NO_IN_GRATUITO <chr>, NU_INTEGRALIZACAO <dbl>, DS_TURNO <chr>,
## #   DS_MODALIDADE_ENSINO <chr>, DS_NIVEL_ACADEMICO <chr>, DS_SEXO <chr>,
## #   DS_COR_RACA <chr>, DT_NASC <date>, DT_INGRESSO_D <date>, ...

Liberando variáveis não mais utilizadas:

rm(cursos)
rm(ies)
rm(dados_cursos)
rm(dados_ies)

3.2 Calculo da Taxa de Sucesso

A taxa de sucesso do curso da instituição representa a razão entre a quantidade de alunos formados no ano sobre a quantidade de alunos ingressantes no mesmo curso, no ano correspondente ao prazo de integralização previsto (coorte perfeita). Este modelo somente representa alunos formados no prazo de integralização sugerido, não alcançando alunos que se formaram antes ou depois do periodo, sendo estes não considerados neste modelo de dados (taxa de sucesso estimada).

Primeiro calculamos quando o aluno, a partir da data de ingresso deveria integralizar:

dados_alunos = dados_alunos %>% mutate(DT_INTEGR_PREV = ymd(DT_INGRESSO_D)+months((NU_INTEGRALIZACAO*12)-1))
#menos 1 mês necessário pois senão a integralização passa para o ano seguinte

Para comparação, criamos coluna com a data de final da competência do Censo:

dados_alunos = dados_alunos %>% mutate(DT_CENSO = ymd("2019-12-31"))

Agora criamos uma variável binária para informar se o aluno(matricula) se formou no mesmo ano da competência do censo:

dados_alunos = dados_alunos %>% 
                mutate(FORMADO_ANO_CENSO = 
                         ifelse(DS_SITUACAO_ALUNO == "FORMADO" & year(ymd(DT_INTEGR_PREV))==2019,1,0))

Outra variável binária criada é para qualificar se para no registro desta matrícula podemos considerar como ingressante, dado o prazo de integralização. para todos os efeitos, todos os alunos cujo prazo de integralização correspondem ao ano do censo:

dados_alunos = dados_alunos %>% 
                mutate(CONSIDERAR_INGRESSANTE = ifelse(year(ymd(DT_INTEGR_PREV)) == 2019,1,0))

A base de dados está com as seguintes dimensões:

dim(dados_alunos)
## [1] 12350832       34

No calculo da taxa de sucesso, iremos pegar a base analítica, selecionar somente os campos necessários, filtrar para os dados dos cursos de graduação, agrupando e criando a variável taxa de sucesso:

taxa_sucesso = dados_alunos %>% 
  select(c(1,2,3,6:15,17,18,19,21:25,33,34 )) %>% 
  filter(DS_NIVEL_ACADEMICO == "GRADUACAO") %>% 
  group_by(NU_ANO_CENSO, CO_IES, CO_CURSO, NO_IES, NO_CATEGORIA_ADMINISTRATIVA, NO_ORGANIZACAO_ACADEMICA,                CO_MUNICIPIO, NO_REGIAO, SGL_UF, DS_MESORREGIAO, DS_MICRORREGIAO, NOME_MUNICIPIO, NO_CURSO,                   NO_IN_GRATUITO, DS_MODALIDADE_ENSINO) %>% 
  summarise(FORMADOS         = sum(FORMADO_ANO_CENSO),
            INGRESSANTES     = sum(CONSIDERAR_INGRESSANTE),
            TX_SUCESSO       = sum(FORMADO_ANO_CENSO)/sum(CONSIDERAR_INGRESSANTE))

Zerando onde não foi possível calcular a taxa de sucesso:

taxa_sucesso$TX_SUCESSO[is.nan(taxa_sucesso$TX_SUCESSO)] = 0

A base de dados de taxa de sucesso, por IES e Cursos ficou com as seguintes dimensões:

dim(taxa_sucesso)
## [1] 40673    18

Salvando as bases de dados e liberando as variáveis:

saveRDS(taxa_sucesso, "./data/taxa_sucesso_2019_data.rds")
saveRDS(dados_alunos, "./data/dados_alunos_2019_data.rds")

rm (dados_alunos)
rm (taxa_sucesso)

4 Análise Taxa de Sucesso x Percepção do Estudante

Iremos analizar e cruzar as informações, avaliando as correlações, entre a taxa de sucesso calculada na etapa anterior e a nota de percepção docente, importada diretamente na planilha do resultado final do CPC.

4.1 Junção das Base de Dados e Filtro

Bibliotecas Utilizadas:

#install.packages("dplyr")
library(dplyr)

Carga das bases salvas anteriormente:

tx = readRDS("./data/taxa_sucesso_2019_data.rds")
cpc = readRDS("./data/enade_cpc_2019_data.rds")

Utilizando somente as colunas necessárias do CPC:

cpc = cpc %>% select(c(1,3, 4,9,14,15,25,27,29,31))
#base taxa de sucesso:
dim(tx)
## [1] 40673    18
#base cpc:
dim(cpc)
## [1] 8368   10

Realizando a junção das bases. A base left, mandatória, é a do CPC, com os cursos realizados em 2019:

base = cpc %>% 
  select(everything()) %>% 
  left_join(tx,by = c("ANO_ENADE" = "NU_ANO_CENSO", "CO_IES" = "CO_IES", "CO_CURSO" = "CO_CURSO"))

Removendo registros não encontrados (troca de mantença ao longo do ano, inativação, não correspondência):

base = base %>% filter(!(is.na(NO_IES)))

Salvando a base e removendo variáveis:

#base final
dim(base)
## [1] 8339   25
saveRDS(base, "./data/base_analise_2019_data.rds")
rm (tx)
rm (cpc)
rm (base)

4.2 Amostra, visualizações e Análises

Bibliotecas Utilizadas:

#install.packages("dplyr")
#install.packages("ggplot2")
#install.packages("pastecs")
#install.packages("ggpubr")

library(dplyr)
library(pastecs)
library(ggpubr)
library(ggplot2)

Carga da base salva anteriormente:

base = readRDS("./data/base_analise_2019_data.rds")

População (ou universo, dependendo do autor):

#==== ANALISE MAIORES CURSOS POR CONCLUINTES PARTICIPANTES ====
m_cursos = base %>% select(AREA_AVALI, QTD_CONCLUINTES_PARTICIPANTES) %>% 
                    group_by(AREA_AVALI) %>% 
                    summarise(QTD = sum(QTD_CONCLUINTES_PARTICIPANTES)) %>% 
                    arrange(-QTD)
print(m_cursos)
## # A tibble: 29 x 2
##    AREA_AVALI                      QTD
##    <chr>                         <int>
##  1 ENGENHARIA CIVIL              50754
##  2 ENFERMAGEM                    38192
##  3 EDUCAÇÃO FÍSICA (BACHARELADO) 31701
##  4 ARQUITETURA E URBANISMO       28552
##  5 ENGENHARIA DE PRODUÇÃO        23692
##  6 FISIOTERAPIA                  21490
##  7 MEDICINA                      20628
##  8 NUTRIÇÃO                      20337
##  9 ENGENHARIA MECÂNICA           18812
## 10 ODONTOLOGIA                   17045
## # ... with 19 more rows

Amostra utilizada:

#CRIAÇÃO DA AMOSTRA = 3 MAIORES ÁREAS, UF = SP e Taxa de Sucesso > 0
base_cursos = base %>% filter(AREA_AVALI %in% c("ENGENHARIA CIVIL", "ENFERMAGEM", "EDUCAÇÃO FÍSICA (BACHARELADO)"), SGL_UF =='SP', TX_SUCESSO > 0)

dim(base_cursos)
## [1] 431  25

4.2.1 Análise da Normalidade da Taxa de Sucesso

Análise de normalidade de taxa de sucesso, por área avaliativa:

Normalidade por Histograma:

#====== HISTOGRAMA DE TAXA DE SUCESSO, POR ÁREAS AVALIATIVAS
ggplot(base_cursos, aes(x=TX_SUCESSO)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="white")+
  stat_function(fun = dnorm,
                args = list(
                  mean = mean(base_cursos$TX_SUCESSO, na.rm = T),
                  sd = sd(base_cursos$TX_SUCESSO, na.rm = T)),colour = "#FF6666")+
  #geom_density(alpha=.2, fill="#FF6666") + 
  ggtitle("Histograma da Taxa de Sucesso - Áreas Avaliativas") +
  xlab("Taxa de Sucesso") + ylab("Densidade")+
  facet_grid(. ~ AREA_AVALI)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Testes de Normalidade:

#testes de normalidade - filtros por área - taxa de sucesso
eng = base_cursos %>% filter(AREA_AVALI == 'ENGENHARIA CIVIL')
stat.desc(eng$TX_SUCESSO, basic = FALSE, norm = TRUE)
##       median         mean      SE.mean CI.mean.0.95          var      std.dev 
##   0.39324227   0.39637666   0.01639484   0.03237666   0.04354410   0.20867222 
##     coef.var     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W 
##   0.52644932   0.23589378   0.61849500  -0.51923239  -0.68470191   0.98314748 
##   normtest.p 
##   0.04616667
shapiro.test(eng$TX_SUCESSO)
## 
##  Shapiro-Wilk normality test
## 
## data:  eng$TX_SUCESSO
## W = 0.98315, p-value = 0.04617
ks.test(eng$TX_SUCESSO, "dnorm")
## Warning in ks.test(eng$TX_SUCESSO, "dnorm"): ties should not be present for the
## Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  eng$TX_SUCESSO
## D = 0.73945, p-value < 2.2e-16
## alternative hypothesis: two-sided
enf = base_cursos %>% filter(AREA_AVALI == 'ENFERMAGEM')
stat.desc(enf$TX_SUCESSO, basic = FALSE, norm = TRUE)
##       median         mean      SE.mean CI.mean.0.95          var      std.dev 
##  0.521739130  0.508106304  0.019453879  0.038443247  0.056389556  0.237464851 
##     coef.var     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W 
##  0.467352697 -0.256730039 -0.646060463 -0.941079666 -1.191662226  0.968354819 
##   normtest.p 
##  0.001635575
shapiro.test(enf$TX_SUCESSO)
## 
##  Shapiro-Wilk normality test
## 
## data:  enf$TX_SUCESSO
## W = 0.96835, p-value = 0.001636
ks.test(enf$TX_SUCESSO, "dnorm")
## Warning in ks.test(enf$TX_SUCESSO, "dnorm"): ties should not be present for the
## Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  enf$TX_SUCESSO
## D = 0.74795, p-value < 2.2e-16
## alternative hypothesis: two-sided
edf = base_cursos %>% filter(AREA_AVALI == 'EDUCAÇÃO FÍSICA (BACHARELADO)')
stat.desc(edf$TX_SUCESSO, basic = FALSE, norm = TRUE)
##       median         mean      SE.mean CI.mean.0.95          var      std.dev 
##  0.412037037  0.410911679  0.021680035  0.042928634  0.056402868  0.237492880 
##     coef.var     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W 
##  0.577965759  0.418682457  0.947766347 -0.397529584 -0.453458711  0.967944593 
##   normtest.p 
##  0.005807133
shapiro.test(edf$TX_SUCESSO)
## 
##  Shapiro-Wilk normality test
## 
## data:  edf$TX_SUCESSO
## W = 0.96794, p-value = 0.005807
ks.test(edf$TX_SUCESSO, "dnorm")
## Warning in ks.test(edf$TX_SUCESSO, "dnorm"): ties should not be present for the
## Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  edf$TX_SUCESSO
## D = 0.75803, p-value < 2.2e-16
## alternative hypothesis: two-sided

4.2.2 Análise da Normalidade da Nota de Percepção Total

Análise de normalidade da nota de Percepção Total da Avaliação Discente, por área avaliativa:

Normalidade por Histograma:

ggplot(base_cursos, aes(x=NOTA_TOTAL_PERCEPCAO)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="white", bins = 10)+
  stat_function(fun = dnorm,
                args = list(
                  mean = mean(base_cursos$NOTA_TOTAL_PERCEPCAO, na.rm = T),
                  sd = sd(base_cursos$NOTA_TOTAL_PERCEPCAO, na.rm = T)),colour = "#FF6666")+
  #geom_density(alpha=.2, fill="#FF6666") + 
  ggtitle("Percepção Discente Processo Formativo") +
  xlab("Nota") + ylab("Densidade")+
  facet_grid(. ~ AREA_AVALI)

Testes de Normalidade:

stat.desc(base_cursos$NOTA_TOTAL_PERCEPCAO, basic = FALSE, norm = TRUE)
##        median          mean       SE.mean  CI.mean.0.95           var 
##  3.080000e+00  3.145754e+00  5.262551e-02  1.034352e-01  1.193631e+00 
##       std.dev      coef.var      skewness      skew.2SE      kurtosis 
##  1.092534e+00  3.473043e-01 -1.549449e-01 -6.588921e-01 -8.339707e-01 
##      kurt.2SE    normtest.W    normtest.p 
## -1.777243e+00  9.752202e-01  1.045834e-06
shapiro.test(base_cursos$NOTA_TOTAL_PERCEPCAO)
## 
##  Shapiro-Wilk normality test
## 
## data:  base_cursos$NOTA_TOTAL_PERCEPCAO
## W = 0.97522, p-value = 1.046e-06
ks.test(base_cursos$NOTA_TOTAL_PERCEPCAO, "dnorm")
## Warning in ks.test(base_cursos$NOTA_TOTAL_PERCEPCAO, "dnorm"): ties should not
## be present for the Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  base_cursos$NOTA_TOTAL_PERCEPCAO
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
eng = base_cursos %>% filter(AREA_AVALI == 'ENGENHARIA CIVIL')
stat.desc(eng$NOTA_TOTAL_PERCEPCAO, basic = FALSE, norm = TRUE)
##       median         mean      SE.mean CI.mean.0.95          var      std.dev 
##   2.93500000   3.02746914   0.08254076   0.16300216   1.10370225   1.05057234 
##     coef.var     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W 
##   0.34701340  -0.01692043  -0.04436404  -0.95071121  -1.25368484   0.97411327 
##   normtest.p 
##   0.00390458
shapiro.test(eng$NOTA_TOTAL_PERCEPCAO)
## 
##  Shapiro-Wilk normality test
## 
## data:  eng$NOTA_TOTAL_PERCEPCAO
## W = 0.97411, p-value = 0.003905
ks.test(eng$NOTA_TOTAL_PERCEPCAO, "dnorm")
## Warning in ks.test(eng$NOTA_TOTAL_PERCEPCAO, "dnorm"): ties should not be
## present for the Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  eng$NOTA_TOTAL_PERCEPCAO
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
enf = base_cursos %>% filter(AREA_AVALI == 'ENFERMAGEM')
stat.desc(enf$NOTA_TOTAL_PERCEPCAO, basic = FALSE, norm = TRUE)
##       median         mean      SE.mean CI.mean.0.95          var      std.dev 
##  3.010000000  3.101610738  0.092268215  0.182333294  1.268500091  1.126277093 
##     coef.var     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W 
##  0.363126513 -0.198396945 -0.499265387 -0.696461946 -0.881909814  0.975132538 
##   normtest.p 
##  0.008314486
shapiro.test(enf$NOTA_TOTAL_PERCEPCAO)
## 
##  Shapiro-Wilk normality test
## 
## data:  enf$NOTA_TOTAL_PERCEPCAO
## W = 0.97513, p-value = 0.008314
ks.test(enf$NOTA_TOTAL_PERCEPCAO, "dnorm")
## Warning in ks.test(enf$NOTA_TOTAL_PERCEPCAO, "dnorm"): ties should not be
## present for the Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  enf$NOTA_TOTAL_PERCEPCAO
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
edf = base_cursos %>% filter(AREA_AVALI == 'EDUCAÇÃO FÍSICA (BACHARELADO)')
stat.desc(edf$NOTA_TOTAL_PERCEPCAO, basic = FALSE, norm = TRUE)
##       median         mean      SE.mean CI.mean.0.95          var      std.dev 
##  3.365000000  3.360250000  0.098925988  0.195883336  1.174362122  1.083679898 
##     coef.var     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W 
##  0.322499784 -0.291967650 -0.660923592 -0.904983003 -1.032306634  0.961617873 
##   normtest.p 
##  0.001710098
shapiro.test(edf$NOTA_TOTAL_PERCEPCAO)
## 
##  Shapiro-Wilk normality test
## 
## data:  edf$NOTA_TOTAL_PERCEPCAO
## W = 0.96162, p-value = 0.00171
ks.test(edf$NOTA_TOTAL_PERCEPCAO, "dnorm")
## Warning in ks.test(edf$NOTA_TOTAL_PERCEPCAO, "dnorm"): ties should not be
## present for the Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  edf$NOTA_TOTAL_PERCEPCAO
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided

Com as análise de normalidade, fica entendido que o melhor modelo a ser aplicado para correlação é o de “Spearman”, devido a os dados se apresentarem distribuidos não parametricamente:

ggscatter(base_cursos, x = "NOTA_TOTAL_PERCEPCAO", y = "TX_SUCESSO", size = 0.3,
          xlab = "Percepção Discente", ylab = "Taxa de Sucesso",
          color = "AREA_AVALI", palette = "jco",
          facet.by = "AREA_AVALI", #scales = "free_x",
          add = "reg.line", conf.int = TRUE) +
  stat_cor(aes(color = AREA_AVALI), method = "spearman")
## `geom_smooth()` using formula 'y ~ x'

cor.test(base_cursos$TX_SUCESSO,base_cursos$NOTA_TOTAL_PERCEPCAO, method = "spearman")
## Warning in cor.test.default(base_cursos$TX_SUCESSO,
## base_cursos$NOTA_TOTAL_PERCEPCAO, : Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  base_cursos$TX_SUCESSO and base_cursos$NOTA_TOTAL_PERCEPCAO
## S = 10007759, p-value = 1.449e-07
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.2500046
# removendo as variáveis não mais úteis
rm (edf)
rm (enf)
rm (eng)
rm (m_cursos)
rm(base)
rm (base_cursos)

4.3 Conclusão da Etapa

Com o valor obtido de R (correlação), entende-se que a correlação positiva entre a variável independente Nota Total de Percepção Discente e variável dependente Taxa de Sucesso varia de fraca a moderada quanto a área de avaliação utilizada como amostra.

5 Análise Taxa de Sucesso x Renda Familiar per capita (informada)

Iremos analizar e cruzar as informações, avaliando as correlações, entre a taxa de sucesso calculada na etapa anterior e a renda familiar calculada pelas respostas do questionario do estudante (QE_I07 e QE_I08).

5.1 Tratamento do Questionário

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
#install.packages("tidyverse")
library(tidyverse)
library(readr)
library(dplyr)

Carregando bases anteriormente salvas:

#CARREGAMENTO DA BASE ENADE TRATADA (1)
base_Enade_completa = readRDS("./data/enade_microdados_2019.rds")
base = readRDS("./data/base_analise_2019_data.rds")
tx = readRDS("./data/taxa_sucesso_2019_data.rds")

Seleção das colunas do ENADE necessárias para a análise:

#QE_07/08 - RPC
QE_Financeiro = base_Enade_completa %>%  select(c(1,2,6,76,77))
QE_Financeiro = drop_na(QE_Financeiro) #remove os vazios / NA ~ 6% da população total

Para esta análise optou-se em transformar as duas variáveis de renda e residentes em uma única variável contínua, pelo topo das faixas, com o valor de renda média per capita.

Transformar as variáveis qualitativas em quantitativas:

QE_I07: Quantas pessoas da sua família moram com você?

Considere seus pais, irmãos, cônjuge, filhos e outros parentes que moram na mesma casa com você.


A = Nenhuma.\

B = Uma.\

C = Duas.\

D = Três.\

E = Quatro.\

F = Cinco.\

G = Seis.\

H = Sete ou mais.
QE_Financeiro = QE_Financeiro %>% 
                  mutate(QE_I07_n = ifelse(QE_I07 == "A", 1, 
                                    ifelse(QE_I07 == "B", 2,
                                    ifelse(QE_I07 == "C", 3,
                                    ifelse(QE_I07 == "D", 4,
                                    ifelse(QE_I07 == "E", 5,
                                    ifelse(QE_I07 == "F", 6,
                                    ifelse(QE_I07 == "G", 7, 8))))))))
QE_I08: Qual a renda total de sua família, incluindo seus rendimentos?

A = Até 1,5 salário mínimo (até R$ 1.431,00).

B = De 1,5 a 3 salários mínimos (1.431,01 a 2.862,00).

C = De 3 a 4,5 salários mínimos (2.862,01 a 4.293,00).

D = De 4,5 a 6 salários mínimos (4.293,01 a 5.724,00).

E = De 6 a 10 salários mínimos (5.724,01 a 9.540,00).

F = De 10 a 30 salários mínimos (9.540,01 a 28.620,00).

G = Acima de 30 salários mínimos (mais de 28.620,00).

QE_Financeiro = QE_Financeiro %>% 
  mutate(QE_I08_n = ifelse(QE_I08 == "A", 1.5, 
                    ifelse(QE_I08 == "B", 3,
                    ifelse(QE_I08 == "C", 4.5,
                    ifelse(QE_I08 == "D", 6,
                    ifelse(QE_I08 == "E", 10,
                    ifelse(QE_I08 == "F", 29.99,30)))))))

Criando coluna calculada:

QE_Financeiro = QE_Financeiro %>% mutate(QE_RPC = QE_I08_n/QE_I07_n)

Seleção do necessário e agrupamento:

 dt_QE_RPC = QE_Financeiro %>%  select(c(2,3,8))
 dt_QE_RPC = dt_QE_RPC %>% group_by(CO_IES, CO_CURSO) %>% summarise(RPC_m = mean(QE_RPC))
## `summarise()` has grouped output by 'CO_IES'. You can override using the `.groups` argument.

Juntando com a base de Taxa de Sucesso calculada e salvando para uso:

 #=== INCORPORANDO TAXA DE SUCESSO VINCULADO A IES E CURSO ====
base_RPC_TX = base %>% left_join(dt_QE_RPC) 
## Joining, by = c("CO_IES", "CO_CURSO")
base_RPC_TX = drop_na(base_RPC_TX)
#salvar para usar na parte análise
saveRDS(base_RPC_TX,"./data/RPC+TX_2019_data.rds")

#liberando variáveis não mais utilizadas
rm (base)
rm (base_Enade_completa)
rm (base_RPC_TX)
rm (dt_QE_RPC)
rm (QE_Financeiro)
rm (tx)

5.2 Filtro Amostral

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
#install.packages("tidyverse")
library(tidyverse)
library(readr)
library(dplyr)

Carga de base salva e filtro:

base = readRDS("./data/RPC+TX_2019_data.rds")
base_cursos = base %>% filter(AREA_AVALI %in% c("ENGENHARIA CIVIL", "ENFERMAGEM", "EDUCAÇÃO FÍSICA (BACHARELADO)"), SGL_UF =='SP', TX_SUCESSO > 0)

5.3 Análise dos resultados

Testes de Normalidade da variável RPC, total e por área avaliada:

#teste normalidade RPC
ggplot(base_cursos, aes(x=RPC_m)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="white", bins = 4)+
  stat_function(fun = dnorm,
                args = list(
                  mean = mean(base_cursos$RPC_m, na.rm = T),
                  sd = sd(base_cursos$RPC_m, na.rm = T)),colour = "#FF6666")+
  #geom_density(alpha=.2, fill="#FF6666") + 
  ggtitle("Renda Média per Capita (Sal. Min.") +
  xlab("Quantidade de Salários") + ylab("Densidade")+
  facet_grid(. ~ AREA_AVALI)

stat.desc(base_cursos$RPC_m, basic = FALSE, norm = TRUE)
##       median         mean      SE.mean CI.mean.0.95          var      std.dev 
## 1.578015e+00 1.970124e+00 7.495426e-02 1.473233e-01 2.415801e+00 1.554285e+00 
##     coef.var     skewness     skew.2SE     kurtosis     kurt.2SE   normtest.W 
## 7.889274e-01 4.881064e+00 2.073244e+01 3.235845e+01 6.887871e+01 5.364351e-01 
##   normtest.p 
## 4.398626e-32
shapiro.test(base_cursos$RPC_m)
## 
##  Shapiro-Wilk normality test
## 
## data:  base_cursos$RPC_m
## W = 0.53644, p-value < 2.2e-16
ks.test(base_cursos$NOTA_TOTAL_PERCEPCAO, "dnorm")
## Warning in ks.test(base_cursos$NOTA_TOTAL_PERCEPCAO, "dnorm"): ties should not
## be present for the Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  base_cursos$NOTA_TOTAL_PERCEPCAO
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
summary (base_cursos$RPC_m)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.575   1.275   1.578   1.970   2.086  16.989

Realizado o teste de correlação, como dados não são distribuídos normalmente, usando Sperman:

cor.test(base_cursos$RPC_m, base_cursos$TX_SUCESSO, method = "spearman") #deu ruim, sem hipótese de correlação numérica
## Warning in cor.test.default(base_cursos$RPC_m, base_cursos$TX_SUCESSO, method =
## "spearman"): Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  base_cursos$RPC_m and base_cursos$TX_SUCESSO
## S = 13559372, p-value = 0.6305
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##         rho 
## -0.02326425

5.3.1 Análise por distribuição gráfica em quantis:

#Copiando a base para estudos e estabelecendo os quantis
mat_base = base_cursos
quantile(mat_base$RPC_m)
##        0%       25%       50%       75%      100% 
##  0.575000  1.275000  1.578015  2.086278 16.989405

Criando os quadrantes, com variáveis a partir dos quantis (estabelecidos, não calculados):

mat_base$RPC_m.cl = cut(mat_base$RPC_m, breaks=c(1, 2, 3, 5, 10, 20), include.lowest=TRUE)
table(mat_base$RPC_m.cl)
## 
##   [1,2]   (2,3]   (3,5]  (5,10] (10,20] 
##     286      79      23      13       4
mat_base$TX_SUCESSO.cl = cut(mat_base$TX_SUCESSO, breaks=c(0, 0.2, 0.4, 0.6, 0.8, 1), include.lowest = T)
table(mat_base$TX_SUCESSO.cl)
## 
##   [0,0.2] (0.2,0.4] (0.4,0.6] (0.6,0.8]   (0.8,1] 
##        73       117       129        86        25

Análise para a área de Educação Física:

#GRAFICOS E ANALISES POR AREA

mat_freq_edf = mat_base %>% filter(AREA_AVALI == 'EDUCAÇÃO FÍSICA (BACHARELADO)')
mat_freq_edf = table(mat_freq_edf$TX_SUCESSO.cl, mat_freq_edf$RPC_m.cl)
mat_freq_edf = prop.table(mat_freq_edf)

#reshape da tabela
mat_freq_edf = reshape2::melt(mat_freq_edf)

ggplot(mat_freq_edf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = round(value*100, 1))) +
  scale_fill_gradient(low = "white", high = "green")+
  ggtitle("Taxa de sucesso x Renda (% do total da amostra) - EDUCAÇÃO FÍSICA") +
  xlab("Taxa de Sucesso") + ylab("Renda per Capita (Sal.Min.)")+
  annotate("segment", x=-Inf, xend=Inf,y=Inf, yend=-Inf, colour = 'red', linetype = "dashed", size = 1)

Análise para a área de Enfermagem:

#GRAFICOS E ANALISES POR AREA

mat_freq_enf = mat_base %>% filter(AREA_AVALI == 'ENFERMAGEM')
mat_freq_enf = table(mat_freq_enf$TX_SUCESSO.cl, mat_freq_enf$RPC_m.cl)
mat_freq_enf = prop.table(mat_freq_enf)
#reshape da tabela
mat_freq_enf = reshape2::melt(mat_freq_enf)

ggplot(mat_freq_enf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = round(value*100, 1))) +
  scale_fill_gradient(low = "white", high = "green")+
  ggtitle("Taxa de sucesso x Renda (% do total da amostra) - ENFERMAGEM") +
  xlab("Taxa de Sucesso") + ylab("Renda per Capita (Sal.Min.)")+
  annotate("segment", x=-Inf, xend=Inf,y=Inf, yend=-Inf, colour = 'red', linetype = "dashed", size = 1)

Análise para a área de Engenharia Civil:

#GRAFICOS E ANALISES POR AREA

mat_freq_eng = mat_base %>% filter(AREA_AVALI == 'ENGENHARIA CIVIL')
mat_freq_eng = table(mat_freq_eng$TX_SUCESSO.cl, mat_freq_eng$RPC_m.cl)
mat_freq_eng = prop.table(mat_freq_eng)
#reshape da tabela
mat_freq_eng = reshape2::melt(mat_freq_eng)

ggplot(mat_freq_eng, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = round(value*100, 1))) +
  scale_fill_gradient(low = "white", high = "green")+
  ggtitle("Taxa de sucesso x Renda (% do total da amostra) - ENGENHARIA CIVIL") +
  xlab("Taxa de Sucesso") + ylab("Renda per Capita (Sal.Min.)")+
  annotate("segment", x=-Inf, xend=Inf,y=Inf, yend=-Inf, colour = 'red', linetype = "dashed", size = 1)

5.3.2 Análise por distribuição gráfica em quadrantes (4)

Área: EDUCAÇÃO FÍSICA (BACHARELADO)

Filtro:

mat_base_edf = base_cursos %>% filter(AREA_AVALI == 'EDUCAÇÃO FÍSICA (BACHARELADO)')

Quebrando a variável receita em 2 grupos, baseado na média:

mat_base_edf$RPC_m.cl = cut(mat_base_edf$RPC_m, breaks=c(0, mean(mat_base_edf$RPC_m), max(mat_base_edf$RPC_m)), include.lowest=TRUE)
table(mat_base_edf$RPC_m.cl)
## 
##    [0,1.82] (1.82,6.94] 
##          82          38

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

mat_base_edf$TX_SUCESSO.cl = cut(mat_base_edf$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(mat_base_edf$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##      86      34

Juntando as duas e tranformando:

mat_base_edf = table(mat_base_edf$TX_SUCESSO.cl, mat_base_edf$RPC_m.cl)
mat_base_edf = prop.table(mat_base_edf)
mat_base_edf = reshape2::melt(mat_base_edf)

Gráfico de percentual de participação por quadrante:

ggplot(mat_base_edf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Renda (% do total da amostra) - EDUCAÇÃO FÍSICA") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Menor Renda"  %<->% "Maior Renda"))

Área: ENFERMAGEM

Filtro:

mat_base_enf = base_cursos %>% filter(AREA_AVALI == 'ENFERMAGEM')

Quebrando a variável receita em 2 grupos, baseado na média:

mat_base_enf$RPC_m.cl = cut(mat_base_enf$RPC_m, breaks=c(0, mean(mat_base_enf$RPC_m), max(mat_base_enf$RPC_m)), include.lowest=TRUE)
table(mat_base_enf$RPC_m.cl)
## 
##    [0,1.5] (1.5,4.64] 
##         91         57

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

mat_base_enf$TX_SUCESSO.cl = cut(mat_base_enf$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(mat_base_enf$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##      72      76

Juntando as duas e tranformando:

mat_base_enf = table(mat_base_enf$TX_SUCESSO.cl, mat_base_enf$RPC_m.cl)
mat_base_enf = prop.table(mat_base_enf)

mat_base_enf = reshape2::melt(mat_base_enf)

Gráfico de percentual de participação por quadrante:

ggplot(mat_base_enf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Renda (% do total da amostra) - ENFERMAGEM") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Menor Renda"  %<->% "Maior Renda"))

Área: ENGENHARIA CIVIL

Filtro:

mat_base_eng = base_cursos %>% filter(AREA_AVALI == 'ENGENHARIA CIVIL')

Quebrando a variável receita em 2 grupos, baseado na média:

mat_base_eng$RPC_m.cl = cut(mat_base_eng$RPC_m, breaks=c(0, mean(mat_base_eng$RPC_m), max(mat_base_eng$RPC_m)), include.lowest=TRUE)
table(mat_base_eng$RPC_m.cl)
## 
##  [0,2.51] (2.51,17] 
##       118        44

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

mat_base_eng$TX_SUCESSO.cl = cut(mat_base_eng$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(mat_base_eng$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##     112      50

Juntando as duas e tranformando:

mat_base_eng = table(mat_base_eng$TX_SUCESSO.cl, mat_base_eng$RPC_m.cl)
mat_base_eng = prop.table(mat_base_eng)

mat_base_eng = reshape2::melt(mat_base_eng)

Gráfico de percentual de participação por quadrante:

ggplot(mat_base_eng, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Renda (% do total da amostra) - ENGENHARIA CIVIL") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Menor Renda"  %<->% "Maior Renda"))

Liberando variáveis:

rm(base)
rm(base_cursos)
rm(mat_base_enf)
rm(mat_base_eng)
rm(mat_base_edf)

5.4 Conclusão da Etapa

Conseguimos verificar, principalmente nas áreas de Educação Física e Engenharia que onde houve maior concentração de cursos com renda média abaixo da média também tiveram desempenho abaixo de 50% na taxa de sucesso.

6 Análise Taxa de Sucesso x Situação Financeira (informada)

Iremos analizar e cruzar as informações entre a taxa de sucesso calculada na etapa anterior e a situação financeira do estudante presente mas respostas do Questionario do Estudante (QE_I09).

A pergunta feita ao estudante nesta etapa é descrita, com suas opções, abaixo:

|Qual alternativa a seguir melhor descreve sua situação financeira (incluindo bolsas)?
| A = Não tenho renda e meus gastos são financiados por programas |governamentais.
| B = Não tenho renda e meus gastos são financiados pela minha família ou por outras pessoas.
| C = Tenho renda, mas recebo ajuda da família ou de outras pessoas para financiar meus gastos.
| D = Tenho renda e não preciso de ajuda para financiar meus gastos.
| E = Tenho renda e contribuo com o sustento da família.
| F = Sou o principal responsável pelo sustento da família.
| Nesta análise iremos agrupar as respostas em dois grupos principais (que dependem de terceiros e os que não dependem de terceiros ou possuem r enda).

6.1 Tratamento do Questionário

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
#install.packages("tidyverse")
library(tidyverse)
library(readr)
library(dplyr)

Carregando bases anteriormente salvas:

#CARREGAMENTO DA BASE ENADE TRATADA (1)
base_Enade_completa = readRDS("./data/enade_microdados_2019.rds")
base = readRDS("./data/base_analise_2019_data.rds")
#Seleção das colunas do ENADE necessárias para a análise:
QE_I09 = base_Enade_completa %>%  select(c(2,6,78))
QE_I09 = drop_na(QE_I09)  #remove os vazios

Agrupamento das respostas de acordo com IES e Curso:

#QE_I09 - Suporte Financeiro
QE_I09 =  QE_I09 %>% group_by(CO_IES, CO_CURSO, QE_I09) %>% 
                     summarise(Qtd = n()) %>% 
                     spread(QE_I09, Qtd)
#zerando os NA's
QE_I09[is.na(QE_I09)] = 0

dim(QE_I09)
## [1] 8319    8

Consideramos que as respostas A, B e C se encaixam em “Terceiros” e as D, E e F serão consideradas “Próprio”. Para a distribuição será realizada uma razão entre as variáveis (Proprios / Total), onde a razão acima de 0.5 tende a ter mais registros com recursos prórprios do que de terceiros.

#Agrupando as 6 variáveis de resposta em 2
QE_I09 = QE_I09 %>% 
        mutate(Taxa_SuporteFin = (D + E + F) / (A + B + C + D + E + F)) %>% 
        select (-c(3,4,5,6,7,8))

Incorporando a Taxa de Sucesso, através de Join:

base_QE_I09_TX = base %>% left_join(QE_I09) 
base_QE_I09_TX = drop_na(base_QE_I09_TX)

Salvando os resultados:

saveRDS(base_QE_I09_TX,"./data/QE_I09+TX_2019_data.rds")

6.2 Filtro Amostral

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
#install.packages("tidyverse")
library(tidyverse)
library(readr)
library(dplyr)

Carga de base salva e filtro:

base = readRDS("./data/QE_I09+TX_2019_data.rds")
base_cursos = base %>% filter(AREA_AVALI %in% c("ENGENHARIA CIVIL", "ENFERMAGEM", "EDUCAÇÃO FÍSICA (BACHARELADO)"), SGL_UF =='SP', TX_SUCESSO > 0)
base_cursos = base_cursos %>%  select(c(2, 25, 26))

6.3 Análise dos resultados

Esta análise será por visualização de participação em cada um dos quadrantes.

6.3.1 Análise por distribuição gráfica em quadrantes (4)

Área: EDUCAÇÃO FÍSICA (BACHARELADO)

Filtro:

qe09_base_edf = base_cursos %>% filter(AREA_AVALI == 'EDUCAÇÃO FÍSICA (BACHARELADO)')
dim(qe09_base_edf)
## [1] 120   3

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

qe09_base_edf$TX_SUCESSO.cl = cut(qe09_base_edf$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(qe09_base_edf$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##      86      34

Quebrando a variável Taxa de Suporte em 2 grupos, sendo que acima de 1 são predominantemente utilizando recursos próprios:

qe09_base_edf$Taxa_SuporteFin.cl = cut(qe09_base_edf$Taxa_SuporteFin, breaks=c(0, 0.5, 1), include.lowest=TRUE)
table(qe09_base_edf$Taxa_SuporteFin.cl)
## 
## [0,0.5] (0.5,1] 
##     106      14

Juntando as duas e tranformando:

qe09_base_edf = table(qe09_base_edf$TX_SUCESSO.cl, qe09_base_edf$Taxa_SuporteFin.cl)
qe09_base_edf = prop.table(qe09_base_edf)
qe09_base_edf = reshape2::melt(qe09_base_edf)

Gráfico de percentual de participação por quadrante:

ggplot(qe09_base_edf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Suporte Financeiro (% do total da amostra) - EDUCAÇÃO FÍSICA") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Terceiros"  %<->% "Próprios"))

Área: ENFERMAGEM

Filtro:

qe09_base_enf = base_cursos %>% filter(AREA_AVALI == 'ENFERMAGEM')
dim (qe09_base_enf)
## [1] 148   3

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

qe09_base_enf$TX_SUCESSO.cl = cut(qe09_base_enf$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(qe09_base_enf$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##      72      76

Quebrando a variável Taxa de Suporte em 2 grupos, sendo que acima de 1 são predominantemente utilizando recursos próprios:

qe09_base_enf$Taxa_SuporteFin.cl = cut(qe09_base_enf$Taxa_SuporteFin, breaks=c(0, 0.5, 1), include.lowest=TRUE)
table(qe09_base_enf$Taxa_SuporteFin.cl)
## 
## [0,0.5] (0.5,1] 
##     112      36

Juntando as duas e tranformando:

qe09_base_enf = table(qe09_base_enf$TX_SUCESSO.cl, qe09_base_enf$Taxa_SuporteFin.cl)
qe09_base_enf = prop.table(qe09_base_enf)

qe09_base_enf = reshape2::melt(qe09_base_enf)

Gráfico de percentual de participação por quadrante:

ggplot(qe09_base_enf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Suporte Financeiro (% do total da amostra) - ENFERMAGEM") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Terceiros"  %<->% "Próprios"))

Área: ENGENHARIA CIVIL

Filtro:

qe09_base_eng = base_cursos %>% filter(AREA_AVALI == 'ENGENHARIA CIVIL')
dim(qe09_base_eng)
## [1] 162   3

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

qe09_base_eng$TX_SUCESSO.cl = cut(qe09_base_eng$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(qe09_base_eng$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##     112      50

Quebrando a variável receita em 2 grupos, baseado na média:

qe09_base_eng$Taxa_SuporteFin.cl = cut(qe09_base_eng$Taxa_SuporteFin, breaks=c(0, 0.5, 1), include.lowest=TRUE)
table(qe09_base_eng$Taxa_SuporteFin.cl)
## 
## [0,0.5] (0.5,1] 
##     117      45

Juntando as duas e tranformando:

qe09_base_eng = table(qe09_base_eng$TX_SUCESSO.cl, qe09_base_eng$Taxa_SuporteFin.cl)
qe09_base_eng = prop.table(qe09_base_eng)

qe09_base_eng = reshape2::melt(qe09_base_eng)

Gráfico de percentual de participação por quadrante:

ggplot(qe09_base_eng, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Suporte Financeiro (% do total da amostra) - ENGENHARIA CIVIL") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Terceiros"  %<->% "Próprios"))

Liberando variáveis:

rm(base)
rm(base_cursos)
rm(qe09_base_eng)
rm(qe09_base_edf)
rm(qe09_base_enf)

7 Análise Taxa de Sucesso x Empregabilidade (informada)

Iremos analizar e cruzar as informações entre a taxa de sucesso calculada na etapa anterior e a situação da empregabilidade do estudante, presente mas respostas do Questionario do Estudante (QE_I10).

A pergunta feita ao estudante nesta etapa é descrita, com suas opções, abaixo:

 Qual alternativa a seguir melhor descreve sua situação de trabalho (exceto estágio ou bolsas)?

 A = Não estou trabalhando.

 B = Trabalho eventualmente.

 C = Trabalho até 20 horas semanais.

 D = Trabalho de 21 a 39 horas semanais.

 E = Trabalho 40 horas semanais ou mais.

Nesta análise iremos agrupar as respostas em dois grupos principais (que não possuem emprego regular (A, B e C) e os que possuem regularidade no emprego (D e E) ).

7.1 Tratamento do Questionário

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
#install.packages("tidyverse")
library(tidyverse)
library(readr)
library(dplyr)

Carregando bases anteriormente salvas:

#CARREGAMENTO DA BASE ENADE TRATADA (1)
base_Enade_completa = readRDS("./data/enade_microdados_2019.rds")
base = readRDS("./data/base_analise_2019_data.rds")
#Seleção das colunas do ENADE necessárias para a análise:
QE_I10 = base_Enade_completa %>%  select(c(2,6,79))
QE_I10 = drop_na(QE_I10)  #remove os vazios

Agrupamento das respostas de acordo com IES e Curso:

#QE_I09 - Suporte Financeiro
QE_I10 =  QE_I10 %>% group_by(CO_IES, CO_CURSO, QE_I10) %>% 
                     summarise(Qtd = n()) %>% 
                     spread(QE_I10, Qtd)
#zerando os NA's
QE_I10[is.na(QE_I10)] = 0

dim(QE_I10)
## [1] 8319    7

Consideramos que as respostas A, B e C se encaixam em “Sub-Emprego” e as D, E serão consideradas “Empregado”. Para a distribuição será realizada uma razão entre as variáveis (Empregado / Total), onde a razão acima de 0.5 tende a ter mais registros de alunos com Empregos de tempo integral.

#Agrupando as 6 variáveis de resposta em 2
QE_I10 = QE_I10 %>% 
        mutate(Taxa_Empregabilidade = (D + E ) / (A + B + C + D + E )) %>% 
        select (-c(3,4,5,6,7))

Incorporando a Taxa de Sucesso, através de Join:

base_QE_I10_TX = base %>% left_join(QE_I10) 
base_QE_I10_TX = drop_na(base_QE_I10_TX)

Salvando os resultados:

saveRDS(base_QE_I10_TX,"./data/QE_I10+TX_2019_data.rds")

7.2 Filtro Amostral

Carga de Bibliotecas utilizadas

#install.packages("readr")
#install.packages("dplyr")
#install.packages("tidyverse")
library(tidyverse)
library(readr)
library(dplyr)

Carga de base salva e filtro:

base = readRDS("./data/QE_I10+TX_2019_data.rds")
base_cursos = base %>% filter(AREA_AVALI %in% c("ENGENHARIA CIVIL", "ENFERMAGEM", "EDUCAÇÃO FÍSICA (BACHARELADO)"), SGL_UF =='SP', TX_SUCESSO > 0)
base_cursos = base_cursos %>%  select(c(2, 25, 26))

7.3 Análise dos resultados

Esta análise será por visualização de participação em cada um dos quadrantes.

7.3.1 Análise por distribuição gráfica em quadrantes (4)

Área: EDUCAÇÃO FÍSICA (BACHARELADO)

Filtro:

qe10_base_edf = base_cursos %>% filter(AREA_AVALI == 'EDUCAÇÃO FÍSICA (BACHARELADO)')
dim(qe10_base_edf)
## [1] 120   3

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

qe10_base_edf$TX_SUCESSO.cl = cut(qe10_base_edf$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(qe10_base_edf$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##      86      34

Quebrando a variável Taxa de Suporte em 2 grupos, sendo que acima de 1 são predominantemente utilizando recursos próprios:

qe10_base_edf$Taxa_Empregabilidade.cl = cut(qe10_base_edf$Taxa_Empregabilidade, breaks=c(0, 0.5, 1), include.lowest=TRUE)
table(qe10_base_edf$Taxa_Empregabilidade.cl)
## 
## [0,0.5] (0.5,1] 
##      84      36

Juntando as duas e tranformando:

qe10_base_edf = table(qe10_base_edf$TX_SUCESSO.cl, qe10_base_edf$Taxa_Empregabilidade.cl)
qe10_base_edf = prop.table(qe10_base_edf)
qe10_base_edf = reshape2::melt(qe10_base_edf)

Gráfico de percentual de participação por quadrante:

ggplot(qe10_base_edf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Empregabilidade (% do total da amostra) - EDUCAÇÃO FÍSICA") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Menor"  %<->% "Jornada Emprego" %<->% "Maior"))

Área: ENFERMAGEM

Filtro:

qe10_base_enf = base_cursos %>% filter(AREA_AVALI == 'ENFERMAGEM')
dim (qe10_base_enf)
## [1] 148   3

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

qe10_base_enf$TX_SUCESSO.cl = cut(qe10_base_enf$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(qe10_base_enf$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##      72      76

Quebrando a variável Taxa de Suporte em 2 grupos, sendo que acima de 1 são predominantemente utilizando recursos próprios:

qe10_base_enf$Taxa_Empregabilidade.cl = cut(qe10_base_enf$Taxa_Empregabilidade, breaks=c(0, 0.5, 1), include.lowest=TRUE)
table(qe10_base_enf$Taxa_Empregabilidade.cl)
## 
## [0,0.5] (0.5,1] 
##      73      75

Juntando as duas e tranformando:

qe10_base_enf = table(qe10_base_enf$TX_SUCESSO.cl, qe10_base_enf$Taxa_Empregabilidade.cl)
qe10_base_enf = prop.table(qe10_base_enf)

qe10_base_enf = reshape2::melt(qe10_base_enf)

Gráfico de percentual de participação por quadrante:

ggplot(qe10_base_enf, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Empregabilidade (% do total da amostra) - ENFERMAGEM") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Menor"  %<->% "Jornada Emprego" %<->% "Maior"))

Área: ENGENHARIA CIVIL

Filtro:

qe10_base_eng = base_cursos %>% filter(AREA_AVALI == 'ENGENHARIA CIVIL')
dim(qe10_base_eng)
## [1] 162   3

Quebrando a variável Taxa de Sucesso em 2 grupos (50%):

qe10_base_eng$TX_SUCESSO.cl = cut(qe10_base_eng$TX_SUCESSO, breaks=c(0, 0.5, 1), include.lowest = T)
table(qe10_base_eng$TX_SUCESSO.cl)
## 
## [0,0.5] (0.5,1] 
##     112      50

Quebrando a variável receita em 2 grupos, baseado na média:

qe10_base_eng$Taxa_Empregabilidade.cl = cut(qe10_base_eng$Taxa_Empregabilidade, breaks=c(0, 0.5, 1), include.lowest=TRUE)
table(qe10_base_eng$Taxa_Empregabilidade.cl)
## 
## [0,0.5] (0.5,1] 
##      29     133

Juntando as duas e tranformando:

qe10_base_eng = table(qe10_base_eng$TX_SUCESSO.cl, qe10_base_eng$Taxa_Empregabilidade.cl)
qe10_base_eng = prop.table(qe10_base_eng)

qe10_base_eng = reshape2::melt(qe10_base_eng)

Gráfico de percentual de participação por quadrante:

ggplot(qe10_base_eng, aes(Var1, Var2)) +
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = paste(round(100*value, 2), "%", sep=""))) +
  scale_fill_gradient(low = "white", high = "green", labels=scales::percent)+
  ggtitle("Taxa de sucesso x Empregabilidade (% do total da amostra) - ENGENHARIA CIVIL") +
  xlab(expression("Menor Taxa de Sucesso" %<->% "Maior Taxa de Sucesso")) + ylab(expression("Menor"  %<->% "Jornada Emprego" %<->% "Maior"))

Liberando variáveis:

rm(base)
rm(base_cursos)
rm(qe10_base_eng)
rm(qe10_base_edf)
rm(qe10_base_enf)