Os alunos deverão consultar o site do IBGE https://sidra.ibge.gov.br/tabela/993 para elaboração de um arquivo csv com dados sobre o número de empresas da construção civil no Brasil, considerando os municÃpios do Estado com maior número de empresas. Cada dupla ficará responsável por organizar os dados de um ano entre 2007 e 2015.
O arquivo deverá constar de 3 colunas, uma com os MunicÃpios, outra com os códigos do municÃpio e outra com o número de empresas (unidades).
Após organizar a planilha, a dupla deverá produzir um relatório com análise de dados e um conclusão. Os scripts de apoio ao trabalho podem ser adaptado do modelo abaixo.
Prazo de realização: 2 semanas. O que deve entregar: 1. a planilha em formato csv 2. O relatório em formato Rmd 3. O relatório compilado versão impressa.
Tabela 993 - Empresas e outras organizações, por seção da classificação de atividades (CNAE 2.0), faixas de pessoal ocupado total
Classificação Nacional de Atividades Econômicas (CNAE 2.0) - F Construção
Ano - 2006
Variável - Número de empresas e outras organizações (Unidades)
Esta classe compreende: - a montagem e desmontagem de plataformas de trabalho e andaimes, exceto o aluguel de andaimes e plataformas de trabalho - a montagem e desmontagem de fôrmas para concreto e escoramentos - a montagem e desmontagem de estruturas temporárias - as obras de alvenaria - a perfuração e construção de poços de água - a construção de fornos industriais - a construção de partes de edifÃcios, tais como: telhados, coberturas, chaminés, lareiras, churrasqueiras, etc. - os serviços de limpeza de fachadas, com jateamento de areia, vapor e semelhantes
Mais detalhes em https://concla.ibge.gov.br/busca-online-cnae.html?classe=43991&tipo=cnae&versao=7&view=classe
#Alterar o local do arquivo.
tabela993munic2006 <- read.csv2("C:/Users/TPC02/OneDrive/Mestrado Pos Civil/1-2018/tabela993munic2006.csv", stringsAsFactors=F )
head(tabela993munic2006)
## Cod Municipio Unidades
## 1 1100015 Alta Floresta D'Oeste (RO) 5
## 2 1100023 Ariquemes (RO) 30
## 3 1100031 Cabixi (RO) 0
## 4 1100049 Cacoal (RO) 28
## 5 1100056 Cerejeiras (RO) 3
## 6 1100064 Colorado do Oeste (RO) 6
Sumário do número de empresas da construção civil:
summary(tabela993munic2006)
## Cod Municipio Unidades
## Min. :1100015 Length:5570 Min. : 0.0
## 1st Qu.:2512126 Class :character 1st Qu.: 0.0
## Median :3146280 Mode :character Median : 1.0
## Mean :3253591 Mean : 19.8
## 3rd Qu.:4119190 3rd Qu.: 6.0
## Max. :5300108 Max. :13911.0
attach(tabela993munic2006)
boxplot(Unidades)
Os MunicÃpios que apresentam número de unidades discrepantes de acordo com o boxplot são obtidos pelo script abaixo.
attach(tabela993munic2006)
LS=quantile(Unidades,0.75)+1.5*IQR(Unidades) #Limite superior para detecção de outliers
#OBS: Caso o outlier esteja abaixo da mediana, deve-se utilizar LI=quantile(Unidades,0.25)-1.5*IQR(Unidades)
LI=quantile(Unidades,0.25)-1.5*IQR(Unidades)
#Neste caso LI < 0, ou seja, não há pontos discrepantes abaixo do primeiro quartil.
#Quantidades de municÃpios discrepantes:
length(Municipio[Unidades>LS])
## [1] 746
#Como são muitos municÃpios exibiremos apenas os 10 primeiros da lista
head(Municipio[Unidades>LS],10)
## [1] "Ariquemes (RO)" "Cacoal (RO)" "Jaru (RO)"
## [4] "Ji-Paraná (RO)" "Porto Velho (RO)" "Rolim de Moura (RO)"
## [7] "Vilhena (RO)" "Cruzeiro do Sul (AC)" "Rio Branco (AC)"
## [10] "Coari (AM)"
attach(tabela993munic2006)
x = sort(Unidades, decreasing = T) #ordenando as unidades em ordem crescente
y = order(Unidades, decreasing = T)[1:20] #posição original das unidades relativas a ordenação
barplot(x[1:20], names.arg = Municipio[y], cex.names = 0.5, horiz = T, axisnames = TRUE, las = 1, col = "darkblue", main = "Número de Empresas da Construção Civil no ano 2006", xlab = "N.Empresas da construção Civil", sub="Fonte: Sidra/IBGE", cex.main=0.8)
Eliminando os municÃpios com ausência de empresas de construção
#Para facilitar a tarefa, usaremos o pacote tidyverse
#Instale-o se não tiver
require(tidyverse)
novatabela=tabela993munic2006 %>% dplyr::filter(Unidades>0)
head(novatabela,30) #listando os 30 primeiros
## Cod Municipio Unidades
## 1 1100015 Alta Floresta D'Oeste (RO) 5
## 2 1100023 Ariquemes (RO) 30
## 3 1100049 Cacoal (RO) 28
## 4 1100056 Cerejeiras (RO) 3
## 5 1100064 Colorado do Oeste (RO) 6
## 6 1100072 Corumbiara (RO) 2
## 7 1100098 Espigão D'Oeste (RO) 4
## 8 1100106 Guajará-Mirim (RO) 5
## 9 1100114 Jaru (RO) 23
## 10 1100122 Ji-Paraná (RO) 47
## 11 1100130 Machadinho D'Oeste (RO) 5
## 12 1100148 Nova Brasilândia D'Oeste (RO) 7
## 13 1100155 Ouro Preto do Oeste (RO) 12
## 14 1100189 Pimenta Bueno (RO) 11
## 15 1100205 Porto Velho (RO) 241
## 16 1100254 Presidente Médici (RO) 4
## 17 1100262 Rio Crespo (RO) 1
## 18 1100288 Rolim de Moura (RO) 37
## 19 1100296 Santa Luzia D'Oeste (RO) 1
## 20 1100304 Vilhena (RO) 29
## 21 1100320 São Miguel do Guaporé (RO) 2
## 22 1100338 Nova Mamoré (RO) 2
## 23 1100346 Alvorada D'Oeste (RO) 3
## 24 1100379 Alto Alegre dos Parecis (RO) 1
## 25 1100403 Alto ParaÃso (RO) 2
## 26 1100452 Buritis (RO) 2
## 27 1100502 Novo Horizonte do Oeste (RO) 1
## 28 1100700 Campo Novo de Rondônia (RO) 1
## 29 1100809 Candeias do Jamari (RO) 2
## 30 1100940 Cujubim (RO) 2
novatabela %>%
ggplot(aes(x=" ",y=Unidades))+
geom_boxplot()
LS=quantile(novatabela$Unidades,0.75)+1.5*IQR(novatabela$Unidades) #Limite superior para detecção de outliers
#OBS: Caso o outlier esteja abaixo da mediana, deve-se utilizar LI=quantile(Unidades,0.25)-1.5*IQR(Unidades)
LI=quantile(Unidades,0.25)-1.5*IQR(Unidades)
#Quantidades de municÃpios discrepantes:
novatabela %>%
summarise(n_distinct(Municipio))
## n_distinct(Municipio)
## 1 3820
consulta= novatabela %>%
dplyr::filter(Unidades>LS)
head(consulta,30)
## Cod Municipio Unidades
## 1 1100023 Ariquemes (RO) 30
## 2 1100049 Cacoal (RO) 28
## 3 1100122 Ji-Paraná (RO) 47
## 4 1100205 Porto Velho (RO) 241
## 5 1100288 Rolim de Moura (RO) 37
## 6 1100304 Vilhena (RO) 29
## 7 1200203 Cruzeiro do Sul (AC) 30
## 8 1200401 Rio Branco (AC) 187
## 9 1302603 Manaus (AM) 759
## 10 1400100 Boa Vista (RR) 281
## 11 1500602 Altamira (PA) 29
## 12 1500800 Ananindeua (PA) 198
## 13 1501303 Barcarena (PA) 34
## 14 1501402 Belém (PA) 602
## 15 1502400 Castanhal (PA) 46
## 16 1504208 Marabá (PA) 74
## 17 1505304 Oriximiná (PA) 27
## 18 1505502 Paragominas (PA) 35
## 19 1505536 Parauapebas (PA) 63
## 20 1506138 Redenção (PA) 30
## 21 1506807 Santarém (PA) 67
## 22 1600303 Macapá (AP) 220
## 23 1600600 Santana (AP) 29
## 24 1702109 AraguaÃna (TO) 64
## 25 1709500 Gurupi (TO) 38
## 26 1716109 ParaÃso do Tocantins (TO) 30
## 27 1718204 Porto Nacional (TO) 58
## 28 1721000 Palmas (TO) 226
## 29 2101400 Balsas (MA) 37
## 30 2103000 Caxias (MA) 27
Observe o efeito de eliminar os municÃpios sem empresas de construção: considerando todos os municÃpios, serão outlier aqueles com número de empresas acima de 15 unidades; com a redução dos municÃpios aos que possuem pelo menos uma empresa, serão outlier aqueles com número de empresas acima de 26 unidades. Desse modo o número de outlier passou de 746 para 524.
Veja também que inicialmente tÃnhamos 5570 municÃpios, após aplicarmos o filtro (que eliminou os municÃpios sem empresas de construção) passou para 3820 municÃpios. Isso significa que aproximadamente 31% dos municÃpios do Brasil no ano de 2006 não possuiam empresas de construção.
require(rgdal)
#Primeiro argumento da função readOGR
#Diretório onde encontram-se os arquivo da malha
#que você baixou do site do IBGE
#No meu caso são 5 arquivos denominados 35MUE250GC_SIR com diferentes extensões
#Baixei duas malhas e usei a segunda malha para fazer os mapas. Se usasse a primeira malha, o argumento GEOCODIGO na malha SaoPaulo corresponde a CD_GEOCMU.
SaoPaulo1 <- readOGR("C:\\Users\\TPC02\\Documents\\Disciplinas\\Mestrado Pos Civil\\1-2018", "35MUE250GC_SIR") #malha 2017
## OGR data source with driver: ESRI Shapefile
## Source: "C:\Users\TPC02\Documents\Disciplinas\Mestrado Pos Civil\1-2018", layer: "35MUE250GC_SIR"
## with 645 features
## It has 2 fields
SaoPaulo <- readOGR("C:\\Users\\TPC02\\Documents\\Disciplinas\\Mestrado Pos Civil\\1-2018", "35mu500gc") #malha 2005
## OGR data source with driver: ESRI Shapefile
## Source: "C:\Users\TPC02\Documents\Disciplinas\Mestrado Pos Civil\1-2018", layer: "35mu500gc"
## with 690 features
## It has 10 fields
#plot(SaoPaulo)
n=nrow(SaoPaulo1@data) #fornece o número de municÃpios da malha de São Paulo
n
## [1] 645
require(stringr)
tabela993munic2006=as.tibble(tabela993munic2006)
tabela=tabela993munic2006 %>%
mutate(Municipio1 = stringr::str_sub(Municipio,end= -6))
#Os municÃpios de São Paulo são o que possuem código iniciando com 35
tabela=tabela %>% filter(Cod>3500000&Cod<3600000)
MalhaFundida <- merge(SaoPaulo, tabela, by.x = "GEOCODIGO", by.y = "Cod", all.x = TRUE, all.y = TRUE) # left join com R base
spplot(MalhaFundida, "Unidades", main="TÃtulo do seu mapa")
Outras opções de coloração.
Opção 1:
spplot(MalhaFundida, "Unidades", col.regions = rainbow(16, start=0.1)) #start=0.1 foi usado para melhorar a diferenciação das cores. Em outras situações pode não ser necessário.
#Alternativas para colorir mapa
#rainbow(n, alpha = 1)
#heat.colors(n, alpha = 1)
#terrain.colors(n, alpha = 1)
#topo.colors(n, alpha = 1)
#cm.colors(n, alpha = 1)
Opção 2
library(viridis) # Para selecionar uma paleta de cores
#Escolhendo a palheta de cores
pal16<-viridis(16,option="C")
spplot(MalhaFundida, "Unidades", col.regions = pal16)