rm(list=ls()) # limpa os objetos da ultima execução
options(scipen = 9999, # inibe exibição de resultaos em notação científica
digits = 8, # limita o número de digitos das saídas do programa
max.print = 6) # limita o tamanho da saída do programa
library(demography) # pacote para manipulação de dados demográficos
library(sidrar) # pacote para manipulação de dados do SIDRA
library(magrittr) # pacote para operadores semânticos %>%, %$%
library(dplyr) # pacote para manipulação de dados
library(tidyr) # pacote para manipulação de dados
library(kableExtra) # pacote para formatar tabelas
library(readxl) # pacote para ler e manipular arquivos xlsx
library(ggplot2) # pacote para elaboração de gráficos
library(MortalityTables) # pacote para manipulação de tábuas biométricas
library(knitr) # pacote para visualização
library(DT) # pacote para formatar tabelas
library(janitor) # pacote para limpeza de nomes de colunas
library(LexisPlotR) # pacote para criar diagramas de Lexis
A partir dos dados de população do censo 2000 e 2010 e da Matriz de Migração de data fixa para o ano de 2010, calcule para o estado da Paraíba:
# Dados populacionais dos censos 2000 e 2010
pop_data <- list(
pop_2000 <- get_sidra(x = 200, period = '2000', geo = 'State', geo.filter = 25),
pop_2010 <- get_sidra(x = 200, period = '2010', geo = 'State', geo.filter = 25)
)
# Renomear colunas
pop_data <- lapply(pop_data, function(data) {
data %>%
clean_names() # Remove caracteres problemáticos
})
process_population_data <- function(data) {
data %>%
filter(situacao_do_domicilio == "Total") %>%
select(unidade_da_federacao, ano, sexo, grupo_de_idade, valor) %>%
pivot_wider(
names_from = sexo,
values_from = valor
) %>%
mutate(grupo_de_idade = factor(grupo_de_idade, levels = c(
"0 a 4 anos", "1 a 4 anos", "5 a 9 anos", "10 a 14 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 a 54 anos", "55 a 59 anos", "60 a 64 anos",
"65 a 69 anos", "70 a 74 anos", "75 a 79 anos", "80 a 84 anos", "85 a 89 anos",
"90 a 94 anos", "95 a 99 anos", "100 anos ou mais", "Total"))) %>%
arrange(grupo_de_idade) %>%
drop_na(grupo_de_idade)
}
# Aplicar a função a todos os conjuntos de dados
pop_data <- lapply(pop_data, process_population_data)
# Matriz de migração
uf <- read_excel("C:/Users/cleod/Downloads/Matriz_de_Migrao_-_Censo_2010.xlsx")
matriz <- read_excel("C:/Users/cleod/Downloads/Matriz_de_Migrao_-_Censo_2010.xlsx",
sheet = 2,
skip = 2)
# Filtrar emigrações
emigracao <- matriz %>%
filter(UF == "25") %>%
select("Total")
# Filtrar imigrações
imigracao <- matriz %>%
filter(UF == "Total") %>%
select("25")
# Converter para numérico
imigracao <- as.numeric(imigracao)
emigracao <- as.numeric(emigracao)
# Saldo migratório
saldo_migratorio <- imigracao - emigracao
O saldo migratório é a diferença entre o número de pessoas que entram e saem de um determinado local em um determinado período de tempo. No caso da Paraíba, o saldo migratório no período foi de -29495 pessoas, dado que houve 96028 imigrantes e 125523 emigrantes, no período de estudo.
# Índice de eficácia
eficacia <- saldo_migratorio / (imigracao + emigracao)
eficacia <- round(eficacia, 2)
O índice de eficácia é uma medida que avalia a eficácia do processo migratório, sendo calculado pela razão entre o saldo migratório e o total de pessoas que entraram e saíram de um determinado local em um determinado período de tempo. No caso da Paraíba, o índice de eficácia foi de -0.13, indicando que a Paraíba foi uma área de baixa evasão migratória no período de estudo.
# População em 2000 e 2010
pop_2000_total <- pop_data[[1]] %>%
filter(grupo_de_idade == "Total") %>%
select("Total") %>%
pull()
pop_2010_total <- pop_data[[2]] %>%
filter(grupo_de_idade == "Total") %>%
select("Total") %>%
pull()
# Taxa de crescimento migratório
taxa_crescimento_migratorio <- (saldo_migratorio / ((pop_2000_total + pop_2010_total) / 2)) * 1000
taxa_crescimento_migratorio <- round(taxa_crescimento_migratorio, 2)
A taxa de crescimento migratório é o quociente entre o saldo migratório e a média da população total de um determinado local em um determinado período de tempo, multiplicado por 1000. No caso da Paraíba, a taxa de crescimento migratório foi de -8.18 por mil habitantes, indicando que a Paraíba teve um crescimento migratório negativo no período de estudo.
# Taxa líquida de migração
taxa_liquida_migracao <- (saldo_migratorio / pop_2010_total) * 1000
taxa_liquida_migracao <- round(taxa_liquida_migracao, 2)
A taxa líquida de migração é o quociente entre o saldo migratório e a população total de um determinado local em um determinado período de tempo. No caso da Paraíba, a taxa líquida de migração foi de -7.83 por mil habitantes, indicando que a Paraíba teve um saldo migratório negativo no período de estudo.
# Extrair os censos da lista
censo2000 <- pop_data[[1]]
censo2010 <- pop_data[[2]]
# Ordenar por faixa etária (ajuste os nomes das colunas se necessário)
censo2000 <- censo2000[order(censo2000$grupo_de_idade), ]
censo2010 <- censo2010[order(censo2010$grupo_de_idade), ]
# Calcular a RIS:
# - A população de 10-14 em 2010 divide pela de 0-4 em 2000
# - A população de 15-19 em 2010 divide pela de 5-9 em 2000
# - E assim por diante...
# Número de faixas a deslocar (10 anos = 2 faixas quinquenais)
deslocamento <- 2
ris <- data.frame(
faixa_etaria_2000 = censo2000$grupo_de_idade[1:(nrow(censo2000)-deslocamento)],
faixa_etaria_2010 = censo2010$grupo_de_idade[(deslocamento+1):nrow(censo2010)],
pop_2000 = censo2000$Total[1:(nrow(censo2000)-deslocamento)],
pop_2010 = censo2010$Total[(deslocamento+1):nrow(censo2010)],
RIS = censo2010$Total[(deslocamento+1):nrow(censo2010)] / censo2000$Total[1:(nrow(censo2000)-deslocamento)]
)
# Eliminar a última linha
ris <- ris[-nrow(ris), ]
# Arredondar para 3 casas decimais
ris$RIS <- round(ris$RIS, 3)
# Exibir a tabela
library(knitr)
kable(ris, caption = "Razão Intercensitária de Sobrevivência (2000-2010)")
faixa_etaria_2000 | faixa_etaria_2010 | pop_2000 | pop_2010 | RIS |
---|---|---|---|---|
0 a 4 anos | 10 a 14 anos | 338452 | 348584 | 1.030 |
5 a 9 anos | 15 a 19 anos | 355474 | 352858 | 0.993 |
10 a 14 anos | 20 a 24 anos | 389975 | 346131 | 0.888 |
15 a 19 anos | 25 a 29 anos | 389108 | 327346 | 0.841 |
20 a 24 anos | 30 a 34 anos | 323321 | 297548 | 0.920 |
25 a 29 anos | 35 a 39 anos | 260579 | 260648 | 1.000 |
30 a 34 anos | 40 a 44 anos | 242077 | 243874 | 1.007 |
35 a 39 anos | 45 a 49 anos | 219353 | 214391 | 0.977 |
40 a 44 anos | 50 a 54 anos | 176746 | 171256 | 0.969 |
45 a 49 anos | 55 a 59 anos | 151517 | 147494 | 0.973 |
50 a 54 anos | 60 a 64 anos | 134749 | 130083 | 0.965 |
55 a 59 anos | 65 a 69 anos | 113017 | 101058 | 0.894 |
60 a 64 anos | 70 a 74 anos | 103009 | 85782 | 0.833 |
65 a 69 anos | 75 a 79 anos | 73761 | 55279 | 0.749 |
70 a 74 anos | 80 a 84 anos | 65518 | 40403 | 0.617 |
75 a 79 anos | 85 a 89 anos | 50917 | 24112 | 0.474 |
80 a 84 anos | 90 a 94 anos | 32463 | 10068 | 0.310 |
85 a 89 anos | 95 a 99 anos | 17595 | 3575 | 0.203 |
90 a 94 anos | 100 anos ou mais | 5277 | 742 | 0.141 |