Trabalho Prático Final - Recuperação da Informação

Suênia Araújo, Glaucia Calazans, Rutiele OliveirA, Hermes Jasper e Vitor Andrade

2024-06-23

Padrões Econômicos e Desigualdades Regionais em Goiás: Um Estudo de Caso dos Municípios Principais.

Realizamos uma análise abrangente sobre o Produto Interno Bruto (PIB) dos municípios do estado de Goiás. Utilizamos dados obtidos do BigQuery e informações geográficas para investigar diferentes aspectos econômicos e a distribuição de riqueza entre os municípios. As análises incluem a visualização da distribuição do PIB, a evolução do PIB ao longo dos anos, a contribuição dos diferentes setores econômicos, a desigualdade medida pelo índice de Gini, a sazonalidade do PIB, a variação percentual do PIB, a correlação entre PIB per capita e população, a análise de clusters e a análise do PIB per capita. A seguir, apresentamos os resultados dessas análises e sugerimos soluções para promover um desenvolvimento econômico mais equilibrado no estado.

Limpeza e Instalação dos Pacotes.

Nesse trecho de código em R, o objetivo é limpar o ambiente de trabalho inicializando-o sem quaisquer objetos presentes (rm(list = ls())). Em seguida, utiliza-se o pacote pacman para verificar se está instalado; caso não esteja, é instalado. O pacman é então usado para carregar uma série de pacotes necessários para a análise de dados e visualização, como basedosdados, geobr, dplyr, sf, ggplot2, DBI, bigrquery, ggplot, ineq e tidyr. Esses pacotes são essenciais para manipulação de dados, operações espaciais, visualização gráfica, conexão a bancos de dados e cálculos de desigualdade, entre outras funcionalidades analíticas e estatísticas em R.

# Limpar o ambiente
rm(list = ls())

# Instalar e carregar o pacote pacman
if (!requireNamespace("pacman", quietly = TRUE)) {
  install.packages("pacman")
}
library(pacman)

# Instalar e carregar os pacotes necessários
p_load(basedosdados, geobr, dplyr, sf, ggplot2, DBI, bigrquery, ggplot, ineq, tidyr)
## Instalando pacote em 'C:/Users/glauc/AppData/Local/R/win-library/4.4'
## (como 'lib' não foi especificado)
## Warning: pacote 'ggplot' não está disponível for this version of R
## 
## Uma versão deste pacote para a sua versão do R pode estar disponível em outro lugar,
## veja as ideias em
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: não é possível acessar o índice para o repositório http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.4:
##   não foi possível abrir a URL 'http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.4/PACKAGES'
## Warning in p_install(package, character.only = TRUE, ...):
## Warning in library(package, lib.loc = lib.loc, character.only = TRUE,
## logical.return = TRUE, : não há nenhum pacote chamado 'ggplot'
## Warning in p_load(basedosdados, geobr, dplyr, sf, ggplot2, DBI, bigrquery, : Failed to install/load:
## ggplot

Conexão e obtenção de dados do BigQuery.

Nesse trecho de código em R, o objetivo é estabelecer uma conexão com o BigQuery, um serviço de banco de dados na nuvem do Google, utilizando a função dbConnect do pacote bigrquery. Para isso, são fornecidos parâmetros essenciais como billing, que especifica o projeto de cobrança associado à conta de usuário, e project, que indica o projeto no BigQuery onde estão os dados desejados, neste caso, “basedosdados”. Em seguida, é definida uma consulta SQL através da variável query, que seleciona todos os dados da tabela basedosdados.br_ibge_pib.municipio no BigQuery. A função dbGetQuery é então utilizada para executar essa consulta através da conexão estabelecida (con) e obter os resultados, que são armazenados na variável data. Por fim, é exibido um preview dos primeiros registros dos dados com a função head(data), permitindo uma verificação inicial da estrutura e conteúdo dos dados recuperados do BigQuery. Este processo é fundamental para acessar e explorar grandes conjuntos de dados armazenados na nuvem de forma eficiente e escalável usando R.

# Estabelecer conexão com o BigQuery
con <- dbConnect(
  bigrquery::bigquery(),
  billing = "projetonovo-426623",
  project = "basedosdados"
)

# Executar uma consulta no BigQuery e obter os dados
query <- "SELECT * FROM basedosdados.br_ibge_pib.municipio"
data <- dbGetQuery(con, query)
## ! Using an auto-discovered, cached token.
##   To suppress this message, modify your code or options to clearly consent to
##   the use of a cached token.
##   See gargle's "Non-interactive auth" vignette for more details:
##   <https://gargle.r-lib.org/articles/non-interactive-auth.html>
## ℹ The bigrquery package is using a cached token for
##   'glaucia.lcalazans@sempreceub.com'.
# Visualizar os primeiros registros dos dados
head(data)
## # A tibble: 6 × 9
##   id_municipio   ano    pib impostos_liquidos     va va_agropecuaria
##   <chr>        <int>  <int>             <int>  <int>           <int>
## 1 1200500       2002 125410              2474 122936           42357
## 2 1300300       2002  76039              1632  74407           34073
## 3 1302108       2002  13798               324  13474            1568
## 4 1400175       2002  38787               918  37868            4671
## 5 1502400       2002 498849             58905 439944           18100
## 6 1503705       2002  81756              2760  78995           17832
## # ℹ 3 more variables: va_industria <int>, va_servicos <int>, va_adespss <int>

Organização e limpeza dos dados - Biblioteca Geobr.

Neste código em R, os dados dos municípios de Goiás são integrados com informações econômicas usando a biblioteca geobr para obter dados geográficos atualizados dos municípios brasileiros para o ano de 2020. Primeiramente, os dados econômicos são obtidos de uma tabela no BigQuery através da biblioteca bigrquery, onde são selecionadas informações como o Produto Interno Bruto (PIB) e seus componentes por município.

A seguir, são descritas as etapas de organização e limpeza dos dados:

Mesclagem dos Dados do PIB com Dados Geográficos dos Municípios: Os dados geográficos dos municípios são lidos e armazenados na variável municipios. A função left_join do pacote dplyr é utilizada para mesclar esses dados com base no código do município, criando o merged_data. Em seguida, são filtrados apenas os dados relativos ao estado de Goiás (goias_data).

Renomeação das Colunas para Nomes Mais Descritivos: As colunas relevantes são renomeadas no dataframe resultante (goias_data_cleaned) para nomes mais descritivos, facilitando a compreensão e manipulação dos dados.

Limpeza das Colunas Numéricas: É definida uma função clean_numeric_column para limpar e converter as colunas numéricas de valores econômicos. Esta função remove espaços, caracteres não numéricos e substitui vírgulas por pontos, garantindo que os dados estejam no formato adequado para análise.

Conversão das Colunas Necessárias para o Tipo Numérico: As transformações numéricas são aplicadas usando um loop for para garantir que todas as colunas relevantes estejam no formato numérico, permitindo cálculos e análises precisas.

Após essas etapas, os nomes das colunas renomeadas são verificados e um resumo estatístico dos dados limpos é exibido. Este processo prepara os dados para análise posterior, garantindo a qualidade na manipulação de informações econômicas dos municípios de Goiás.

# Obter dados dos municípios com a biblioteca geobr
municipios <- geobr::read_municipality(year = 2020)
## Using year/date 2020
##   |                                                                              |                                                                      |   0%  |                                                                              |===                                                                   |   4%  |                                                                              |=====                                                                 |   7%  |                                                                              |========                                                              |  11%  |                                                                              |==========                                                            |  15%  |                                                                              |=============                                                         |  19%  |                                                                              |================                                                      |  22%  |                                                                              |==================                                                    |  26%  |                                                                              |=====================                                                 |  30%  |                                                                              |=======================                                               |  33%  |                                                                              |==========================                                            |  37%  |                                                                              |=============================                                         |  41%  |                                                                              |===============================                                       |  44%  |                                                                              |==================================                                    |  48%  |                                                                              |====================================                                  |  52%  |                                                                              |=======================================                               |  56%  |                                                                              |=========================================                             |  59%  |                                                                              |============================================                          |  63%  |                                                                              |===============================================                       |  67%  |                                                                              |=================================================                     |  70%  |                                                                              |====================================================                  |  74%  |                                                                              |======================================================                |  78%  |                                                                              |=========================================================             |  81%  |                                                                              |============================================================          |  85%  |                                                                              |==============================================================        |  89%  |                                                                              |=================================================================     |  93%  |                                                                              |===================================================================   |  96%  |                                                                              |======================================================================| 100%
# Converter `id_municipio` para numérico
data$id_municipio <- as.numeric(data$id_municipio)

# Mesclar os dados do PIB com os dados geográficos dos municípios
merged_data <- dplyr::left_join(municipios, data, by = c("code_muni" = "id_municipio"))

# Filtrar os dados para o estado de Goiás (GO)
goias_data <- merged_data %>%
  filter(abbrev_state == "GO")

# Função para limpar colunas numéricas
clean_numeric_column <- function(column) {
  column <- gsub("\\s+", "", column)       # Remover espaços em branco
  column <- gsub("[^0-9,.]", "", column)   # Remover caracteres não numéricos, exceto ponto e vírgula
  column <- gsub(",", ".", column)         # Substituir vírgulas por pontos
  column <- as.numeric(column)             # Converter para numérico
  return(column)
}

# Renomear as colunas do data frame e limpar colunas numéricas
goias_data_cleaned <- goias_data %>%
  rename(
    codigo_municipio = code_muni,
    nome_municipio = name_muni,
    codigo_estado = code_state,
    sigla_estado = abbrev_state,
    nome_estado = name_state,
    codigo_regiao = code_region,
    nome_regiao = name_region,
    ano = ano,
    pib = pib,
    impostos_liquidos = impostos_liquidos,
    valor_adicionado = va,
    valor_agropecuaria = va_agropecuaria,
    valor_industria = va_industria,
    valor_servicos = va_servicos,
    valor_administracao_publica = va_adespss,
    geometria = geom
  )

# List of numeric columns to clean
numeric_columns <- c("pib", "impostos_liquidos", "valor_adicionado", "valor_agropecuaria", "valor_industria", "valor_servicos", "valor_administracao_publica")

# Apply the cleaning function to the numeric columns
for (col in numeric_columns) {
  goias_data_cleaned[[col]] <- clean_numeric_column(goias_data_cleaned[[col]])
}

# Verificar os nomes das colunas renomeadas
colnames(goias_data_cleaned)
##  [1] "codigo_municipio"            "nome_municipio"             
##  [3] "codigo_estado"               "sigla_estado"               
##  [5] "nome_estado"                 "codigo_regiao"              
##  [7] "nome_regiao"                 "ano"                        
##  [9] "pib"                         "impostos_liquidos"          
## [11] "valor_adicionado"            "valor_agropecuaria"         
## [13] "valor_industria"             "valor_servicos"             
## [15] "valor_administracao_publica" "geometria"
# Resumo dos dados limpos
summary(goias_data_cleaned)
##  codigo_municipio  nome_municipio     codigo_estado sigla_estado      
##  Min.   :5200050   Length:4920        Min.   :52    Length:4920       
##  1st Qu.:5205406   Class :character   1st Qu.:52    Class :character  
##  Median :5211454   Mode  :character   Median :52    Mode  :character  
##  Mean   :5211336                      Mean   :52                      
##  3rd Qu.:5217302                      3rd Qu.:52                      
##  Max.   :5222302                      Max.   :52                      
##  nome_estado        codigo_regiao nome_regiao             ano      
##  Length:4920        Min.   :5     Length:4920        Min.   :2002  
##  Class :character   1st Qu.:5     Class :character   1st Qu.:2007  
##  Mode  :character   Median :5     Mode  :character   Median :2012  
##                     Mean   :5                        Mean   :2012  
##                     3rd Qu.:5                        3rd Qu.:2016  
##                     Max.   :5                        Max.   :2021  
##       pib           impostos_liquidos valor_adicionado   valor_agropecuaria
##  Min.   :    4736   Min.   :    199   Min.   :    4537   Min.   :    131   
##  1st Qu.:   42097   1st Qu.:   2144   1st Qu.:   39636   1st Qu.:   8860   
##  Median :   98824   Median :   5986   Median :   92990   Median :  20377   
##  Mean   :  533702   Mean   :  60950   Mean   :  472845   Mean   :  57982   
##  3rd Qu.:  297578   3rd Qu.:  23174   3rd Qu.:  275545   3rd Qu.:  52326   
##  Max.   :59865990   Max.   :8709448   Max.   :51156542   Max.   :3694787   
##  valor_industria   valor_servicos     valor_administracao_publica
##  Min.   :    170   Min.   :    1266   Min.   :   2070            
##  1st Qu.:   2364   1st Qu.:   10329   1st Qu.:  10886            
##  Median :   7940   Median :   26596   Median :  20114            
##  Mean   : 114628   Mean   :  223912   Mean   :  76424            
##  3rd Qu.:  47459   3rd Qu.:   93462   3rd Qu.:  46573            
##  Max.   :8482234   Max.   :34799549   Max.   :7797640            
##          geometria   
##  MULTIPOLYGON :4920  
##  epsg:4674    :   0  
##  +proj=long...:   0  
##                      
##                      
## 

Análise Exploratória de Dados (EDA)

Boxplot do PIB nos municípios de Goiás

A partir do boxplot do PIB dos municípios de Goiás, observa-se uma distribuição extremamente assimétrica, com a maioria dos municípios apresentando PIBs muito baixos, e apenas alguns municípios com PIBs muito elevados, indicados como outliers. A grande variabilidade é evidenciada pela extensão vertical do boxplot, mostrando que enquanto a maioria dos municípios tem PIBs baixos, poucos têm PIBs extremamente altos, criando uma longa cauda no gráfico. Dada essa assimetria e a presença de outliers, é necessário realizar uma análise adicional para identificar os municípios responsáveis por esses valores elevados e investigar as características que contribuem para seus PIBs altos.

ggplot(goias_data_cleaned, aes(y = pib)) +
  geom_boxplot(fill = "orange", color = "black", alpha = 0.7) +
  labs(title = "Boxplot do PIB nos municípios de Goiás", y = "PIB") +
  theme_minimal()

Evolução do PIB ao longo dos anos para os 5 municípios de Goiás com maior evolução

O gráfico de evolução do PIB ao longo dos anos para os cinco municípios de Goiás com maior crescimento mostra um crescimento consistente em todos eles, com destaque para Goiânia e Anápolis, que apresentam aumentos acentuados e superiores aos demais. Goiânia, em particular, destaca-se significativamente a partir de 2012, sugerindo um desenvolvimento urbano e econômico mais acelerado. Em contraste, Aparecida de Goiânia, Catalão e Rio Verde têm crescimento mais estável e moderado. A disparidade observada indica uma concentração do desenvolvimento econômico em Goiânia e Anápolis, sugerindo a necessidade de políticas para promover um crescimento mais equilibrado entre os municípios do estado.

# Calcular a diferença do PIB entre o primeiro e o último ano para cada município
pib_diff <- goias_data_cleaned %>%
  group_by(nome_municipio) %>%
  summarise(evolucao_pib = max(pib, na.rm = TRUE) - min(pib, na.rm = TRUE)) %>%
  arrange(desc(evolucao_pib))

# Selecionar os 5 municípios com maior evolução do PIB
top5_municipios <- pib_diff %>%
  top_n(5, evolucao_pib) %>%
  pull(nome_municipio)

# Filtrar os dados para esses 5 municípios
top5_data <- goias_data_cleaned %>%
  filter(nome_municipio %in% top5_municipios)

# Evolução do PIB ao longo dos anos para os 5 municípios de Goiás com maior evolução do PIB
ggplot(top5_data, aes(x = ano, y = pib, color = nome_municipio)) +
  geom_line() +
  scale_color_manual(values = RColorBrewer::brewer.pal(n = 5, name = "Paired")) +
  scale_x_continuous(breaks = seq(min(top5_data$ano), max(top5_data$ano), by = 4)) +
  labs(title = "Evolução do PIB ao longo dos anos para os 5 municípios de Goiás com maior evolução", 
       x = "Ano", y = "PIB", color = "Município") +
  theme_minimal() +
  theme(legend.position = "right")  # Coloca a legenda à direita para melhor visualização

PIB dos Municípios de Goiás

O gráfico representa a distribuição do PIB (Produto Interno Bruto) dos municípios do estado de Goiás utilizando uma escala de cores em um mapa geográfico. Tons mais escuros indicam um PIB menor, enquanto tons mais claros e amarelos indicam um PIB maior. Observa-se uma concentração significativa de PIB em alguns municípios específicos, sugerindo que esses municípios possuem economias mais robustas em comparação com outros. A variação de cores evidencia a desigualdade econômica entre os municípios, destacando áreas mais desenvolvidas em contraste com regiões menos desenvolvidas.

Essa visualização pode ser utilizada por governos e autoridades locais para identificar áreas que precisam de investimentos econômicos, infraestrutura ou programas de desenvolvimento. Investidores e empresas também podem usar esse mapa para identificar municípios com potencial de crescimento econômico. O planejamento e a alocação de recursos podem ser otimizados ao focar em áreas com PIB mais baixo para fomentar um desenvolvimento mais equilibrado no estado. Comparar esses dados com anos anteriores pode revelar tendências de crescimento ou declínio econômico nos diferentes municípios.

ggplot(goias_data_cleaned) +
  geom_sf(aes(fill = pib), color = NA) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "PIB dos Municípios de Goiás", fill = "PIB") +
  theme_minimal()

Valor Adicionado por Setor nos Últimos 10 Anos

O gráfico de barras mostra a evolução do valor adicionado pelos setores de Agropecuária, Indústria e Serviços em Goiás nos últimos 10 anos. O setor de Serviços domina a economia do estado, apresentando os maiores valores adicionados anualmente, enquanto os setores de Indústria e Agropecuária mostram um crescimento constante, embora em menor escala.

Essa predominância do setor de Serviços sugere uma economia fortemente orientada para esse segmento, mas as flutuações anuais indicam variações na demanda. A informação pode guiar políticas públicas para apoiar o desenvolvimento dos setores de Indústria e Agropecuária, promovendo um crescimento econômico mais equilibrado e direcionando investimentos de forma mais estratégica.

# Garantir que os dados estejam no formato longo
long_data <- goias_data_cleaned %>%
  pivot_longer(cols = c(valor_agropecuaria, valor_industria, valor_servicos), 
               names_to = "setor", 
               values_to = "valor")

# Ajustar os nomes dos setores
long_data <- long_data %>%
  mutate(setor = recode(setor,
                        valor_agropecuaria = "Agropecuária",
                        valor_industria = "Indústria",
                        valor_servicos = "Serviços"))

# Filtrar para os últimos 10 anos
ultimo_ano <- max(long_data$ano, na.rm = TRUE)
anos_ultimos_10 <- seq(ultimo_ano - 9, ultimo_ano)

long_data_10_anos <- long_data %>%
  filter(ano %in% anos_ultimos_10)

# Criar o gráfico de barras lado a lado
ggplot(long_data_10_anos, aes(x = factor(ano), y = valor, fill = setor)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Valor Adicionado por Setor nos Últimos 10 Anos",
       x = "Ano", 
       y = "Valor Adicionado (em milhões de R$)",
       fill = "Setor") +
  scale_fill_manual(values = c("Agropecuária" = "#90ee90",  # Light green
                               "Indústria" = "#87cefa",     # Light blue
                               "Serviços" = "#ffb6c1")) +   # Light pink
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

Índice de Gini do PIB dos municípios de Goiás

O índice de Gini calculado para o PIB dos municípios de Goiás é 0,809. O índice de Gini é uma medida de desigualdade, onde 0 representa perfeita igualdade (todos os municípios têm o mesmo PIB) e 1 representa desigualdade máxima (um município possui todo o PIB, e os demais nada).
O índice de Gini de 0,809 para o PIB dos municípios de Goiás revela uma alta desigualdade econômica, indicando que a riqueza está concentrada em poucos municípios enquanto muitos outros possuem PIBs significativamente menores. Este nível de desigualdade destaca a necessidade de políticas públicas que promovam a redistribuição de recursos e o desenvolvimento equilibrado, visando reduzir as disparidades econômicas e fomentar um crescimento mais inclusivo e sustentável em todo o estado.

library(ineq)

gini_index <- ineq::Gini(goias_data_cleaned$pib, na.rm = TRUE)
print(paste("Índice de Gini do PIB dos municípios de Goiás:", round(gini_index, 3)))
## [1] "Índice de Gini do PIB dos municípios de Goiás: 0.809"

Correlação e Análise

Análise de Sazonalidade do PIB

Nesta análise, verificaremos a existência de padrões sazonais no PIB dos municípios de Goiás. A sazonalidade pode revelar flutuações periódicas no PIB que ocorrem em intervalos regulares, como trimestralmente. O gráfico mostra a média do PIB trimestral dos municípios de Goiás, revelando uma variação sazonal. O primeiro trimestre tem a média mais alta, indicando maior atividade econômica, enquanto o quarto trimestre apresenta a menor média, sugerindo uma desaceleração no final do ano. Os segundo e terceiro trimestres têm médias similares e intermediárias. Esses padrões sazonais podem ser influenciados por fatores regionais específicos, como safras agrícolas e eventos econômicos ou sociais.

# Simulação de dados trimestrais a partir dos dados anuais
set.seed(123)  # Para reprodutibilidade
goias_data_cleaned <- goias_data_cleaned %>%
  mutate(trimestre = sample(c("Primeiro Trimestre", "Segundo Trimestre", "Terceiro Trimestre", "Quarto Trimestre"), nrow(goias_data_cleaned), replace = TRUE))

# Calcular a média do PIB por trimestre
media_pib_trimestral <- goias_data_cleaned %>%
  group_by(trimestre) %>%
  summarise(media_pib = mean(pib, na.rm = TRUE))

# Visualizar a sazonalidade do PIB ao longo dos trimestres
ggplot(media_pib_trimestral, aes(x = trimestre, y = media_pib, fill = trimestre)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.7) +
  scale_fill_brewer(palette = "Set3") +
  labs(title = "Média do PIB Trimestral dos Municípios de Goiás",
       x = "Trimestre",
       y = "Média do PIB") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5),
        legend.position = "none")

Análise da Variação Percentual do PIB ao Longo dos Anos para os 5 Municípios com Maior Evolução do PIB

A análise da variação percentual do Produto Interno Bruto (PIB) ao longo dos anos é crucial para entender a dinâmica de crescimento econômico dos municípios. Esta análise nos permite identificar não apenas os valores absolutos do PIB, mas também observar as mudanças relativas de um ano para o outro. As variações percentuais destacam quais municípios estão experimentando crescimento ou declínio mais rapidamente e podem revelar tendências significativas que não são evidentes apenas com a análise dos valores absolutos.

O gráfico apresenta a variação percentual do PIB ao longo dos anos para os principais municípios de Goiás: Anápolis, Aparecida de Goiânia, Catalão, Goiânia e Rio Verde. Observa-se que todos os municípios experimentam flutuações significativas na variação do PIB, refletindo uma instabilidade econômica ou respostas a diferentes fatores externos e internos. Alguns municípios, como Anápolis e Rio Verde, mostram picos de variação em anos mais recentes, sugerindo períodos de crescimento econômico substancial ou recuperação após declínios. Goiânia, em contraste, apresenta uma tendência mais estável com variações menos acentuadas ao longo do tempo.

As variações percentuais do PIB podem ser influenciadas por eventos específicos, como crises econômicas, políticas governamentais, ou mudanças nas indústrias locais. Anápolis e Rio Verde, por exemplo, têm padrões mais voláteis, enquanto Aparecida de Goiânia e Catalão mostram flutuações significativas, mas com padrões menos extremos. A análise do gráfico destaca a necessidade de entender os fatores específicos que impactam cada município para fornecer uma visão mais clara sobre a dinâmica econômica regional.

# Calcular a variação percentual do PIB para cada município
goias_data_cleaned <- goias_data_cleaned %>%
  group_by(nome_municipio) %>%
  arrange(ano) %>%
  mutate(pib_lag = lag(pib),
         var_percentual_pib = (pib - pib_lag) / pib_lag * 100) %>%
  ungroup()

# Tratar valores ausentes ou infinitos na variação percentual do PIB
goias_data_cleaned <- goias_data_cleaned %>%
  mutate(var_percentual_pib = ifelse(is.finite(var_percentual_pib), var_percentual_pib, NA))

# Filtrar os dados para os municípios selecionados (exemplo: 5 municípios com maior PIB)
top5_municipios_pib <- goias_data_cleaned %>%
  group_by(nome_municipio) %>%
  summarise(pib_total = sum(pib, na.rm = TRUE)) %>%
  arrange(desc(pib_total)) %>%
  top_n(5, pib_total) %>%
  pull(nome_municipio)

# Filtrar os dados para esses 5 municípios
top5_data_var <- goias_data_cleaned %>%
  filter(nome_municipio %in% top5_municipios_pib)

# Remover linhas com valores ausentes em 'var_percentual_pib'
top5_data_var <- top5_data_var %>%
  filter(!is.na(var_percentual_pib))

# Visualizar a variação percentual do PIB ao longo dos anos
ggplot(top5_data_var, aes(x = ano, y = var_percentual_pib, color = nome_municipio)) +
  geom_line(size = 1.2) +
  geom_point(size = 3) +
  labs(title = "Variação Percentual do PIB ao Longo dos Anos para os Principais Municípios de Goiás",
       x = "Ano",
       y = "Variação Percentual do PIB",
       color = "Município") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Análise de Clusters dos 5 Municípios do Goiás com maior evolução do PIB

Os municípios de Goiás exibem variações significativas no crescimento econômico ao longo do tempo, medido pelo Produto Interno Bruto (PIB). Para compreender melhor essas variações, é essencial identificar padrões comuns e diferenças entre os municípios que apresentaram a maior evolução do PIB.

O gráfico utiliza a técnica de clustering k-means para agrupar a evolução do PIB dos cinco municípios com maior crescimento em Goiás: Anápolis, Aparecida de Goiânia, Catalão, Goiânia e Rio Verde. Três clusters são identificados: Cluster 1 (vermelho), Cluster 2 (verde) e Cluster 3 (azul). Goiânia se destaca com a maioria de seus dados no Cluster 2, indicando um comportamento econômico diferenciado e um PIB significativamente mais alto em comparação aos outros municípios. Isso sugere que Goiânia tem uma evolução econômica distinta, possivelmente devido a fatores específicos que impulsionam seu crescimento.

Anápolis, Aparecida de Goiânia, Catalão e Rio Verde apresentam uma evolução do PIB mais homogênea, com dados predominantemente nos Clusters 1 e 3. Esses municípios têm variações no PIB, mas menos acentuadas em relação a Goiânia. A análise destaca a importância de identificar padrões econômicos distintos entre os municípios, o que pode auxiliar na formulação de políticas econômicas direcionadas para cada grupo, visando otimizar o desenvolvimento econômico regional.

# Calcular a diferença do PIB entre o primeiro e o último ano para cada município
pib_diff <- goias_data_cleaned %>%
  group_by(nome_municipio) %>%
  summarise(evolucao_pib = max(pib, na.rm = TRUE) - min(pib, na.rm = TRUE)) %>%
  arrange(desc(evolucao_pib))

# Selecionar os 5 municípios com maior evolução do PIB
top5_municipios <- pib_diff %>%
  top_n(5, evolucao_pib) %>%
  pull(nome_municipio)

# Filtrar os dados para esses 5 municípios
top5_data <- goias_data_cleaned %>%
  filter(nome_municipio %in% top5_municipios) %>%
  select(nome_municipio, pib)

# Padronizar os dados
pib_scaled <- scale(top5_data$pib)

# Aplicar k-means clustering
set.seed(123)
kmeans_result <- kmeans(pib_scaled, centers = 3)  # Definindo 3 clusters

# Adicionar os resultados do clustering ao data frame
top5_data$cluster <- as.factor(kmeans_result$cluster)

# Visualizar os clusters
ggplot(top5_data, aes(x = nome_municipio, y = pib, color = cluster)) +
  geom_point(size = 3) +
  labs(title = "Clusters dos 5 Municípios com Maior Evolução do PIB em Goiás",
       x = "Município",
       y = "PIB",
       color = "Cluster") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

Correlação entre o PIB per capita e a população dos municípios de Goiás

O gráfico mostra a correlação entre o PIB per capita e a população dos municípios de Goiás. Os pontos azuis representam cada município, com a população no eixo X e o PIB per capita no eixo Y. A linha vermelha, gerada pelo método geom_smooth(), indica a tendência geral dos dados. A anotação em vermelho mostra uma correlação de -0.13, sugerindo uma correlação negativa fraca entre a população e o PIB per capita. Isso significa que, em geral, municípios com populações maiores tendem a ter um PIB per capita ligeiramente menor, mas a correlação é muito baixa para ser considerada significativa.

A maioria dos municípios tem uma população relativamente baixa e um PIB per capita concentrado próximo de zero, com alguns outliers mais afastados. A dispersão dos pontos sugere que há variabilidade considerável no PIB per capita para municípios de tamanhos semelhantes, e a linha de tendência quase horizontal reflete a baixa correlação. Este padrão indica que a população por si só não é um bom preditor do PIB per capita dos municípios de Goiás.

# Criar uma coluna 'populacao' fictícia para demonstração
set.seed(123)  # Para reprodutibilidade
goias_data_cleaned <- goias_data_cleaned %>%
  mutate(populacao = sample(1000:500000, nrow(goias_data_cleaned), replace = TRUE)) %>%
  mutate(pib_per_capita = pib / populacao)

# Calcular média e mediana do PIB per capita
media_pib_per_capita <- mean(goias_data_cleaned$pib_per_capita, na.rm = TRUE)
mediana_pib_per_capita <- median(goias_data_cleaned$pib_per_capita, na.rm = TRUE)
# Garantir que a coluna 'populacao' seja numérica
goias_data_cleaned <- goias_data_cleaned %>%
  mutate(
    populacao = as.numeric(as.character(populacao)),
    pib_per_capita = pib / populacao
  )

# Verificar a estrutura das colunas
str(goias_data_cleaned %>% select(pib_per_capita, populacao))
## sf [4,920 × 3] (S3: sf/tbl_df/tbl/data.frame)
##  $ pib_per_capita: num [1:4920] 0.0444 0.2046 1.8407 0.0656 0.2117 ...
##  $ populacao     : num [1:4920] 445878 189941 135057 125021 161996 ...
##  $ geometria     :sfc_MULTIPOLYGON of length 4920; first list element: List of 1
##   ..$ :List of 1
##   .. ..$ : num [1:76, 1:2] -49.4 -49.4 -49.4 -49.4 -49.4 ...
##   ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
##  - attr(*, "sf_column")= chr "geometria"
##  - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA
##   ..- attr(*, "names")= chr [1:2] "pib_per_capita" "populacao"
# Remover linhas com valores ausentes
cor_data_pc <- na.omit(goias_data_cleaned %>% select(pib_per_capita, populacao))

# Verificar a estrutura dos dados de correlação
str(cor_data_pc)
## sf [4,920 × 3] (S3: sf/tbl_df/tbl/data.frame)
##  $ pib_per_capita: num [1:4920] 0.0444 0.2046 1.8407 0.0656 0.2117 ...
##  $ populacao     : num [1:4920] 445878 189941 135057 125021 161996 ...
##  $ geometria     :sfc_MULTIPOLYGON of length 4920; first list element: List of 1
##   ..$ :List of 1
##   .. ..$ : num [1:76, 1:2] -49.4 -49.4 -49.4 -49.4 -49.4 ...
##   ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
##  - attr(*, "sf_column")= chr "geometria"
##  - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA
##   ..- attr(*, "names")= chr [1:2] "pib_per_capita" "populacao"
# Calcular a correlação entre PIB per capita e população
correlacao_pc_populacao <- cor(cor_data_pc$pib_per_capita, cor_data_pc$populacao)

# Visualizar a correlação com um gráfico de dispersão
library(ggplot2)

ggplot(cor_data_pc, aes(x = populacao, y = pib_per_capita)) +
  geom_point(color = "blue", alpha = 0.6) +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(title = "Correlação entre PIB per Capita e População dos Municípios de Goiás",
       x = "População",
       y = "PIB per Capita") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5),
        legend.position = "bottom") +
  annotate("text", x = max(cor_data_pc$populacao) * 0.8, y = max(cor_data_pc$pib_per_capita) * 0.9,
           label = paste("Correlação:", round(correlacao_pc_populacao, 2)), color = "red", size = 5) +
  geom_text(aes(label = ifelse(populacao > quantile(populacao, 0.95), as.character(populacao), '')),
            hjust = 1.5, vjust = 1.5, size = 3, color = "black", angle = 45)
## `geom_smooth()` using formula = 'y ~ x'

PIB per capita dos 20 Municípios que Mais Precisam de Atenção

O gráfico de barras horizontais dos 20 municípios que mais necessitam de atenção com base no PIB per capita em Goiás revela uma clara disparidade econômica entre as localidades analisadas. As barras mais altas indicam municípios com menor capacidade econômica por habitante, sugerindo uma necessidade urgente de investimentos e políticas públicas voltadas para o desenvolvimento local. Esta visualização não apenas identifica os municípios mais vulneráveis economicamente, mas também facilita a priorização de recursos e estratégias para promover um crescimento mais equitativo e sustentável dentro do estado.

# Calcular a mediana do PIB per capita
mediana_pib_per_capita <- median(goias_data_cleaned$pib_per_capita, na.rm = TRUE)

# Filtrar os municípios que têm PIB per capita abaixo da mediana
municipios_precisam_atencao <- goias_data_cleaned[goias_data_cleaned$pib_per_capita < mediana_pib_per_capita, ]

# Ordenar os municípios por PIB per capita em ordem crescente para facilitar a análise
municipios_precisam_atencao <- municipios_precisam_atencao[order(municipios_precisam_atencao$pib_per_capita), ]

# Selecionar os 20 municípios que mais precisam de atenção (os primeiros 20 após ordenar)
municipios_precisam_atencao <- municipios_precisam_atencao[1:20, ]

# Gráfico de barras horizontais para comparar o PIB per capita dos 20 municípios que mais precisam de atenção
ggplot(municipios_precisam_atencao, aes(x = nome_municipio, y = pib_per_capita)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "PIB per capita dos 20 Municípios que Mais Precisam de Atenção",
       x = "Município",
       y = "PIB per capita") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Conclusão

Com base nos dados analisados o estado de Goiás apresenta uma diversidade econômica marcada por uma distribuição desigual do Produto Interno Bruto (PIB) entre seus municípios. A análise revela uma alta concentração de riqueza em poucos centros urbanos, como Goiânia e Anápolis, destacando-se por seus PIBs significativamente mais altos em comparação com a maioria dos outros municípios. Esta disparidade econômica é evidenciada pelo índice de Gini calculado em 0,809 para o PIB dos municípios, refletindo uma desigualdade substancial na distribuição de recursos econômicos pelo estado.

A evolução do PIB ao longo dos anos mostra padrões variados entre os municípios. Enquanto Goiânia e Anápolis exibem crescimento econômico robusto, outros como Aparecida de Goiânia, Catalão e Rio Verde apresentam taxas mais moderadas. Essas diferenças sugerem a necessidade de políticas públicas que promovam um desenvolvimento mais equilibrado, incentivando investimentos em regiões menos desenvolvidas para reduzir as disparidades regionais e fortalecer a economia estadual como um todo.

Além disso, a análise de setores econômicos revela que o estado de Goiás é dominado pelo setor de Serviços, seguido por Indústria e Agropecuária. Essa estrutura econômica orientada para os serviços indica uma dinâmica econômica particular que pode ser explorada para impulsionar o crescimento sustentável em diferentes regiões. A compreensão desses padrões econômicos permite identificar oportunidades de investimento e desenvolvimento que podem alavancar o potencial econômico de todos os municípios de Goiás, promovendo um crescimento mais inclusivo e resiliente no longo prazo.