Olá! Vamos realizar uma imersão em uma das amostragens mais famosas do IBGE, na verdade duas, as estatísticas de nascidos vivos e de casamentos de mulheres de diversas faixas etárias. São dois datasets riquíssimos, que podem ser combinados. Já que temos os atributos Ano, Estado e até Faixa Etária da mãe, no caso de nascidos vivos, e Faixa Etária da Mulher, no ano em que casou.
Nessa Análise não vou entrar na parte de limpeza, tratamento e junção dos dados, já vamos trabalhar com ele clean e pronto para análise! Em outro repositório focaremos nessa parte de tratamento e limpeza, mas por enquanto, vamos pro jogo!
library(readxl)
casamentos_nascimentosbr<-read_xlsx("C:\\Users\\lferreira\\Downloads\\live university\\Projetos\\casamentos_nascimentosbr.xlsx")
#Passando estado e classe para fator e ano para integer
casamentos_nascimentosbr$estado<-as.factor(casamentos_nascimentosbr$estado)
casamentos_nascimentosbr$classe<-as.factor(casamentos_nascimentosbr$classe)
casamentos_nascimentosbr$ano<-as.integer(casamentos_nascimentosbr$ano)
summary(casamentos_nascimentosbr)## estado ano classe nasc_masc
## Acre : 168 Min. :2003 50 anos ou mais:1512 Min. : 0.0
## Alagoas : 168 1st Qu.:2006 15 a 19 anos : 378 1st Qu.: 34.0
## Amapa : 168 Median :2010 20 a 24 anos : 378 Median : 496.5
## Amazonas: 168 Mean :2010 25 a 29 anos : 378 Mean : 4809.2
## Bahia : 168 3rd Qu.:2013 30 a 34 anos : 378 3rd Qu.: 5316.0
## Ceara : 168 Max. :2016 35 a 39 anos : 378 Max. :92918.0
## (Other) :3528 (Other) :1134
## nasc_fem qtd_casamentos
## Min. : 0 Min. : 0
## 1st Qu.: 35 1st Qu.: 140
## Median : 475 Median : 683
## Mean : 4572 Mean : 2976
## 3rd Qu.: 5054 3rd Qu.: 2924
## Max. :87869 Max. :76407
##
Como na parte de junção dos datasets foi usado um inner_join() e nenhum deles tinha valores ausentes. Temos uma base livre de NA’s! Todos os 27 estados e nove classes de faixa etária, analisados entre os anos de 2003 a 2016.
levels(casamentos_nascimentosbr$estado) #Todos os Estados## [1] "Acre" "Alagoas" "Amapa"
## [4] "Amazonas" "Bahia" "Ceara"
## [7] "Distrito Federal" "Espirito Santo" "Goias"
## [10] "Maranhao" "Mato Grosso" "Mato Grosso do Sul"
## [13] "Minas Gerais" "Para" "Paraiba"
## [16] "Parana" "Pernambuco" "Piaui"
## [19] "Rio de Janeiro" "Rio Grande do Norte" "Rio Grande do Sul"
## [22] "Rondonia" "Roraima" "Santa Catarina"
## [25] "Sao Paulo" "Sergipe" "Tocantins"
levels(casamentos_nascimentosbr$classe) #Todas as 9 classes## [1] "15 a 19 anos" "20 a 24 anos" "25 a 29 anos"
## [4] "30 a 34 anos" "35 a 39 anos" "40 a 44 anos"
## [7] "45 a 49 anos" "50 anos ou mais" "Menos de 15 anos"
library(tidyverse)
casamentos_nascimentosbr%>%
gather(sexo,qtd_nascimentos,4:5)%>%
ggplot(aes(x=sexo,y=qtd_nascimentos))+
geom_col(fill = "red")+
scale_y_continuous(label=scales::comma)+
theme_classic()+
labs(x="Sexo",y="Quantidade de Nascimentos",title = "Quantidade de nascimentos",
subtitle = "Nascimentos por sexo",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)")Será que o padrão se mantem por faixa etária de idade da mãe?
casamentos_nascimentosbr%>%
gather(sexo,qtd_nascimentos,4:5)%>%
ggplot(aes(x=factor(classe,levels = c("Menos de 15 anos","15 a 19 anos","20 a 24 anos",
"25 a 29 anos","30 a 34 anos","35 a 39 anos","40 a 44 anos","45 a 49 anos","50 anos ou mais")),
y=qtd_nascimentos,fill = sexo))+
geom_col()+
scale_y_continuous(label=scales::comma)+
theme_classic()+
labs(x="Classe de idade da mãe",y="Quantidade de Nascimentos",title = "Quantidade de nascimentos",
subtitle = "Nascimentos por faixa etária da mãe e sexo",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)") Em geral os padrões são bem parecidos, há mais nascimentos do sexo masculino do que feminino, mas a diferença não é tão grande assim. Curioso como, quanto mais velha a mãe, menor é a quantidade de nascimentos… Pensando bem, não é nada curioso não acham? rs. (Dumbledore Speech)
Será que o padrão continua por estado?
casamentos_nascimentosbr%>%
gather(sexo,qtd_nascimentos,4:5)%>%
ggplot(aes(x=sexo,y=qtd_nascimentos,fill = classe))+
geom_col()+
scale_y_continuous(label=scales::comma)+
labs(x="Sexo",y="Quantidade de Nascimentos",title = "Quantidade de nascimentos",
subtitle = "Nascimentos por Classe e Estado",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)")+
theme_minimal()+
facet_wrap(~estado) De Fato o Padrão se mantém, nascimentos entre homens e mulheres são bem próximos e em geral a quantidade de nascimentos de homens é um pouco maior do que o das mulheres.
Mas será que esse padrão vem se mantêndo ao longo dos anos?
casamentos_nascimentosbr%>%
gather(sexo,qtd_nascimentos,4:5)%>%
group_by(ano,sexo)%>%
summarise(nascimentos = sum(qtd_nascimentos))%>%
ggplot(aes(x=ano,y=nascimentos,col = sexo))+
geom_line(size = 2)+
scale_y_continuous(label=scales::comma)+
labs(x="Ano",y="Quantidade de Nascimentos",title = "Série Temporal - Quantidade de nascimentos",
subtitle = "Nascimentos por sexo",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)")+
theme_classic() Parece que a proporção de homens e mulheres continua a mesma, porém, sua magnitude vem caindo ao longo dos anos. Natural para um país em desenvolvimento pleno.
casamentos_nascimentosbr%>%
ggplot(aes(x=factor(classe,levels = c("Menos de 15 anos","15 a 19 anos","20 a 24 anos",
"25 a 29 anos","30 a 34 anos","35 a 39 anos","40 a 44 anos","45 a 49 anos","50 anos ou mais")),
y=qtd_casamentos,fill = classe))+
geom_col()+
scale_y_continuous(label=scales::comma)+
labs(x="Faixa Etária",y="Quantidade de Casamentos",title = "Casamentos por Faixa Etária (Classe)",
subtitle = "Casamentos por faixa etária e estado",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)")+
theme_classic()+
theme(axis.text.x = element_blank(),
axis.ticks.x=element_blank())+
facet_wrap(~estado) De Fato, São Paulo, Minas Gerais e Rio de Janeiro são os que possuem maior número de casamentos, mas em geral a maior quantidade de casamentos está na Faixa de 20 a 29 anos.
Como será que está a evolução disso ao longo dos anos?
casamentos_nascimentosbr%>%
group_by(ano,classe)%>%
summarise(num_casamentos = sum(qtd_casamentos))%>%
ggplot(aes(x=ano,y=num_casamentos,col=classe))+
geom_line(size = 2)+
scale_y_continuous(label=scales::comma)+
labs(x="Ano",y="Quantidade de Casamentos",title = "Série Temporal - Casamentos por Faixa Etária (Classe)",
subtitle = "Casamentos por faixa etária e ano",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)")+
theme_classic() Sou só eu, ou você também percebe uma tendência de aumento de casamentos para mulheres acima de 25 anos e um leve declínio para idades abaixo de 25?
Mas uma das análises mais interessantes é a entre numero de nascimentos e casamentos. Será que eles estão correlacionados?
library(ggpubr)
casamentos_nascimentosbr%>%
gather(sexo,qtd_nascimentos,4:5)%>%
mutate(ano = as.factor(ano))%>%
ggplot(aes(x=qtd_casamentos,y=qtd_nascimentos,col=ano))+
geom_point(position = "jitter")+
scale_y_continuous(label=scales::comma)+
scale_x_continuous(label=scales::comma)+
geom_smooth(aes(x=qtd_casamentos,y=qtd_nascimentos),method = "lm",inherit.aes = FALSE)+
stat_cor(method = "pearson", label.x = 40000, label.y = 100000,color = "black")+
labs(x="Quantidade de Casamentos",y="Quantidade de Nascimentos",title = "Correlação entre Nascimentos e Casamentos",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)")+
theme_light() Excelente correlação de Pearson (0,94)! Mas será que o aumento no número de casamentos é causa do aumento do número de nascimentos? Em minha opinião não acredito que seja a única causa, mas acho que a variável numero de casamentos tem grande impacto no número de nascimentos, principalmente devido a nossa cultura.
Será que esse padrão se mantém por faixa etária e estado? Vamos colocar um pouco de estilo nessas duas últimas análises!
library(gganimate)
theme_set(theme_bw())
casamentos_nascimentosbr%>%
gather(sexo,qtd_nascimentos,4:5)%>%
ggplot(aes(x=qtd_casamentos,y=qtd_nascimentos))+
geom_point(color="purple")+
geom_smooth(method = "lm",col = "white")+
facet_wrap(~classe)+
scale_y_continuous(label=scales::comma)+
scale_x_continuous(label=scales::comma,limits = c(0,85000))+
labs(x="Quantidade de Casamentos",y="Quantidade de Nascimentos",title = "Correlação entre Nascimentos e Casamentos ",
subtitle = "Correlação por faixa etária",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)",fill = "white")+
transition_time(ano)+
labs(title = "Ano: {frame_time}")+
theme_dark()+
theme(
panel.background = element_rect(fill = "black"),
plot.background = element_rect(fill = "black"),
axis.title = element_text(colour = "yellow"),
title = element_text(colour = "yellow"),
axis.text =element_text(colour = "yellow"),
strip.text = element_text(colour = "yellow")
) Parece que mantemos o padrão de correlação positiva alta, mesmo em faixas etárias diferentes, exceto para casamentos em que a mulher tenha 40 anos ou mais. Mas a resposta para isso é meio lógica não? Mulheres nessa idade não estão mais em período fértil e normalmente não pensam em ter mais filhos.
animacao<-casamentos_nascimentosbr%>%
gather(sexo,qtd_nascimentos,4:5)%>%
ggplot(aes(x=qtd_casamentos,y=qtd_nascimentos))+
geom_point(color="purple")+
geom_smooth(method = "lm",col = "white")+
scale_y_continuous(label=scales::comma)+
scale_x_continuous(label=scales::comma,limits = c(0,85000))+
labs(x="Quantidade de Casamentos",y="Quantidade de Nascimentos",title = "Correlação entre Nascimentos e Casamentos ",
subtitle = "Correlação por faixa etária",
caption = "Fonte: IBGE - Estatísticas do Registro Civil (2003-2016)",fill = "white")+
transition_states(
estado,
transition_length = 1,
state_length = 1
) +
enter_fade() +
exit_shrink() +
ease_aes('cubic-in-out')+
labs(title = "Estado: {closest_state}")+
theme_dark()+
theme(
panel.background = element_rect(fill = "black"),
plot.background = element_rect(fill = "black"),
axis.title = element_text(colour = "yellow"),
title = element_text(colour = "yellow"),
axis.text =element_text(colour = "yellow"),
strip.text = element_text(colour = "yellow")
)
animate(animacao,duration = 54) Por estado de maneira geral sim, mas, difícil de visualizar em estados como Acre, Amapá, Tocantins e Sergipe, que temos poucos pontos de dados, amostra pequena. Mas a correlação de uma forma geral continua alta.
Bem, é isso! Essa é uma ótima base de dados para gerar insights e fazer algumas análises.
Podemos tentar criar um modelo de ML usando regressão linear para determinar o número de nascimentos para o ano de 2018 e 2019, para cada estado dependendo do número de casamentos!
Será que vai dar certo??? Até lá!!