2 - Estatística Computacional - 28/02/2018

Objetivo: Somar as linhas de uma matriz de ordem N

library(Rcpp)
library(tidyr)
library(bindr)
library(dplyr, warn.conflicts =  FALSE)
library(ggplot2)
library(microbenchmark)
library(kableExtra)
library(readr)
library(dplyr)
library(knitr)
library(stringr)
library(DT)

cppSum <- function(big.matrix, N) {
  stopifnot(exists("big.matrix")) #pare se nao existir a big.matrix
  stopifnot(exists("N")) #pare se nao existir o N
  Time <- microbenchmark({ 
    colsums <- rowSumsC(big.matrix)
  }, times = N)$time
  return(Time)  
}

3 - Estatística Computacional - 07/03/2018

Objetivo: Banco de Dados Cars - Análise

# Gráfico de dispersão
plot(cars)

# Impressão dos dados
print(cars)
##    speed dist
## 1      4    2
## 2      4   10
## 3      7    4
## 4      7   22
## 5      8   16
## 6      9   10
## 7     10   18
## 8     10   26
## 9     10   34
## 10    11   17
## 11    11   28
## 12    12   14
## 13    12   20
## 14    12   24
## 15    12   28
## 16    13   26
## 17    13   34
## 18    13   34
## 19    13   46
## 20    14   26
## 21    14   36
## 22    14   60
## 23    14   80
## 24    15   20
## 25    15   26
## 26    15   54
## 27    16   32
## 28    16   40
## 29    17   32
## 30    17   40
## 31    17   50
## 32    18   42
## 33    18   56
## 34    18   76
## 35    18   84
## 36    19   36
## 37    19   46
## 38    19   68
## 39    20   32
## 40    20   48
## 41    20   52
## 42    20   56
## 43    20   64
## 44    22   66
## 45    23   54
## 46    24   70
## 47    24   92
## 48    24   93
## 49    24  120
## 50    25   85
library(ggplot2)
library(dplyr)

# Análise Descritiva 

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00
p <- ggplot(cars, aes(x=speed, y=dist))
p  + geom_point() + geom_line(color="red") + geom_smooth()
## `geom_smooth()` using method = 'loess'

p <- cars %>% 
  mutate(teste = speed <= 15) %>% 
  ggplot()
p + geom_histogram(aes(x=dist, fill=teste),color="black", bins=10)

4 - Estatística Computacional - 12/03/2018

Objetivo: Importando uma base de dados - Censo de educação superior 2016

Microdados do INEP: http://inep.gov.br/microdados

library(tidyselect)
## 
## Attaching package: 'tidyselect'
## The following objects are masked from 'package:dplyr':
## 
##     contains, ends_with, everything, matches, num_range, one_of,
##     starts_with
library(tidyverse)
## ── Attaching packages ──────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ tibble  1.3.4     ✔ purrr   0.2.4
## ✔ tibble  1.3.4     ✔ forcats 0.2.0
## ── Conflicts ─────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ tidyselect::contains()    masks dplyr::contains()
## ✖ tidyselect::ends_with()   masks dplyr::ends_with()
## ✖ tidyselect::everything()  masks dplyr::everything()
## ✖ dplyr::filter()           masks stats::filter()
## ✖ dplyr::lag()              masks stats::lag()
## ✖ tidyselect::matches()     masks dplyr::matches()
## ✖ tidyselect::num_range()   masks dplyr::num_range()
## ✖ tidyselect::one_of()      masks dplyr::one_of()
## ✖ tidyselect::starts_with() masks dplyr::starts_with()
library(readr)
base2 <- read_delim("DM_DOCENTE.CSV", "|", 
                    escape_double = FALSE, col_types = cols(CO_CATEGORIA_ADMINISTRATIVA = col_character(), 
                                                            CO_COR_RACA_DOCENTE = col_character(), 
                                                            CO_DOCENTE = col_character(), CO_DOCENTE_IES = col_character(), 
                                                            CO_ESCOLARIDADE_DOCENTE = col_character(), 
                                                            CO_IES = col_character(), CO_MUNICIPIO_NASCIMENTO = col_character(), 
                                                            CO_NACIONALIDADE_DOCENTE = col_character(), 
                                                            CO_ORGANIZACAO_ACADEMICA = col_character(), 
                                                            CO_PAIS_DOCENTE = col_character(), 
                                                            CO_REGIME_TRABALHO = col_character(), 
                                                            CO_SITUACAO_DOCENTE = col_character(), 
                                                            CO_UF_NASCIMENTO = col_character()), 
                    locale = locale(encoding = "ISO-8859-1"), 
                    trim_ws = TRUE)

### Para diminuir a base gera e trabalhar com uma base menor
base5perc <- base2 %>% sample_frac(size = .05)
saveRDS(base5perc,"base5perc.rds")

### Códigos que estavam no markdown que não irei utilizar por enquanto
library(readr)
# base2 <- read_delim("DM_DOCENTE.CSV", "|", 
#     escape_double = FALSE, col_types = cols(CO_CATEGORIA_ADMINISTRATIVA = col_character(), 
#         CO_COR_RACA_DOCENTE = col_character(), 
#         CO_DOCENTE = col_character(), CO_DOCENTE_IES = col_character(), 
#         CO_ESCOLARIDADE_DOCENTE = col_character(), 
#         CO_IES = col_character(), CO_MUNICIPIO_NASCIMENTO = col_character(), 
#         CO_NACIONALIDADE_DOCENTE = col_character(), 
#         CO_ORGANIZACAO_ACADEMICA = col_character(), 
#         CO_PAIS_DOCENTE = col_character(), 
#         CO_REGIME_TRABALHO = col_character(), 
#         CO_SITUACAO_DOCENTE = col_character(), 
#         CO_UF_NASCIMENTO = col_character()), 
#     locale = locale(encoding = "ISO-8859-1"), 
#     trim_ws = TRUE)

#saveRDS(base2, "base2.rds")
#saveRDS(object = base2, file = "dados/base2.rds")

5 - Estatística Computacional - 14/03/2018

Objetivo: Construção de tabelas

library(knitr)
library(tidyverse)

base2 %>% 
  select(NO_IES, DS_CATEGORIA_ADMINISTRATIVA, CO_MUNICIPIO_NASCIMENTO) %>% 
  transmute(Nome = NO_IES, 
            Categoria = DS_CATEGORIA_ADMINISTRATIVA, 
            Codigo = as.character(CO_MUNICIPIO_NASCIMENTO) ) %>% 
  mutate(UF = str_sub(string = Codigo, start = 1, end = 2)) %>% 
  group_by(UF, Categoria) %>% 
  count() %>% 
  filter(UF == "26") %>% arrange(desc(n)) %>% kable()
UF Categoria n
26 Pública Federal 4566
26 Privada com fins lucrativos 3357
26 Privada sem fins lucrativos 3116
26 Pública Estadual 1192
26 Pública Municipal 758
26 Especial 134

6 - Estatística Computacional - 14/03/2018

Objetivo: Construção de gráfico de barras

library(knitr)
library(tidyverse)

#```{r, echo=False} para não mostrar a tabela

## Construção de Tabelas
# base2 <- readRDS("base2.rds")

base2 <- readRDS("base5perc.rds")

library(DT)

pernambuco <- base2 %>% 
  select(NO_IES, DS_CATEGORIA_ADMINISTRATIVA, CO_MUNICIPIO_NASCIMENTO) %>% 
  transmute(Nome = NO_IES, 
            Categoria = DS_CATEGORIA_ADMINISTRATIVA, 
            Codigo = as.character(CO_MUNICIPIO_NASCIMENTO) ) %>% 
  mutate(UF = str_sub(string = Codigo, start = 1, end = 2)) %>% 
  group_by(UF, Categoria) %>% 
  summarise(n = n()) %>% mutate(freq = n/sum(n)) %>% 
  filter(UF == "26") %>% arrange(desc(n)) 

pernambuco %>% datatable()
## Construção de Gráfico de Barras 
### Pernambuco

pernambuco %>% 
  ggplot(aes(x = reorder(Categoria, n), y = n, fill = Categoria)) +
  geom_bar(stat = "identity") + guides(fill = "none") + coord_flip() +
  labs(x = "Categoria", y = "Total", title = "Numero de instituicoes por categoria", subtitle = "Estado de Pernambuco") + coord_flip() +
  geom_label(aes(label = paste(round(100*freq), "%" , sep = "")))  

## Construção de Gráfico de Barras 
### Pernambuco e Paraíba

### Tabela de Pernambuco e Paraíba

PE_PB <- base2 %>% 
  select(NO_IES, DS_CATEGORIA_ADMINISTRATIVA, CO_MUNICIPIO_NASCIMENTO) %>% 
  transmute(Nome = NO_IES, 
            Categoria = DS_CATEGORIA_ADMINISTRATIVA, 
            Codigo = as.character(CO_MUNICIPIO_NASCIMENTO) ) %>% 
  mutate(UF = str_sub(string = Codigo, start = 1, end = 2)) %>% 
  filter(UF == "26"|UF == "25") %>% 
  mutate(Estado=if_else(UF=="26", "Pernambuco", "Paraiba")) %>% 
  group_by(Estado, Categoria) %>% 
  summarise(n = n()) %>% mutate(freq = n/sum(n)) %>% 
  arrange(desc(n)) 

PE_PB
## # A tibble: 11 x 4
## # Groups:   Estado [2]
##        Estado                   Categoria     n        freq
##         <chr>                       <chr> <int>       <dbl>
##  1 Pernambuco             Pública Federal   238 0.380800000
##  2 Pernambuco Privada com fins lucrativos   157 0.251200000
##  3 Pernambuco Privada sem fins lucrativos   138 0.220800000
##  4    Paraiba Privada com fins lucrativos   130 0.371428571
##  5    Paraiba             Pública Federal    84 0.240000000
##  6    Paraiba Privada sem fins lucrativos    83 0.237142857
##  7 Pernambuco            Pública Estadual    58 0.092800000
##  8    Paraiba            Pública Estadual    52 0.148571429
##  9 Pernambuco           Pública Municipal    31 0.049600000
## 10 Pernambuco                    Especial     3 0.004800000
## 11    Paraiba           Pública Municipal     1 0.002857143
summary(PE_PB)
##     Estado           Categoria               n               freq         
##  Length:11          Length:11          Min.   :  1.00   Min.   :0.002857  
##  Class :character   Class :character   1st Qu.: 41.50   1st Qu.:0.071200  
##  Mode  :character   Mode  :character   Median : 83.00   Median :0.220800  
##                                        Mean   : 88.64   Mean   :0.181818  
##                                        3rd Qu.:134.00   3rd Qu.:0.245600  
##                                        Max.   :238.00   Max.   :0.380800
# Gráfico 1

PE_PB %>% ggplot(aes(x = reorder(Categoria,n), y = n, fill = Estado)) + 
  geom_bar(stat = "identity") + coord_flip()

# Gráfico 2

PE_PB %>% ggplot(aes(x = reorder(Categoria,n), y = n, fill = Estado)) + 
  geom_bar(stat = "identity", position = "dodge") + coord_flip()

# Gráfico 3

PE_PB %>% ggplot(aes(x = reorder(Categoria,n), y = n, fill = Estado)) + 
  geom_bar(stat = "identity", position = "dodge") + coord_flip() +
  facet_wrap(~Estado, scales = "free") + guides(fill = "none")

8 - Estatística Computacional - 26/03/2018

Manipular e Combinar Base de Dados

library(tidyverse)
library(readr)

ies <- read_delim("DM_IES.CSV", "|", escape_double = FALSE, 
                  locale = locale(encoding = "ISO-8859-1"),
                  trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   .default = col_integer(),
##   NO_IES = col_character(),
##   SGL_IES = col_character(),
##   NO_MANTENEDORA = col_character(),
##   DS_CATEGORIA_ADMINISTRATIVA = col_character(),
##   DS_ORGANIZACAO_ACADEMICA = col_character(),
##   NO_MUNICIPIO_IES = col_character(),
##   SGL_UF_IES = col_character(),
##   NO_REGIAO_IES = col_character(),
##   VL_RECEITA_PROPRIA = col_double(),
##   VL_TRANSFERENCIA = col_double(),
##   VL_OUTRA_RECEITA = col_double(),
##   VL_DES_PESSOAL_REM_DOCENTE = col_double(),
##   VL_DES_PESSOAL_REM_TECNICO = col_double(),
##   VL_DES_PESSOAL_ENCARGO = col_double(),
##   VL_DES_CUSTEIO = col_double(),
##   VL_DES_INVESTIMENTO = col_double(),
##   VL_DES_PESQUISA = col_double(),
##   VL_DES_OUTRAS = col_double()
## )
## See spec(...) for full column specifications.
docentes <- read_delim("DM_DOCENTE.CSV", 
                       "|", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"), 
                       trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   .default = col_integer(),
##   NO_IES = col_character(),
##   DS_CATEGORIA_ADMINISTRATIVA = col_character(),
##   DS_ORGANIZACAO_ACADEMICA = col_character(),
##   CO_DOCENTE = col_double(),
##   DS_SITUACAO_DOCENTE = col_character(),
##   DS_ESCOLARIDADE_DOCENTE = col_character(),
##   DS_REGIME_TRABALHO = col_character(),
##   DS_SEXO_DOCENTE = col_character(),
##   DS_COR_RACA_DOCENTE = col_character(),
##   DS_NACIONALIDADE_DOCENTE = col_character(),
##   IN_VISITANTE_IFES_VINCULO = col_character()
## )
## See spec(...) for full column specifications.
ies_1 <- ies %>% select(CO_IES:SGL_UF_IES, starts_with("VL_"))


docentes_1 <- docentes %>% select(CO_IES, CO_DOCENTE_IES, IN_SEXO_DOCENTE, DS_ESCOLARIDADE_DOCENTE)


ies_2 <- ies_1 %>% gather(key = TIPO, value = VALOR, -CO_IES:-SGL_UF_IES)


ies_3 <- ies_2 %>% group_by(CO_IES, NO_IES, DS_CATEGORIA_ADMINISTRATIVA, SGL_UF_IES) %>% 
  summarise(total = sum(VALOR)/1000000)


base <- ies_3 %>% right_join(docentes_1, by = "CO_IES") %>% ungroup()


base %>% 
  group_by(NO_IES, total, DS_ESCOLARIDADE_DOCENTE) %>% 
  summarise(N = n()) %>% 
  mutate(media = total/N)
## # A tibble: 7,193 x 5
## # Groups:   NO_IES, total [2,400]
##                                                          NO_IES      total
##                                                           <chr>      <dbl>
##  1 "\"FACULDADE DE COMUNICAÇÃO E DESIGN \"\"OSWALDO CRUZ\"\"\""   2.762263
##  2 "\"FACULDADE DE COMUNICAÇÃO E DESIGN \"\"OSWALDO CRUZ\"\"\""   2.762263
##  3 "\"FACULDADE DE COMUNICAÇÃO E DESIGN \"\"OSWALDO CRUZ\"\"\""   2.762263
##  4                                  ABEU - CENTRO UNIVERSITÁRIO  76.565968
##  5                                  ABEU - CENTRO UNIVERSITÁRIO  76.565968
##  6                                  ABEU - CENTRO UNIVERSITÁRIO  76.565968
##  7                          Academia Militar das Agulhas Negras 273.653477
##  8                          Academia Militar das Agulhas Negras 273.653477
##  9                          Academia Militar das Agulhas Negras 273.653477
## 10                          Academia Militar das Agulhas Negras 273.653477
## # ... with 7,183 more rows, and 3 more variables:
## #   DS_ESCOLARIDADE_DOCENTE <chr>, N <int>, media <dbl>