Pacotes Utilizados
Bases de dados
# Base de dados separada por UF - Unidade da Federação
base_uf <- read_csv("http://bit.ly/base_uf")
# Base de dados separada por GR - Grande Região, apenas
# com o número de nascidos vivos por mês
base_gr <- read_csv("http://bit.ly/base_gr") %>%
select(-X)
# Base de dados separada por GR - Grande Região, com
# a idade da mãe na ocasião do parto, sexo do nascido
# vivo e local de nasicmento
base_completa <- read_csv("http://bit.ly/base_completa") %>%
mutate(domicilio = as.numeric(domicilio))
base_uf## # A tibble: 405 x 14
## ano Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2003 2142 1866 2385 2343 2323 2184 2199 2171 2231
## 2 2004 2177 2078 2190 2107 2250 2150 2139 2097 2096
## 3 2005 2059 2162 2477 2361 2371 2227 2153 2220 2173
## 4 2006 1999 1924 2275 2264 2376 2195 1921 1955 2196
## 5 2007 2331 2141 2417 2210 2232 2065 2108 2038 2001
## 6 2008 2024 1874 2295 2096 2144 2070 2071 2118 2132
## 7 2009 2222 2077 2379 2258 1961 1949 2048 2080 2137
## 8 2010 1910 1764 2195 1994 2227 2069 2177 2075 2099
## 9 2011 2098 2019 2351 2299 2117 1966 1919 2042 1942
## 10 2012 2121 2126 2258 2185 2218 2190 2157 2001 1993
## # … with 395 more rows, and 4 more variables: Outubro <dbl>,
## # Novembro <dbl>, Dezembro <dbl>, UF <chr>
## # A tibble: 75 x 14
## ano Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2003 21791 19117 22186 21145 21790 19849 20235 19327 19122
## 2 2004 21830 20017 21697 20831 21185 19644 19544 19160 18797
## 3 2005 22665 20481 24394 23387 24019 22298 21227 21211 20823
## 4 2006 22775 20320 23545 22877 23114 21817 21038 21033 21125
## 5 2007 24598 21796 24270 22574 22794 22076 22016 21863 21110
## 6 2008 22780 20983 23687 23686 23917 22507 22407 22353 22827
## 7 2009 24338 21459 24786 23492 22623 21858 21834 21961 22792
## 8 2010 23851 21462 24422 23234 22896 21640 21854 21582 22463
## 9 2011 23170 21133 24064 23696 24704 23275 22934 23293 22665
## 10 2012 24967 22716 24518 23803 24203 22663 22980 23294 22691
## # … with 65 more rows, and 4 more variables: Outubro <dbl>,
## # Novembro <dbl>, Dezembro <dbl>, GR <chr>
## # A tibble: 64,800 x 7
## grande_regiao idade_da_mae_na… ano mes_do_nascimen… sexo hospital
## <chr> <chr> <dbl> <chr> <chr> <dbl>
## 1 Norte Menos de 15 anos 2003 Janeiro Home… 84
## 2 Norte Menos de 15 anos 2003 Janeiro Mulh… 113
## 3 Norte Menos de 15 anos 2003 Fevereiro Home… 90
## 4 Norte Menos de 15 anos 2003 Fevereiro Mulh… 90
## 5 Norte Menos de 15 anos 2003 Março Home… 124
## 6 Norte Menos de 15 anos 2003 Março Mulh… 96
## 7 Norte Menos de 15 anos 2003 Abril Home… 94
## 8 Norte Menos de 15 anos 2003 Abril Mulh… 91
## 9 Norte Menos de 15 anos 2003 Maio Home… 117
## 10 Norte Menos de 15 anos 2003 Maio Mulh… 104
## # … with 64,790 more rows, and 1 more variable: domicilio <dbl>
Visualizações
Figura 1
meses_12 <- base_gr %>%
bind_rows() %>%
gather(mes, value, -ano, -GR) %>%
distinct(mes)
base_gr %>%
bind_rows() %>%
gather(mes, value, -ano, -GR) %>%
mutate(value = as.numeric(value)) %>%
group_by(mes) %>%
summarise(media = mean(value, na.rm = T)) %>%
ungroup() %>%
mutate(mes = factor(mes, levels = meses_12$mes)) %>%
ggplot(aes(mes, media)) +
geom_bar(stat = 'identity', fill = "#800000") +
theme_minimal() +
geom_text(aes(label = media %>% round),
nudge_y = -1000,
color = "white") +
labs(x = "",
y = "Média",
title = "Média de nascimento por mês (2003-2017)")Mediante ao gráfico de barras, pode-se concluir que a média de nascimentos para os anos de 2003 a 2017 nos meses de março a maio são maiores se comparado aos outros meses do ano. Diferente dos meses de novembro a dezembro que possuem a menor média de nascimentos. Assim, nove meses pós os meses do inverno são os que mais tiveram nascimentos no Brasil.
Figura 2
base_gr %>%
bind_rows() %>%
gather(mes, value, -ano, -GR) %>%
group_by(GR, mes) %>%
summarise(media = mean(value, na.rm = T)) %>%
ungroup() %>%
mutate(mes = factor(mes, levels = meses_12$mes)) %>%
ggplot(aes(mes, media)) +
geom_bar(stat = 'identity', fill = "#800000") +
facet_wrap(~ GR) +
theme_minimal() +
coord_flip() +
geom_text(aes(label = media %>% round), nudge_y = 9000) +
labs(x = "",
y = "Média",
title = "Média de nascimento por mês (2003-2017)")A média do número de nascimentos na região Sudeste é bem maior das demais regiões do Brasil, um fator que é bem compreensível, dado que é a região onde se concentram mais de 40% da população do Brasil (G1, 2018).
Decidimos então verificar se haveria alguma região em que estivesse afetando o fenômeno observado no gráfico anterior. Após a análise dos dados e a contrução do gráfico, concluímos que esse fenômeno (Maiores nascimentos nos meses de março a maio) acontece em todas as regiões do Brasil, exceto na região Norte, onde a média de nascimentos no mês de Janeiro é maior que a média de nascimentos no mês de Abril.
Figura 3
base_gr %>%
gather(meses, value, -ano, -GR) %>%
spread(GR, value) %>%
select(-meses) %>%
tail(36) %>%
mutate(ano = as.character(ano)) %>%
ggpairs(
columns = 2:6, mapping = aes(color = ano),
lower = list(continuous = wrap(ggally_smooth_loess, size = 1, color = "darkblue")),
diag = list(continuous = wrap(ggally_barDiag, color = "darkblue")),
upper = list(continuous = wrap("cor", size = 4.0, alignPercent = 1))) +
theme(panel.background = ggplot2::element_rect(fill = "lightgray")) Para reforçarmos a ideia, decidimos utilizar de uma análise mais completa fazendo correlações do número de nascimentos nos últimos três anos entre as cinco regiões do Brasil. Podemos observar que analisando os anos mais recentes, todas as regiões estao fortemente correlacionadas entre elas.
As regiões Sul e Sudeste obtiveram a correlação mais forte (0.975), mostrando que há evidências de que o número de nascimentos entre estas 2 regiões se comporta de modo bem parecido. Por outro lado, temos que a menor correlação (0.72) foi entre as regiões Norte e Sul. Assim, pode-se afirmar que todos as variáveis se comportam de modo bem parecido.
Figura 4
base_completa %>%
select(grande_regiao, sexo, hospital, domicilio) %>%
group_by(grande_regiao, sexo) %>%
summarise(hospital = sum(hospital, na.rm = T),
domicilio = sum(domicilio, na.rm = T)) %>%
ungroup() %>%
mutate(total = hospital+domicilio,
grande_regiao = factor(grande_regiao, levels = c("Norte", "Nordeste",
"Centro-Oeste", "Sul", "Sudeste"))) %>%
select(-hospital, -domicilio) %>%
ggplot(aes(x = sexo, y = total, fill = grande_regiao)) +
facet_grid(~ grande_regiao) +
scale_fill_manual(values = c("green4", "chocolate", "yellow3", "steelblue", "#800000")) +
theme_linedraw() +
theme(legend.position = "none") +
geom_bar(stat = 'identity') +
geom_text(aes(label = total), nudge_y = 120000) +
labs(x = "",
y = "Média",
title = "Número de nascimento por sexo em cada Grande Região (2003-2017)")Um outro fator relevante para ser analisado foi a questão do número de nascimentos por sexo, tanto em hospitais quanto em domicílios. No gráfico acima podemos verificar que em todas as regiões do brasil o número de nascimentos de homens é maior ao de mulheres. Essa diferença é maior ainda quando olhamos apenas para a região sudeste, onde o valor dessa diferença chega a mais de 400 mil nascimentos.
Figura 5
base_completa %>%
select(mes_do_nascimento, ano, hospital, domicilio) %>%
filter(mes_do_nascimento %in% c("Março", "Abril", "Maio",
"Outubro", "Novembro", "Dezembro")) %>%
group_by(ano, mes_do_nascimento) %>%
summarise(hospital = sum(hospital, na.rm = T),
domicilio = sum(domicilio, na.rm = T)) %>%
ungroup() %>%
mutate(total = hospital+domicilio,
ano = as.character(ano),
mes_do_nascimento = factor(mes_do_nascimento, levels = c("Março", "Abril", "Maio",
"Outubro", "Novembro", "Dezembro"))) %>%
ggplot() +
facet_grid(~ mes_do_nascimento, scales = "free_x") +
geom_boxplot(aes(x = mes_do_nascimento, y = total), fill = "purple") +
theme_linedraw() +
theme(axis.text.x.bottom = element_blank(), axis.ticks.x.bottom = element_blank()) +
labs(x = "",
y = "Número total de Nascimentos em cada ano",
title = "Número total de Nascimentos por mês entre os anos de 2003 a 2017")Tentando entender melhor o comportamento da nossa variável, construimos boxplots para o número total de nascimentos dos meses em que têm mais (Março, Abril, Maio) e menos (Outubro,Novembro, Dezembro) nascimentos nos anos de 2003 até 2017. A diferença de nascimentos das duas trincas é bem maior quando analisamos elas separadamente.
O mês de março nos evidenciou um padrão de nascimento se concentrando sempre em torno de 260 mil, onde a variância do número de nascimentos pouco muda. O mês de dezembro foi o que chamou mais a atenção. Apesar de variar bastante o número de nascimentos ao longo dos anos, esse valor em quase todos os anos se concentrou abaixo dos 220 mil nascimentos.
Figura 6
## Reading layer `BRUFE250GC_SIR' from data source `/cloud/project/Visualizacao de Dados/Atividade Final/code/malha/BRUFE250GC_SIR.shp' using driver `ESRI Shapefile'
## Simple feature collection with 27 features and 3 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -73.99045 ymin: -33.75118 xmax: -28.83591 ymax: 5.271841
## epsg (SRID): NA
## proj4string: +proj=longlat +ellps=GRS80 +no_defs
bd = bd %>% group_by(UF) %>% select(-ano) %>% summarise_all(sum)
bd %<>% mutate(UF = toupper(UF))
mapa = mapa %>% inner_join(bd, by= c("NM_ESTADO"="UF"))
mapaMar = ggplot(mapa) +
geom_sf(aes(fill = `Março`)) +
scale_fill_continuous(name = "Nascimentos",
type = "viridis",
limits = c(min(bd[2:13]),max(bd[2:13])),
labels = comma)+
ggtitle("Março") +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank()
)
mapaMai = ggplot(mapa) +
geom_sf(aes(fill = `Maio`)) +
scale_fill_continuous(type = "viridis",
limits = c(min(bd[2:13]),max(bd[2:13])),
labels = comma) +
ggtitle("Maio") +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank())
mapaNov = ggplot(mapa) +
geom_sf(aes(fill = `Novembro`)) +
scale_fill_continuous(type = "viridis",
limits = c(min(bd[2:13]), max(bd[2:13])),
labels = comma) +
ggtitle("Novembro") +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank())
mapaOut = ggplot(mapa) +
geom_sf(aes(fill = `Outubro`)) +
scale_fill_continuous(type = "viridis",
limits = c(min(bd[2:13]), max(bd[2:13])),
labels = comma) +
ggtitle("Outubro") +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank())
ggarrange(
mapaMar,
mapaMai,
mapaOut,
mapaNov,
ncol = 2,
nrow = 2,
common.legend = TRUE,
legend = "right"
)Selecionamos 2 dos meses com maior número médio de nascimentos (Março e Maio) e 2 dos meses com menor número médio de nascimentos (Outubro e Novembro) para verificar o número de nascimentos em cada estado do Brasil. Realizamos a soma dos valores de nascimento dos anos de 2003 a 2017 para os meses selecionados e com a visualização pode-se perceber que São Paulo possui o maior número total de nascimentos e aparenta ser o causador do número de nascimento em março e maio ser tão grande.
Figura 7
bd = base_uf
bd %<>% select(-UF) %>% group_by(ano) %>% summarise_all(sum)
bd = bd %>% gather(meses, valores,-ano)
bd$meses = factor(bd$meses,levels = meses_12$mes)
bd$ano = factor(bd$ano)
ggplot(bd,aes(x = meses, y = ano))+
geom_tile(aes(fill = valores), col = "black") +
scale_fill_gradient2(
low = "white",
mid = "royalblue",
high = "blue",
midpoint = mean(pull(bd[, 3])),
name = "Nascimentos",
limits = c(min(bd[, 3]), max(bd[, 3])),
labels = comma
) +
facet_grid(~ meses,scales = "free") +
labs(x = "Meses", y = "Anos") +
theme(
panel.grid = element_blank(),
panel.border = element_blank(),
axis.ticks = element_blank(),
strip.background = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank()
)Utilizamos um gráfico no estilo calendário para obter uma visualização mais completa de todos os meses de todos os anos do número de nascimentos no Brasil. O calendário veio a corroborar a hipótese, confirmando que nos 15 anos analisados, os meses de março a maio possuem muito mais nascimentos que os demais, em especial os meses de outubro a dezembro.
RPUBS
O trabalho se encontra disponível no RPubs.