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.
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 :
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)
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)
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)
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).
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)
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)
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.
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)
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)
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.
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)
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
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
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)
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.
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).
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_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_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)
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)
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
#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)
Á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)
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.
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).
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")
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))
Esta análise será por visualização de participação em cada um dos quadrantes.
Á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)
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:
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) ).
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")
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))
Esta análise será por visualização de participação em cada um dos quadrantes.
Á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)