Workshop SWAP

Case ENADE/INEP

Carregando Pacotes

vetor_pacotes=c("readr",
                "ggplot2",
                "rmdformats",
                "reactable",
                "plotly",
                "e1071",
                "dplyr",
                "Hmisc",
                "DescTools",
                "esquisse",
                "kableExtra",
                "gridExtra",
                "e1071",
                "devtools"
)
#install.packages(vetor_pacotes)

lapply(vetor_pacotes, 
       require, 
       character.only = TRUE)
## [[1]]
## [1] TRUE
## 
## [[2]]
## [1] TRUE
## 
## [[3]]
## [1] TRUE
## 
## [[4]]
## [1] TRUE
## 
## [[5]]
## [1] TRUE
## 
## [[6]]
## [1] TRUE
## 
## [[7]]
## [1] TRUE
## 
## [[8]]
## [1] TRUE
## 
## [[9]]
## [1] TRUE
## 
## [[10]]
## [1] TRUE
## 
## [[11]]
## [1] TRUE
## 
## [[12]]
## [1] TRUE
## 
## [[13]]
## [1] TRUE
## 
## [[14]]
## [1] TRUE

Importacao do banco do ENADE/INEP

enade2017 = read_csv2("MICRODADOS_ENADE_2017.txt") 

Selecionando as variaveis desejadas

microdados_enade_filtrados = enade2017 %>% dplyr::select(
  CO_GRUPO,
  CO_REGIAO_CURSO,
  NU_IDADE,
  TP_SEXO,
  CO_TURNO_GRADUACAO,
  NT_GER,
  QE_I01,
  QE_I02,
  QE_I03,
  QE_I04,
  QE_I08,
  QE_I15,
  QE_I21,
  QE_I23,
  NT_OBJ_FG,
  NT_OBJ_CE
)      

Selecionando o curso de ADS

microdados_ti = microdados_enade_filtrados %>% filter(CO_GRUPO == 72) 

Transformando as variaveis (Colocando os labels)

Data quality e Bloco da analise descritiva das variaveis

#Contabilizando os Na´s
resumo_nas=microdados_ti %>%
  select(everything()) %>%  
  summarise_all(list(~sum(is.na(.))))

#Removendo  Na´S De todas As variáveis que possuem NA
microdados_ti_sem_NA=microdados_ti %>% na.omit()

#Verificando de foram retirados os NA´S
resumo_nas2=microdados_ti_sem_NA %>%
  select(everything()) %>%  
  summarise_all(list(~sum(is.na(.))))
resumo_nas %>% kbl %>% kable_material_dark(full_width = F)
NU_IDADE NT_GER NT_OBJ_FG NT_OBJ_CE estado_civil cor nacionalidade escolaridade_pai regiao sexo renda ingresso_bolsa hestudos
0 2795 2795 2795 2079 2079 2079 2079 0 0 2079 2079 2079
microdados_ti_sem_NA %>% 
  select(NT_OBJ_CE) %>% 
  summarise(  quantidade=n(),
              media = mean(NT_OBJ_CE),
              mediana = median(NT_OBJ_CE),
              moda=Mode(NT_OBJ_CE),
              cv=sd(NT_OBJ_CE)/media*100,
              assimetria=skewness(NT_OBJ_CE),
              curtose=kurtosis(NT_OBJ_CE)
  ) %>% 
  arrange(desc(mediana))  %>% 
  kbl %>% 
  kable_material_dark(full_width = F)
quantidade media mediana moda cv assimetria curtose
9636 42.0906 40 40 37.42576 0.1863963 -0.2791433
#Estatísticas resumo 
summary(microdados_ti_sem_NA$NT_OBJ_CE) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   30.00   40.00   42.09   55.00   95.00

Gráficos da análise descritiva para a variável nota dos alunos de ADS

g_hist=ggplot(microdados_ti_sem_NA,aes(x=NT_OBJ_CE)) + 
  geom_histogram(color = "black",fill="lightblue",bins =50,aes(y=(..count..)/sum(..count..)))+
  ggtitle("Histograma da nota dos alunos de análise de sistemas (ADS) ")+
  xlab("nota") +
  ylab("Frequência relativa")

g_densidade=ggplot(microdados_ti_sem_NA,aes(x=NT_OBJ_CE))+
  geom_density(col=2,size = 1, aes(y = 27 * (..count..)/sum(..count..))) +
  ggtitle("Curva de densidade da nota dos alunos de análise de sistemas") +
  xlab("Nota dos alunos de ADS") +
  ylab("Frequência relativa")

g_hist_densidade = ggplot(microdados_ti_sem_NA,aes(x=NT_OBJ_CE)) + 
  geom_histogram(color = "black",fill="lightblue",bins =50,aes(y=(..count..)/sum(..count..)))+
  geom_density(col=2,size = 1, aes(y = 27 * (..count..)/sum(..count..))) +
  ggtitle("Histograma e curva de densidade da nota dos alunos de análise de sistemas")+
  xlab("Nota dos alunos de ADS") +
  ylab("Frequência relativa")

grid.arrange( g_hist,
              g_densidade,
              g_hist_densidade,
              nrow=3,ncol=1)

Comparando as médias por sexo e estado civil

#Comparar as médias por sexo e estado civil
require(dplyr)
microdados_ti_mod2= microdados_ti_sem_NA %>% 
  select(estado_civil,NT_GER,sexo) %>% 
  group_by(sexo,estado_civil) %>% 
  summarise(  quantidade=n(),
              media = mean(NT_GER,na.rm = T),
              mediana = median(NT_GER,na.rm = T),
              cv=sd(NT_GER,na.rm=T)/media*100,
              amplitude_interquartil=IQR(NT_GER)) %>% 
  arrange(desc(mediana))
microdados_ti_mod2  %>% kbl %>% kable_material_dark(full_width = F)
sexo estado_civil quantidade media mediana cv amplitude_interquartil
Masculino Solteiro(a) 6196 40.73179 40.2 31.75809 18.125
Feminino Solteiro(a) 1093 40.16587 39.5 30.43281 16.700
Masculino Outro 264 39.57500 39.5 33.66701 17.225
Masculino Separado(a) 154 39.62597 38.9 32.83213 15.675
Feminino Outro 39 40.50000 38.7 29.81838 17.450
Masculino Casado(a) 1681 39.11059 38.2 33.63496 17.900
Feminino Separado(a) 29 39.88621 35.9 36.97135 21.100
Feminino Casado(a) 169 35.80473 35.8 28.19825 13.800
Masculino Viúvo(a) 7 32.01429 35.3 25.46293 10.150
Feminino Viúvo(a) 4 33.65000 32.7 18.85376 5.150
#Tabulação cruzada
table(microdados_ti_sem_NA$estado_civil,microdados_ti_sem_NA$sexo)  %>% kbl %>% kable_material_dark(full_width = F)
Feminino Masculino
Casado(a) 169 1681
Outro 39 264
Separado(a) 29 154
Solteiro(a) 1093 6196
Viúvo(a) 4 7
#Tabulação cruzada proporção
prop.table(table(microdados_ti_sem_NA$estado_civil,microdados_ti_sem_NA$sexo))  %>% kbl %>% kable_material_dark(full_width = F)
Feminino Masculino
Casado(a) 0.0175384 0.1744500
Outro 0.0040473 0.0273973
Separado(a) 0.0030095 0.0159817
Solteiro(a) 0.1134288 0.6430054
Viúvo(a) 0.0004151 0.0007264
#assimetria e curtose

dados_casados = microdados_ti_sem_NA %>% 
  select(estado_civil,NT_GER,sexo) %>% 
  group_by(estado_civil) %>% 
  summarise(  quantidade=n(),
              media = mean(NT_GER),
              mediana = median(NT_GER),
              cv=sd(NT_GER)/media*100,
              amplitude_interquartil=IQR(NT_GER),
              assimetria=skewness(NT_GER),
              curtose=kurtosis(NT_GER)
  ) %>% 
  
  arrange(desc(cv))

dados_casados  %>% kbl %>% kable_material_dark(full_width = F)
estado_civil quantidade media mediana cv amplitude_interquartil assimetria curtose
Separado(a) 183 39.66721 38.7 33.42125 15.95 0.3089961 0.4420301
Casado(a) 1850 38.80859 37.9 33.33901 17.60 0.3242207 -0.0127253
Outro 303 39.69406 39.3 33.13998 17.15 0.3696191 0.1760944
Solteiro(a) 7289 40.64693 40.1 31.56982 17.90 0.1533047 -0.1443958
Viúvo(a) 11 32.60909 33.6 22.24668 7.65 -0.4285442 -1.1530183

Análises Gráficas - Comparando as médias por sexo e estado civil

dados=microdados_ti_sem_NA
grafico_boxplot1 = ggplot(dados, aes(x=estado_civil,y=NT_GER,fill=estado_civil)) + 
  geom_boxplot() +
  ggtitle("Gráfico de Box-plot da Nota por Estado civil e Sexo")+
  xlab("Estado civil") +
  ylab("Notas") +
  facet_grid(~sexo)+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))


ggplotly(grafico_boxplot1)

Comparando as médias por sexo e região

microdados_ti_mod3= microdados_ti_sem_NA %>% 
  select(estado_civil,NT_GER,regiao,hestudos,sexo) %>% 
  group_by(sexo,regiao) %>% 
  summarise(quantidade=n(),
            media = mean(NT_GER),
            mediana = median(NT_GER),
            cv=sd(NT_GER)/media*100,
            amplitude_interquartil=IQR(NT_GER),
            assimetria=skewness(NT_GER),
            curtose=kurtosis(NT_GER)) %>% 
  arrange(desc(media))

microdados_ti_mod3  %>% kbl %>% kable_material_dark(full_width = F)
sexo regiao quantidade media mediana cv amplitude_interquartil assimetria curtose
Feminino Nordeste 107 41.49439 40.10 26.89272 13.150 0.7279419 0.8011439
Masculino Sudeste 4864 40.69354 40.30 31.61288 17.925 0.1552135 -0.1305924
Feminino Sul 218 40.36743 39.20 31.38749 17.350 0.2003281 -0.2015103
Masculino Nordeste 746 40.20912 39.60 33.75074 18.400 0.2466751 -0.0938881
Masculino Sul 1866 40.17637 39.60 33.19460 18.675 0.1895243 -0.1812987
Feminino Sudeste 857 39.57235 38.90 30.76056 16.900 0.1622693 -0.0104767
Masculino Norte 218 39.45229 37.85 30.31492 17.100 0.2366240 -0.3260545
Masculino Centro-Oeste 608 38.47747 37.00 32.82592 17.100 0.3543374 -0.0472158
Feminino Norte 45 37.97111 35.60 29.31818 15.800 0.9252027 1.2911632
Feminino Centro-Oeste 107 37.01776 36.20 30.29093 16.000 0.1015846 -0.2714367
#Tabulação cruzada
table(microdados_ti_sem_NA$regiao,microdados_ti_sem_NA$sexo)  %>% kbl %>% kable_material_dark(full_width = F)
Feminino Masculino
Centro-Oeste 107 608
Nordeste 107 746
Norte 45 218
Sudeste 857 4864
Sul 218 1866
#Tabulação cruzada proporção
prop.table(table(microdados_ti_sem_NA$regiao,microdados_ti_sem_NA$sexo))%>% kbl %>% kable_material_dark(full_width = F)
Feminino Masculino
Centro-Oeste 0.0111042 0.0630967
Nordeste 0.0111042 0.0774180
Norte 0.0046700 0.0226235
Sudeste 0.0889373 0.5047738
Sul 0.0226235 0.1936488

Análises Gráficas - Comparando as médias por sexo e região

#box-plot
dados=microdados_ti_sem_NA
grafico_boxplot2 = ggplot(dados, aes(x=regiao,y=NT_GER,fill=regiao)) + 
  geom_boxplot() +
  ggtitle("Gráfico boxplot da Nota por 
          região e sexo")+
  ylab("Notas") +
  facet_grid(~sexo)+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

ggplotly(grafico_boxplot2)

Análises Gráficas - Comparando as médias por renda e sexo

#box-plot
dados=microdados_ti_sem_NA
grafico_boxplot3 = ggplot(dados, aes(x=renda,y=NT_GER,fill=renda)) + 
  geom_boxplot() +
  ggtitle("Gráfico boxplot da Nota por 
          região e sexo")+
  ylab("Notas") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

ggplotly(grafico_boxplot3)

Análises Gráficas - Porcentagem de horas de estudos

df_pizza_tab = table(microdados_ti_sem_NA$hestudos)
df_pizza_porcent = prop.table(df_pizza_tab)
df_pizza_porcent <<- as.data.frame(df_pizza_porcent)

#pizza
grafico_pizza = plot_ly(df_pizza_porcent,
                        labels = ~ Var1,
                        values = ~ Freq,
                        type = 'pie') %>%
  layout(title = 'Quantas horas por semana, aproximadamente, você dedicou aos estudos, excetuando as horas de aula?')

grafico_pizza

Análises Gráficas - Porcentagem de ingresso por meio de políticas afirmativas ou inclusão

df_pizza_tab = table(microdados_ti_sem_NA$ingresso_bolsa)
df_pizza_porcent = prop.table(df_pizza_tab)
df_pizza_porcent <<- as.data.frame(df_pizza_porcent)

#pizza
grafico_pizza2 = plot_ly(df_pizza_porcent,
                        labels = ~ Var1,
                        values = ~ Freq,
                        type = 'pie') %>%
  layout(title = 'Seu ingresso no curso de graduação se deu por meio de políticas de ação afirmativa ou inclusão social? ')

grafico_pizza2

Análises Gráficas - Porcentagem de alunos por cor

df_pizza_tab = table(microdados_ti_sem_NA$cor)
df_pizza_porcent = prop.table(df_pizza_tab)
df_pizza_porcent <<- as.data.frame(df_pizza_porcent)

#pizza
grafico_pizza3 = plot_ly(df_pizza_porcent,
                        labels = ~ Var1,
                        values = ~ Freq,
                        type = 'pie') %>%
  layout(title = 'Qual a sua cor ou raça?')

grafico_pizza3