ESPECIALIZAÇÃO CIÊNCIA DE DADOS - T. 01

Bernardo Paes // Marcio Gonzalez

28/12/2021

Projeto Final

Carregando Pacotes

#install.packages(remotes)  # Caso seja necessário
remotes::install_github("juba/rmdformats")
remotes::install_github("glin/reactable")

vetor_pacotes=c("readr",
                "ggplot2",
                "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] FALSE

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_I08,
                                                        QE_I21,QE_I23,NT_OBJ_FG, 
                                                        NT_OBJ_CE,
                                                        TP_SEXO,
) 


campos<-  c('NT_OBJ_FG(Nota bruta)' ,'CO_GRUPO(Código da área do curso)', 'CO_REGIAO_CURSO', 'QE_I02(Raça)' ,'CO_TURNO_GRADUACAO(Turno da Graduação')
resultado <-  c('Quantitativa Contínua' ,'Qualitativa Nominal', 'Qualitativa Nominal', 'Qualitativa Nominal' ,'Qualitativa Ordinal')
Tiposvariáveis <- data.frame(campos, resultado)

Tiposvariáveis %>%  kbl(caption = "Tipos de variáveis - Classificação") %>%  kable_material_dark(full_width = T)
Tipos de variáveis - Classificação
campos resultado
NT_OBJ_FG(Nota bruta) Quantitativa Contínua
CO_GRUPO(Código da área do curso) Qualitativa Nominal
CO_REGIAO_CURSO Qualitativa Nominal
QE_I02(Raça) Qualitativa Nominal
CO_TURNO_GRADUACAO(Turno da Graduação Qualitativa Ordinal

Selecionando o curso 5401 e 5402 – Ciências Sociais (Bacharelado e Licenciatura)

microdados_ti = microdados_enade_filtrados %>% filter(CO_GRUPO==5401 | CO_GRUPO==5402 ) 

Transformando as variaveis (Colocando os labels)

Raça, turno da graduação, Sexo, região, estado cível , Horass estudos

microdados_ti = microdados_ti %>% mutate(TURNO_GRADUACAO = case_when( CO_TURNO_GRADUACAO == "1" ~ "Matutino",
                                                                    CO_TURNO_GRADUACAO == "2" ~ "Vespertino",
                                                                    CO_TURNO_GRADUACAO == "3" ~ "Integral",
                                                                    CO_TURNO_GRADUACAO == "4" ~ "Noturno"
)) 



microdados_ti = microdados_ti %>% mutate(regiao = case_when( CO_REGIAO_CURSO == 1 ~ "Norte",
                                                             CO_REGIAO_CURSO == 2 ~ "Nordeste",
                                                             CO_REGIAO_CURSO == 3 ~ "Sudeste",
                                                             CO_REGIAO_CURSO == 4 ~ "Sul",
                                                             CO_REGIAO_CURSO == 5 ~ "Centro-Oeste"
)) 

#sexo
microdados_ti = microdados_ti %>% mutate(sexo = case_when( TP_SEXO == "M" ~ "Masculino",
                                                           TP_SEXO == "F" ~ "Feminino")) 

microdados_ti = microdados_ti %>% mutate(hestudos = case_when( QE_I23 == "A" ~ "Nenhuma, apenas assisto as aulas",
                                                               QE_I23 == "B" ~ "De uma a três",
                                                               QE_I23 == "C" ~ "De quatro a sete",
                                                               QE_I23 == "D" ~ "De oito a doze",
                                                               QE_I23 == "E" ~ "Mais de doze")) 

microdados_ti = microdados_ti %>% mutate(
  estado_civil2 = case_when(
    QE_I01 == "A" ~ "Solteiro(a)",
    QE_I01 == "B" ~ "Casado(a)",
    QE_I01 == "C" ~ "Separado(a)",
    QE_I01 == "D" ~ "Viúvo(a)",
    QE_I01 == "E" ~ "Outro"
  )
)

microdados_ti = microdados_ti %>% mutate(
  Raça = case_when(
    QE_I02 == "A" ~ "Branca.",
    QE_I02 == "B" ~ "Preta.",
    QE_I02 == "C" ~ "Amarela.",
    QE_I02 == "D" ~ "Parda.",
    QE_I02 == "E" ~ "Indígena.",
    QE_I02 == "F" ~ "NãoDeclarada"
  )
)

Data quality e Bloco da analise descritiva das variáveis

describe(microdados_ti$TURNO_GRADUACAO)
## microdados_ti$TURNO_GRADUACAO 
##        n  missing distinct 
##     7253        0        4 
##                                                       
## Value        Integral   Matutino    Noturno Vespertino
## Frequency        1213       1912       3422        706
## Proportion      0.167      0.264      0.472      0.097
unique(microdados_ti$TURNO_GRADUACAO) %>% kbl(caption = "Referente aos turnos") %>% kable_material_dark(full_width = T) 
Referente aos turnos
x
Vespertino
Matutino
Integral
Noturno
describe(microdados_ti$Raça)
## microdados_ti$Raça 
##        n  missing distinct 
##     5124     2129        6 
## 
## lowest : Amarela.     Branca.      Indígena.    NãoDeclarada Parda.      
## highest: Branca.      Indígena.    NãoDeclarada Parda.       Preta.      
##                                                                            
## Value          Amarela.      Branca.    Indígena. NãoDeclarada       Parda.
## Frequency            59         2392           59          279         1402
## Proportion        0.012        0.467        0.012        0.054        0.274
##                        
## Value            Preta.
## Frequency           933
## Proportion        0.182
unique(microdados_ti$Raça)  %>%  na.omit() %>% kbl(caption = "Referente as Raças declaradas") %>% kable_material_dark(full_width = T)
Referente as Raças declaradas
x
Preta.
Parda.
NãoDeclarada
Branca.
Amarela.
Indígena.

Foi selecionado o curso Ciências Sociais (Bacharelado e Licenciatura), no total de 7253. Serão analisados os turnos da graduação, raça declarada e posteriormente as regiões do país. Os turnos são distribuidos em Integral,Matutino, Noturno e Vespertino. As raças declaradas foram Preta, Parda, Branca, Amarela, Indígena e NãoDeclarada.

#Análise dos NAs
enade2017_sem_NA=microdados_ti %>% na.omit()
com_NA <- dim(microdados_ti)[1]
Sem_NA <- dim(enade2017_sem_NA) [1]
Diferença <- com_NA - Sem_NA

campos <- c('com NA','Sem NA','Diferença')
resultado <-  c(com_NA,Sem_NA,Diferença)
AnaliseNA <- data.frame(campos, resultado) 
AnaliseNA %>%  kbl(caption = "Análise dos NAs") %>%  kable_material_dark(full_width = F)
Análise dos NAs
campos resultado
com NA 7253
Sem NA 4603
Diferença 2650

Ao analisar os valores faltantes dos registros, para não distorcer os valores, os mesmos serão retirados.

#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()

##Confirmar valor selecionado sem NAs 
dim(microdados_ti_sem_NA) [1]
## [1] 4603
#Verificando de foram retirados os NA´S
resumo_nas=microdados_ti_sem_NA %>%
  select(everything()) %>%  
  summarise_all(list(~sum(is.na(.))))
resumo_nas %>% kbl(caption = "Verificando de foram retirados os NAs") %>% kable_material_dark(full_width = F)
Verificando de foram retirados os NAs
CO_GRUPO CO_REGIAO_CURSO NU_IDADE TP_SEXO CO_TURNO_GRADUACAO NT_GER QE_I01 QE_I02 QE_I08 QE_I21 QE_I23 NT_OBJ_FG NT_OBJ_CE TURNO_GRADUACAO regiao sexo hestudos estado_civil2 Raça
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Análise da Nota bruta na parte objetiva do componente específico. (valor de 0 a 100)

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(caption = "Nota bruta da prova") %>% 
  kable_material_dark(full_width = F)
Nota bruta da prova
quantidade media mediana moda cv assimetria curtose
4603 46.53091 47.8 45.8 36.69662 -0.1916263 -0.2382446
#Estatísticas resumo 
summary(microdados_ti_sem_NA$NT_OBJ_CE) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   34.80   47.80   46.53   58.30   91.70

Na analise das notas dos curso selecionado temos as seguinte observações:

A menor nota é zero e a maior 91.70, a média de 46.53 sendo a mediana 47.80.

Nos quartis observamos que 25% da amostra apresenta as notas até 34.80 e 75% até 58.30. Não sendo observado grande amplitude.

Apresenta Distribuições assimétricas à direita, ou positivas: a média é maior do que a moda.

A distribuição é leptocúrtica (mais afilada), Quando Curtose é menor de 0,263.

coeficiente de variação (CV) conjuntos de observações que diferem na média

.

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

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 Ciências Sociais (Bacharelado/Licenciatura)  ")+
  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 Ciências Sociais (Bacharelado/Licenciatura) ") +
  xlab("Nota dos alunos") +
  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 Ciências Sociais (Bacharelado/Licenciatura) ")+
  xlab("Nota dos alunos") +
  ylab("Frequência relativa")

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

## Nesta curva de densidade observa-se o padrão geral da distribuição. A área sob a curva e acima do intervalo de valores é a proporção de todas as observações que se enquadram np intervalo.

Comparando as médias por Raça e Turno da Graduação

#Comparar as médias por Raça e Turno da Graduação
require(dplyr)
microdados_ti_mod2= microdados_ti_sem_NA %>% 
  select(TURNO_GRADUACAO,NT_OBJ_CE,Raça) %>% 
  group_by(Raça,TURNO_GRADUACAO) %>% 
  summarise(  quantidade=n(),
              media = mean(NT_OBJ_CE,na.rm = T),
              mediana = median(NT_OBJ_CE,na.rm = T),
              cv=sd(NT_OBJ_CE,na.rm=T)/media*100,
              amplitude_interquartil=IQR(NT_OBJ_CE)) %>% 
  arrange(desc(mediana))
microdados_ti_mod2  %>% kbl(caption = "Comparar as médias por Raça e Turno da Graduação") %>% kable_material_dark(full_width = F)
Comparar as médias por Raça e Turno da Graduação
Raça TURNO_GRADUACAO quantidade media mediana cv amplitude_interquartil
Amarela. Matutino 14 50.08571 52.15 32.257011 28.250
Indígena. Vespertino 2 51.10000 51.10 3.044295 1.100
Branca. Integral 401 49.23242 50.00 37.972342 30.400
Branca. Matutino 541 49.49298 50.00 35.328065 25.000
NãoDeclarada Vespertino 26 48.36923 47.85 36.882153 27.025
Branca. Noturno 1076 46.62955 47.80 35.956956 23.500
Branca. Vespertino 129 49.34419 47.80 35.924474 21.800
NãoDeclarada Integral 44 46.26591 47.80 40.176326 19.575
NãoDeclarada Matutino 88 47.47614 47.80 36.042743 22.125
Parda. Matutino 291 47.32474 47.80 34.521680 23.500
Preta. Noturno 417 45.54988 47.80 36.015995 23.500
Preta. Vespertino 85 46.61412 47.80 33.921585 23.500
NãoDeclarada Noturno 100 45.41200 46.80 40.827339 23.875
Parda. Integral 205 45.93610 45.80 37.424235 25.000
Parda. Vespertino 132 45.63030 45.80 36.247720 22.075
Preta. Matutino 234 46.64487 45.80 32.754583 21.025
Indígena. Integral 13 43.45385 43.50 50.342718 36.300
Indígena. Matutino 13 43.80000 43.50 39.777932 23.800
Parda. Noturno 618 43.42702 43.50 37.702843 20.900
Amarela. Noturno 27 41.84444 41.70 30.836112 17.400
Indígena. Noturno 27 44.32963 41.70 33.814316 20.100
Preta. Integral 110 41.59727 40.40 44.366859 25.000
Amarela. Integral 8 39.61250 36.95 60.311843 25.575
Amarela. Vespertino 2 17.40000 17.40 70.710678 8.700
#Tabulação cruzada
table(microdados_ti_sem_NA$TURNO_GRADUACAO,microdados_ti_sem_NA$Raça)  %>% kbl(caption = "Tabulação cruzada") %>% kable_material_dark(full_width = F)
Tabulação cruzada
Amarela. Branca. Indígena. NãoDeclarada Parda. Preta.
Integral 8 401 13 44 205 110
Matutino 14 541 13 88 291 234
Noturno 27 1076 27 100 618 417
Vespertino 2 129 2 26 132 85
#Tabulação cruzada proporção
prop.table(table(microdados_ti_sem_NA$TURNO_GRADUACAO,microdados_ti_sem_NA$Raça))  %>% kbl(caption = "Tabulação cruzada proporção") %>% kable_material_dark(full_width = F)
Tabulação cruzada proporção
Amarela. Branca. Indígena. NãoDeclarada Parda. Preta.
Integral 0.0017380 0.0871171 0.0028242 0.0095590 0.0445362 0.0238975
Matutino 0.0030415 0.1175320 0.0028242 0.0191180 0.0632196 0.0508364
Noturno 0.0058657 0.2337606 0.0058657 0.0217250 0.1342603 0.0905931
Vespertino 0.0004345 0.0280252 0.0004345 0.0056485 0.0286769 0.0184662
#assimetria e curtose

dados_turno_raça = microdados_ti_sem_NA %>% 
  select(TURNO_GRADUACAO,NT_OBJ_CE,Raça) %>% 
  group_by(TURNO_GRADUACAO) %>% 
  summarise(  quantidade=n(),
              media = mean(NT_OBJ_CE),
              mediana = median(NT_OBJ_CE),
              cv=sd(NT_OBJ_CE)/media*100,
              amplitude_interquartil=IQR(NT_OBJ_CE),
              assimetria=skewness(NT_OBJ_CE),
              curtose=kurtosis(NT_OBJ_CE)
  ) %>% 
  
  arrange(desc(cv))

dados_turno_raça  %>% kbl(caption = "Raça e Turno da Graduaçao - assimetria e curtose") %>% kable_material_dark(full_width = F)
Raça e Turno da Graduaçao - assimetria e curtose
TURNO_GRADUACAO quantidade media mediana cv amplitude_interquartil assimetria curtose
Integral 781 46.92996 47.8 39.48784 26.1 -0.2215760 -0.4076378
Noturno 2265 45.41876 45.8 36.67494 25.0 -0.2342429 -0.1901636
Vespertino 376 47.19521 47.8 35.95181 23.5 -0.0990334 -0.3197123
Matutino 1181 48.18848 47.8 34.77871 23.4 -0.1342708 -0.2737965

Os valores encontrados ordenados pela média, parecem um tanto homogêneo sem grande variação entre as médias.

Os brancos tem sua maioria em quase todos os turnos, exceto para o Vespertino, provelmente pela menor interesse do horário.

Referente as notas dos turnos, as médias entre os turnos não apresentam grandes variações.

Análises Gráficas - Comparando as médias por Raça e Turno do Curso

#Histograma
dados=microdados_ti_sem_NA
grafico_histograma1 = ggplot(dados, aes(x=NT_OBJ_CE,fill=TURNO_GRADUACAO)) + 
  geom_histogram() +
  ggtitle("Gráfico histograma da Nota por Turno de Graduação") +
  xlab("Notas") +
  ylab("Frequência simples") +
  facet_grid(~TURNO_GRADUACAO)

ggplotly(grafico_histograma1)
dados=microdados_ti_sem_NA
grafico_boxplot1 = ggplot(dados, aes(x=TURNO_GRADUACAO,y=NT_OBJ_CE,fill=TURNO_GRADUACAO)) + 
  geom_boxplot() +
  ggtitle("Gráfico de Box-plot da Nota por Turno da Graduação e Raça")+
  xlab("TURNO da GRADUACAO") +
  ylab("Notas") +
  facet_grid(~Raça)+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))


ggplotly(grafico_boxplot1)

As maiores notas estão nos turnos integrais, nas racas preta e branca,

Comparando as médias por Raça e região

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

microdados_ti_mod3  %>% kbl(caption = "Comparando as médias") %>% kable_material_dark(full_width = F)
Comparando as médias
Raça regiao quantidade media mediana cv amplitude_interquartil assimetria curtose
Indígena. Sul 2 53.20000 53.20 2.658296 1.000 0.0000000 -2.7500000
Amarela. Sul 1 52.20000 52.20 NA 0.000 NaN NaN
Branca. Sul 496 49.85706 50.00 34.893045 23.400 -0.4838859 0.0113492
Amarela. Sudeste 19 49.39474 52.20 40.825915 26.950 -0.6219426 -0.3181982
Parda. Centro-Oeste 113 48.95929 50.00 30.901308 19.200 -0.1274200 -0.6312547
Branca. Centro-Oeste 173 48.84046 50.00 36.984147 25.000 -0.3585504 -0.3183628
NãoDeclarada Sul 27 48.52222 47.80 30.573564 18.700 -0.6038994 -0.3353699
NãoDeclarada Nordeste 72 48.18611 50.00 36.230893 24.475 -0.2749049 -0.7064034
Branca. Sudeste 1103 47.82647 47.80 36.727169 26.100 -0.2307276 -0.1394635
Branca. Nordeste 278 46.71007 45.80 34.245746 19.000 -0.0828865 -0.1116930
Preta. Sudeste 297 46.40640 47.80 36.397102 23.500 -0.3345680 -0.1167837
NãoDeclarada Sudeste 108 46.37315 47.80 42.150587 27.700 -0.3623097 -0.2285938
NãoDeclarada Centro-Oeste 23 46.31739 47.80 32.865992 19.200 -1.0379043 1.2908953
Parda. Nordeste 441 45.77642 45.80 34.561790 23.500 -0.0817263 -0.3092327
Preta. Nordeste 310 45.75032 45.80 33.855206 21.700 -0.1356368 -0.2547052
Parda. Sudeste 405 45.35901 45.80 39.827915 25.000 -0.1358292 -0.4332422
Indígena. Nordeste 14 44.86429 44.55 49.130958 38.250 0.0248792 -1.6794312
Parda. Sul 97 44.48144 45.80 35.375005 20.900 0.2348052 -0.2525638
Preta. Sul 65 44.28154 45.80 37.876859 20.900 -0.6265001 -0.1999713
Indígena. Centro-Oeste 12 44.20833 42.60 26.245150 5.375 0.9084149 -0.2992646
Preta. Centro-Oeste 59 44.16780 43.50 39.463460 24.100 -0.4059911 0.2892166
Indígena. Norte 10 43.77000 45.65 30.867394 17.825 -0.3473684 -1.4074298
Preta. Norte 115 43.45739 41.70 38.200549 26.100 0.0387079 -0.5235698
Indígena. Sudeste 17 42.98235 41.70 43.903180 23.800 0.3509974 -0.4937302
Branca. Norte 97 42.68247 41.70 41.062864 23.800 0.1648507 -0.5297235
NãoDeclarada Norte 28 41.40357 40.40 42.163298 22.875 -0.2482042 -0.8585498
Amarela. Centro-Oeste 4 41.30000 38.25 29.662088 12.150 0.4546470 -1.8963915
Parda. Norte 190 40.23474 39.10 38.115371 20.800 0.2893837 -0.4356211
Amarela. Nordeste 18 39.35000 40.40 33.085827 14.000 0.2022647 -0.1489560
Amarela. Norte 9 35.38889 34.80 41.486875 18.600 -0.3510282 -1.2287805
#Tabulação cruzada
table(microdados_ti_sem_NA$regiao,microdados_ti_sem_NA$Raça)  %>% kbl(caption = "Tabulação cruzada") %>% kable_material_dark(full_width = F)
Tabulação cruzada
Amarela. Branca. Indígena. NãoDeclarada Parda. Preta.
Centro-Oeste 4 173 12 23 113 59
Nordeste 18 278 14 72 441 310
Norte 9 97 10 28 190 115
Sudeste 19 1103 17 108 405 297
Sul 1 496 2 27 97 65
#Tabulação cruzada proporção
prop.table(table(microdados_ti_sem_NA$regiao,microdados_ti_sem_NA$Raça))%>% kbl(caption = "Tabulação cruzada proporção") %>% kable_material_dark(full_width = F)
Tabulação cruzada proporção
Amarela. Branca. Indígena. NãoDeclarada Parda. Preta.
Centro-Oeste 0.0008690 0.0375842 0.0026070 0.0049967 0.0245492 0.0128177
Nordeste 0.0039105 0.0603954 0.0030415 0.0156420 0.0958071 0.0673474
Norte 0.0019552 0.0210732 0.0021725 0.0060830 0.0412774 0.0249837
Sudeste 0.0041277 0.2396263 0.0036932 0.0234630 0.0879861 0.0645231
Sul 0.0002172 0.1077558 0.0004345 0.0058657 0.0210732 0.0141212

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

#Histograma
dados=microdados_ti_sem_NA
grafico_histograma2 = ggplot(dados, aes(x=NT_OBJ_CE,fill=regiao)) + 
  geom_histogram()+
  ggtitle("Notas por  Cor e região" )+
  xlab("Qtd") +
  ylab("Frequência simples") +
  facet_grid(~Raça)

ggplotly(grafico_histograma2)
#box-plot
dados=microdados_ti_sem_NA
grafico_boxplot2 = ggplot(dados, aes(x=regiao,y=NT_OBJ_CE,fill=regiao)) + 
  geom_boxplot() +
  ggtitle("Boxplot da Nota por região e Raça")+
  ylab("Notas") +
  facet_grid(~Raça)+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

ggplotly(grafico_boxplot2)

Não foi observado grande quantidade de outlier.

Consolidando os gráficos

grid.arrange( grafico_histograma1,
              grafico_boxplot1,
              grafico_histograma2,
              grafico_boxplot2,
              nrow=2,ncol=2)