1. Introdução

Problema: Desigualdade econômica entre municípios de Goiás. Objetivos específicos: Analisar a distribuição do PIB entre os municípios e identificar desigualdades regionais. Explorar tendências temporais (2002-2021), destacando municípios com maior ou menor crescimento econômico. Avaliar a contribuição setorial (agropecuário, industrial, serviços) para o PIB ao longo dos anos. Relevância: Oferecer insights sobre disparidades econômicas e setoriais que podem orientar políticas públicas e investimentos.

Limpeza do ambiente e Instalação dos Pacotes.

# 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, spdep, viridis)
## 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

#2. Desenvolvimento do KDD 2.1 Coleta e pré-processamento de dados Fonte de dados: Base dos Dados, filtrada para os municípios de Goiás. Coleta: Dados já conectados via BigQuery. Já está filtrando os dados relevantes para os municípios brasileiros (tabela basedosdados.br_ibge_pib.municipio). Métodos de coleta: A coleta foi realizada diretamente com consultas SQL para obter os dados de forma estruturada. Na segunda consulta,já transformamos os tipos de dados para formatos mais adequados (de INTEGER para NUMERIC).

# Estabelecer conexão com o BigQuery
con <- dbConnect(
  bigrquery::bigquery(),
  billing = "projetonovo-426623",   # Projeto de cobrança correto
  project = "projetonovo-426623"    # Projeto correto
)

# Primeira consulta: Obter todos os dados da tabela
query1 <- "
SELECT
  *
FROM
  `basedosdados.br_ibge_pib.municipio`;
"

# Executar a primeira consulta e armazenar os resultados
data1 <- dbGetQuery(con, query1)
## ! 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'.
## Warning in as.integer.integer64(x): NAs produced by integer overflow
## Warning in as.integer.integer64(x): NAs produced by integer overflow
## Warning in as.integer.integer64(x): NAs produced by integer overflow
## Warning in as.integer.integer64(x): NAs produced by integer overflow
## Warning in as.integer.integer64(x): NAs produced by integer overflow
## Warning in as.integer.integer64(x): NAs produced by integer overflow
## Warning in as.integer.integer64(x): NAs produced by integer overflow
# Segunda consulta: Transformar as colunas INTEGER em NUMERIC
query2 <- "
SELECT
  id_municipio,
  ano,
  CAST(pib AS NUMERIC) AS pib,
  CAST(impostos_liquidos AS NUMERIC) AS impostos_liquidos,
  CAST(va AS NUMERIC) AS va,
  CAST(va_agropecuaria AS NUMERIC) AS va_agropecuaria,
  CAST(va_industria AS NUMERIC) AS va_industria,
  CAST(va_servicos AS NUMERIC) AS va_servicos,
  CAST(va_adespss AS NUMERIC) AS va_adespss
FROM
  `basedosdados.br_ibge_pib.municipio`;
"

# Executar a segunda consulta e armazenar os resultados
data2 <- dbGetQuery(con, query2)

# Visualizar os primeiros registros dos dados da primeira consulta
head(data1)
## # A tibble: 6 × 9
##   id_municipio   ano      pib impostos_liquidos       va va_agropecuaria
##   <chr>        <int>    <int>             <int>    <int>           <int>
## 1 1100346       2002 66869000           3643000 63226000        15054000
## 2 1101500       2002 39708000           2199000 37509000         7964000
## 3 1502954       2002 55842000           2219000 53623000         9823000
## 4 1505635       2002 52055000           1346000 50709000        30760000
## 5 1506401       2002 14456000            264000 14191000         7541000
## 6 1703826       2002  4494000            142000  4352000          628000
## # ℹ 3 more variables: va_industria <int>, va_servicos <int>, va_adespss <int>
# Visualizar os primeiros registros dos dados da segunda consulta
head(data2)
## # A tibble: 6 × 9
##   id_municipio   ano      pib impostos_liquidos       va va_agropecuaria
##   <chr>        <int>    <dbl>             <dbl>    <dbl>           <dbl>
## 1 1100346       2002 66869000           3643000 63226000        15054000
## 2 1101500       2002 39708000           2199000 37509000         7964000
## 3 1502954       2002 55842000           2219000 53623000         9823000
## 4 1505635       2002 52055000           1346000 50709000        30760000
## 5 1506401       2002 14456000            264000 14191000         7541000
## 6 1703826       2002  4494000            142000  4352000          628000
## # ℹ 3 more variables: va_industria <dbl>, va_servicos <dbl>, va_adespss <dbl>

Visualização da estrutura do dataframe

# Mostrar a estrutura do dataframe
str(data2)
## tibble [111,400 × 9] (S3: tbl_df/tbl/data.frame)
##  $ id_municipio     : chr [1:111400] "1100346" "1101500" "1502954" "1505635" ...
##  $ ano              : int [1:111400] 2002 2002 2002 2002 2002 2002 2002 2002 2002 2002 ...
##  $ pib              : num [1:111400] 66869000 39708000 55842000 52055000 14456000 ...
##  $ impostos_liquidos: num [1:111400] 3643000 2199000 2219000 1346000 264000 ...
##  $ va               : num [1:111400] 63226000 37509000 53623000 50709000 14191000 ...
##  $ va_agropecuaria  : num [1:111400] 15054000 7964000 9823000 30760000 7541000 ...
##  $ va_industria     : num [1:111400] 3940000 3537000 5439000 4634000 698000 ...
##  $ va_servicos      : num [1:111400] 13954000 6140000 11420000 5513000 1473000 ...
##  $ va_adespss       : num [1:111400] 30277000 19868000 26941000 9801000 4480000 ...

Limpeza: Usamos a função clean_numeric_column para tratar inconsistências nas colunas numéricas. Verificou os valores ausentes (NA) no dataframe goias_data.

# 1. Função para limpar colunas numéricas
clean_numeric_column <- function(column) {
  if (is.character(column) || is.factor(column)) {  # Verifica se a coluna é texto
    column <- gsub("\\s+", "", column)       # Remove espaços em branco
    column <- gsub("[^0-9,.]", "", column)   # Remove caracteres não numéricos
    column <- gsub(",", ".", column)         # Substitui vírgulas por pontos decimais
  }
  column <- as.numeric(column)               # Converte para numérico
  return(column)
}

# 2. Aplicar a função de limpeza nas colunas e garantir que id_municipio também seja limpa
dados_limpos <- data2 %>%
  mutate(across(everything(), ~ clean_numeric_column(.))) %>%
  mutate(id_municipio = clean_numeric_column(id_municipio))  # Limpar e converter id_municipio

# 3. Verificar as primeiras linhas do dataframe limpo
head(dados_limpos)
## # A tibble: 6 × 9
##   id_municipio   ano      pib impostos_liquidos       va va_agropecuaria
##          <dbl> <dbl>    <dbl>             <dbl>    <dbl>           <dbl>
## 1      1100346  2002 66869000           3643000 63226000        15054000
## 2      1101500  2002 39708000           2199000 37509000         7964000
## 3      1502954  2002 55842000           2219000 53623000         9823000
## 4      1505635  2002 52055000           1346000 50709000        30760000
## 5      1506401  2002 14456000            264000 14191000         7541000
## 6      1703826  2002  4494000            142000  4352000          628000
## # ℹ 3 more variables: va_industria <dbl>, va_servicos <dbl>, va_adespss <dbl>
str(dados_limpos)
## tibble [111,400 × 9] (S3: tbl_df/tbl/data.frame)
##  $ id_municipio     : num [1:111400] 1100346 1101500 1502954 1505635 1506401 ...
##  $ ano              : num [1:111400] 2002 2002 2002 2002 2002 ...
##  $ pib              : num [1:111400] 66869000 39708000 55842000 52055000 14456000 ...
##  $ impostos_liquidos: num [1:111400] 3643000 2199000 2219000 1346000 264000 ...
##  $ va               : num [1:111400] 63226000 37509000 53623000 50709000 14191000 ...
##  $ va_agropecuaria  : num [1:111400] 15054000 7964000 9823000 30760000 7541000 ...
##  $ va_industria     : num [1:111400] 3940000 3537000 5439000 4634000 698000 ...
##  $ va_servicos      : num [1:111400] 13954000 6140000 11420000 5513000 1473000 ...
##  $ va_adespss       : num [1:111400] 30277000 19868000 26941000 9801000 4480000 ...

Pré-processamento: Carrega dados geográficos utilizando a função geobr::read_municipality (fonte dos dados: biblioteca geobr, com dados do IBGE). Realiza a mesclagem dos dados geográficos com os dados de PIB por meio de left_join, integrando diferentes fontes de informações. Filtra especificamente os dados para o estado de Goiás (filter(abbrev_state == “GO”), garantindo a limpeza e preparação para análise regional.

# Carregar os dados geográficos dos municípios de Goiás
municipios_goias <- geobr::read_municipality(code_muni = "GO", year = 2020)
## Using year/date 2020
# Mesclar os dados do PIB com os dados geográficos de Goiás
merged_data <- dplyr::left_join(municipios_goias, dados_limpos, by = c("code_muni" = "id_municipio"))


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

# Verificar os primeiros registros dos dados filtrados
head(goias_data)
## Simple feature collection with 6 features and 15 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -49.55353 ymin: -16.86425 xmax: -49.38395 ymax: -16.71646
## Geodetic CRS:  SIRGAS 2000
##   code_muni       name_muni code_state abbrev_state name_state code_region
## 1   5200050 Abadia De Goiás         52           GO      Goiás           5
## 2   5200050 Abadia De Goiás         52           GO      Goiás           5
## 3   5200050 Abadia De Goiás         52           GO      Goiás           5
## 4   5200050 Abadia De Goiás         52           GO      Goiás           5
## 5   5200050 Abadia De Goiás         52           GO      Goiás           5
## 6   5200050 Abadia De Goiás         52           GO      Goiás           5
##    name_region  ano      pib impostos_liquidos       va va_agropecuaria
## 1 Centro Oeste 2002 19813000           1617000 18196000         1674000
## 2 Centro Oeste 2003 22773000           1510000 21263000         2037000
## 3 Centro Oeste 2004 23756000           1314000 22442000         3044000
## 4 Centro Oeste 2005 28156000           1589000 26567000         2269000
## 5 Centro Oeste 2006 31165000           1787000 29378000         2041000
## 6 Centro Oeste 2007 34506000           2222000 32283000         2269000
##   va_industria va_servicos va_adespss                           geom
## 1      4841000     5790000    5891000 MULTIPOLYGON (((-49.4444 -1...
## 2      4734000     7057000    7436000 MULTIPOLYGON (((-49.4444 -1...
## 3      3980000     7148000    8269000 MULTIPOLYGON (((-49.4444 -1...
## 4      5592000     9468000    9238000 MULTIPOLYGON (((-49.4444 -1...
## 5      6592000    10250000   10495000 MULTIPOLYGON (((-49.4444 -1...
## 6      8060000    10933000   11022000 MULTIPOLYGON (((-49.4444 -1...

Ainda conferindo a etapa de limpeza

# Verificar a quantidade de NAs nas colunas numéricas do dataframe goias_data
na_counts_goias <- goias_data %>%
  select(where(is.numeric)) %>%         # Seleciona apenas as colunas numéricas
  sapply(function(x) sum(is.na(x)))     # Conta os NAs em cada coluna numérica

# Visualizar a quantidade de NAs por coluna
na_counts_goias
##         code_muni        code_state       code_region               ano 
##                 0                 0                 0                 0 
##               pib impostos_liquidos                va   va_agropecuaria 
##                 0                 0                 0                 0 
##      va_industria       va_servicos        va_adespss              geom 
##                 0                 0                 0                 0

2.2 Seleção de dados Na etapa de seleção de dados, foram escolhidos os atributos mais relevantes para a análise econômica, como PIB, valores adicionados por setor (agropecuária, indústria, serviços), e o ano, por serem essenciais para entender a distribuição e evolução econômica dos municípios.

O critério principal para seleção das instâncias foi a filtragem geográfica, limitando a análise aos municípios de Goiás, garantindo foco regional. A integração dos dados do PIB com os dados geográficos usando o código do município (id_municipio) permitiu um cruzamento consistente, assegurando a qualidade e representatividade dos dados para a análise. Impacto: Redução de ruído e otimização para análises relevantes.

#2.3 Transformação de dados Transformações feitas: Preparamos os dados para serem cruzados com informações geográficas (left_join com dados do geobr). Tratamos colunas numéricas para garantir consistência.

#2.4 Mineração de dados

Análises conduzidas: Gráficos de dispersão (PIB x VA) e a análise de tendência com linha de regressão.

# Gráfico de dispersão entre PIB e VA com linha vermelha de regressão no dataframe goias_data
ggplot(goias_data, aes(x = va, y = pib)) +
  geom_point(aes(color = ano)) +                      # Pontos de dispersão coloridos por ano
  geom_smooth(method = "lm", color = "red", se = FALSE) +  # Linha de regressão vermelha
  theme_minimal() +
  labs(title = "Dispersão entre PIB e VA com Linha de Regressão", 
       x = "Valor Adicionado", y = "PIB") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))
## `geom_smooth()` using formula = 'y ~ x'

Interpretação do gráfico Correlação PIB x Valor Adicionado (VA): O gráfico evidencia uma forte relação linear entre o PIB e o Valor Adicionado (VA), o que é esperado, já que o VA é um componente do cálculo do PIB. Isso demonstra que, à medida que o Valor Adicionado aumenta (indústria, agropecuária, serviços), o PIB cresce proporcionalmente.

Linha de Regressão: A linha de regressão (vermelha) confirma a tendência de crescimento linear, com os pontos bem ajustados à linha. Isso sugere baixa variabilidade ou presença de outliers significativos.

Análise Temporal: A coloração dos pontos (escala azul) indica uma evolução temporal. Municípios com maior PIB tendem a estar nos anos mais recentes (tons mais claros). Isso sugere um aumento econômico geral na última década.

Justificativa para escolha dessa análise: Visualização é uma ferramenta de mineração usada para explorar os dados e identificar relações.

Análises conduzidas: Gráfico de crescimento do PIB ao longo dos ano

# Calcular a média do PIB por município
top_5_municipios_pib <- goias_data %>%
  group_by(name_muni) %>%
  summarise(pib_medio = mean(pib, na.rm = TRUE)) %>%
  arrange(desc(pib_medio)) %>%
  head(5)

# Filtrar os dados para os 5 municípios com maior PIB médio
top_5_municipios_data <- goias_data %>%
  filter(name_muni %in% top_5_municipios_pib$name_muni)
#Plotando um gráfico de linhas de tendência
top_5_municipios_data %>%
  group_by(name_muni, ano) %>%
  summarise(pib_total = sum(pib, na.rm = TRUE)) %>%
  ggplot(aes(x = ano, y = pib_total, color = name_muni)) +
  geom_line() +
  labs(title = "Crescimento do PIB dos Top 5 Municípios", x = "Ano", y = "PIB Total") +
  theme_minimal()
## `summarise()` has grouped output by 'name_muni'. You can override using the
## `.groups` argument.

Interpretação O gráfico mostra o crescimento do PIB total ao longo do tempo (2002-2021) para os cinco municípios com maior PIB no estado de Goiás. Aqui estão algumas formas de interpretar o gráfico:

  1. Comparação entre os municípios Goiânia apresenta o maior PIB total entre os municípios analisados, com um crescimento expressivo ao longo dos anos, principalmente após 2010. Anápolis, Aparecida de Goiânia, Rio Verde e Catalão seguem padrões de crescimento mais modestos, mas ainda significativos.
  2. Tendências temporais Goiânia tem um crescimento acelerado e contínuo, indicando seu papel como o principal centro econômico de Goiás. Rio Verde, com base na curva, mostra um crescimento constante, possivelmente impulsionado por atividades do setor agropecuário. Anápolis e Aparecida de Goiânia também apresentam crescimentos consideráveis, mas menos intensos do que Goiânia. Catalão mantém um crescimento mais linear e menos acentuado.
  3. Pontos de inflexão É possível observar períodos de aceleração e desaceleração em diferentes anos. Por exemplo: Goiânia teve um salto significativo após 2010. Outros municípios, como Rio Verde e Aparecida de Goiânia, parecem manter um crescimento mais consistente ao longo do tempo.
  4. Insights setoriais (se disponíveis) Os dados de PIB total podem ser segmentados por setores (agropecuária, indústria, serviços) para identificar os motores de crescimento econômico para cada município. Goiânia, por exemplo, pode ser impulsionada pelo setor de serviços, enquanto Rio Verde é mais associado ao setor agropecuário.
  5. Desigualdade regional A disparidade entre Goiânia e os demais municípios evidencia uma concentração econômica significativa. Políticas públicas poderiam ser sugeridas para fomentar o crescimento econômico em municípios menores e diversificar suas economias.

Análises conduzidas: Mineração de dados - técnica de segmentação (ou classificação) dos municípios com base no PIB percentual Categorização do PIB percentual em diferentes grupos (Baixo, Moderado, Alto, Muito Alto)

# Filtrar dados de 2021
goias_data_2021 <- goias_data %>%
  filter(ano == 2021) %>%
  mutate(pib_percentual = pib / sum(pib, na.rm = TRUE))

# Criar categorias com base no percentual do PIB
goias_data_2021 <- goias_data_2021 %>%
  mutate(
    categoria = case_when(
      pib_percentual <= 0.01 ~ "Baixo",
      pib_percentual <= 0.05 ~ "Moderado",
      pib_percentual <= 0.1 ~ "Alto",
      TRUE ~ "Muito Alto"
    )
  )

# Gerar o mapa com categorias
ggplot(data = goias_data_2021) +
  geom_sf(aes(fill = categoria), color = "white", size = 0.2) +
  scale_fill_manual(
    values = c(
      "Baixo" = "#a6cee3",       
      "Moderado" = "#cab2d6",    
      "Alto" = "#1f78b4",        
      "Muito Alto" = "#08306b"   
    ),
    name = "Categoria"
  ) +
  labs(
    title = "Contribuição Percentual do PIB por Município - Goiás (2021)",
    subtitle = "Categorias Ajustadas",
    caption = "Elaboração própria"
  ) +
  theme_minimal() +
  theme(
    legend.position = "right",
    legend.title = element_text(size = 12),
    legend.text = element_text(size = 10)
  )

Interpretação do Mapa Objetivo do Mapa: O mapa mostra a contribuição percentual do PIB por município no estado de Goiás em 2021, categorizando os municípios em quatro faixas: “Baixo”, “Moderado”, “Alto” e “Muito Alto”.

Categorias Representadas:

Baixo (Azul claro): Municípios com menor percentual de contribuição ao PIB total do estado. Moderado (Lilás): Municípios com contribuição intermediária. Alto (Azul médio): Municípios que contribuem significativamente, mas não de forma predominante. Muito Alto (Azul escuro): Municípios com as maiores contribuições percentuais. Destaques do Mapa:

Os municípios com Alto e Muito Alto destaque econômico (azul médio e azul escuro) estão centralizados em regiões com maiores polos industriais, agrícolas ou serviços. Catalão aparece como “Alto”, pois foi manualmente ajustado para essa categoria, refletindo sua relevância econômica. Desigualdades Regionais:

Observa-se uma concentração de municípios classificados como “Baixo”, indicando que muitas cidades têm baixa participação no PIB estadual. Os municípios com maior contribuição (azul escuro) indicam centros econômicos regionais, como Goiânia e Aparecida de Goiânia. Técnicas Aplicadas no Mapa Normalização:

O PIB de cada município foi dividido pelo PIB total do estado para calcular a proporção percentual de contribuição. Isso permite comparar municípios com populações e economias muito diferentes em uma mesma escala relativa.

Justificativa da escolha dessa análise: a segmentação dos municípios com base na contribuição percentual do PIB facilita a análise espacial e permite identificar áreas com diferentes níveis de desenvolvimento econômico. Isso pode fornecer insights sobre desigualdades regionais e ajudar na definição de políticas públicas.

#Informações das top 10 cidades para inclusão no entendimento do Mapa.
# Ordenar os municípios por contribuição percentual do PIB em ordem decrescente
maiores_contribuicoes <- goias_data_2021 %>%
  select(name_muni, pib_percentual) %>% # Selecionar apenas os campos relevantes
  arrange(desc(pib_percentual)) %>%    # Ordenar por maior PIB percentual
  slice_head(n = 20)                   # Alterar o número de cidades aqui (ex: 20)

# Exibir a tabela com as maiores contribuições
print(maiores_contribuicoes)
## Simple feature collection with 20 features and 2 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -53.2485 ymin: -18.77043 xmax: -46.83568 ymax: -14.53552
## Geodetic CRS:  SIRGAS 2000
## First 10 features:
##               name_muni pib_percentual                           geom
## 1               Goiânia     0.22203190 MULTIPOLYGON (((-49.17655 -...
## 2              Anápolis     0.06597348 MULTIPOLYGON (((-49.12301 -...
## 3  Aparecida De Goiânia     0.06297562 MULTIPOLYGON (((-49.25908 -...
## 4             Rio Verde     0.06047695 MULTIPOLYGON (((-50.9453 -1...
## 5               Catalão     0.03677835 MULTIPOLYGON (((-47.53267 -...
## 6                 Jataí     0.02965842 MULTIPOLYGON (((-51.74423 -...
## 7              Luziânia     0.02015884 MULTIPOLYGON (((-47.96147 -...
## 8             Itumbiara     0.01974696 MULTIPOLYGON (((-49.09939 -...
## 9        Senador Canedo     0.01767283 MULTIPOLYGON (((-49.07802 -...
## 10           Cristalina     0.01706915 MULTIPOLYGON (((-47.51101 -...

Análises conduzidas:

Gráfico de Análise setorial dos 5 Municípios com maior PIB médio (O gráfico criado é uma etapa de exploração e visualização de dados, essencial para análise preliminar. Ele ajuda a entender a distribuição dos setores econômicos por município)

# Ordenando os municípios pela soma do PIB de forma crescente
top_5_municipios_data %>%
  gather(key = "setor", value = "valor", va_agropecuaria:va_servicos) %>%
  mutate(name_muni = factor(name_muni, levels = top_5_municipios_data %>%
                             group_by(name_muni) %>%
                             summarise(pib_total = sum(pib, na.rm = TRUE)) %>%
                             arrange(pib_total) %>%
                             pull(name_muni))) %>%
  ggplot(aes(x = name_muni, y = valor, fill = setor)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(
    title = "Comparação dos Setores Econômicos nos 5 Municípios com Maior PIB Médio",
    x = "Município",
    y = "Valor Adicionado",
    fill = "Município"  # Alterando o nome da legenda para "Município"
  ) +
  theme_minimal()

Análise de Clusters do PIB dos Municípios de Goiás Utilizando K-means

Dados Utilizados: Valores do PIB dos 5 municípios com maior evolução do PIB em Goiás. Padronização: Os dados foram escalados para remover efeitos de magnitude. Número de Clusters (K): Escolhemos K = 3 para agrupar os municípios em três níveis distintos de evolução do PIB.

O K-means é um algoritmo de aprendizado não supervisionado utilizado para agrupar dados com base em suas características, minimizando a distância entre pontos e seus centroides. No projeto, ele foi aplicado para identificar padrões na evolução do PIB dos cinco municípios de Goiás com maior crescimento, utilizando três clusters. Goiânia se destacou com PIB significativamente superior, formando um cluster isolado, enquanto os demais municípios foram agrupados em níveis intermediários e baixos, evidenciando uma concentração de riqueza. A análise pode orientar políticas públicas para reduzir disparidades, embora o K-means tenha limitações, como a necessidade de definir o número de clusters e a sensibilidade a outliers. Essa abordagem demonstrou ser eficaz para apoiar decisões econômicas estratégicas.

# Verificar a estrutura do dataset top_5_municipios_data
str(top_5_municipios_data)
## Classes 'sf' and 'data.frame':   100 obs. of  16 variables:
##  $ code_muni        : num  5201108 5201108 5201108 5201108 5201108 ...
##  $ name_muni        : chr  "Anápolis" "Anápolis" "Anápolis" "Anápolis" ...
##  $ code_state       : num  52 52 52 52 52 52 52 52 52 52 ...
##  $ abbrev_state     : chr  "GO" "GO" "GO" "GO" ...
##  $ name_state       : chr  "Goiás" "Goiás" "Goiás" "Goiás" ...
##  $ code_region      : num  5 5 5 5 5 5 5 5 5 5 ...
##  $ name_region      : chr  "Centro Oeste" "Centro Oeste" "Centro Oeste" "Centro Oeste" ...
##  $ ano              : num  2002 2003 2004 2005 2006 ...
##  $ pib              : num  2.21e+09 2.69e+09 2.79e+09 3.07e+09 4.17e+09 ...
##  $ impostos_liquidos: num  3.88e+08 4.48e+08 3.70e+08 4.13e+08 6.15e+08 ...
##  $ va               : num  1.82e+09 2.24e+09 2.42e+09 2.65e+09 3.55e+09 ...
##  $ va_agropecuaria  : num  15144000 17303000 17233000 14563000 13741000 ...
##  $ va_industria     : num  6.10e+08 8.00e+08 8.42e+08 9.30e+08 1.24e+09 ...
##  $ va_servicos      : num  9.16e+08 1.09e+09 1.17e+09 1.29e+09 1.81e+09 ...
##  $ va_adespss       : num  2.83e+08 3.28e+08 3.89e+08 4.21e+08 4.80e+08 ...
##  $ geom             :sfc_MULTIPOLYGON of length 100; first list element: List of 1
##   ..$ :List of 1
##   .. ..$ : num [1:208, 1:2] -49.1 -49.1 -49.1 -49.1 -49.1 ...
##   ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
##  - attr(*, "sf_column")= chr "geom"
##  - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
##   ..- attr(*, "names")= chr [1:15] "code_muni" "name_muni" "code_state" "abbrev_state" ...
# Calcular a diferença do PIB entre o primeiro e o último ano para cada município
pib_diff <- top_5_municipios_data %>%
  as_tibble() %>%  # Garantir que estamos trabalhando com um tibble (data.frame)
  group_by(name_muni) %>%  # Agrupar por município
  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(name_muni)

# Filtrar os dados para esses 5 municípios
top5_data <- top_5_municipios_data %>%
  filter(name_muni %in% top5_municipios) %>%
  select(name_muni, 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 = name_muni, 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))

Interpretação do Gráfico

Pontos: Cada ponto representa o PIB de um município em um ano específico.

O gráfico gerado exibe a distribuição dos PIBs dos cinco municípios de Goiás com maior evolução do PIB ao longo do tempo. Os municípios são: Anápolis, Aparecida de Goiânia,Catalão, Goiânia, Rio Verde

Clusters Identificados

Cluster 1 (vermelho): Inclui a maioria dos municípios com PIBs menores e relativamente próximos em termos de evolução.

Cluster 2 (verde): Agrupa valores de PIB significativamente altos. Goiânia é o único município que apresenta esses valores, indicando uma disparidade grande em relação aos demais municípios.

Cluster 3 (azul): Possui PIBs intermediários, representando uma evolução maior do que a média, mas sem atingir os níveis do cluster 2.

Interpretação:

Goiânia se destaca como uma exceção com valores de PIB muito superiores, sugerindo que ela tem um papel econômico de liderança no estado. Isso justifica seu agrupamento no cluster 2. Os demais municípios, apesar de terem evoluções consideráveis, ainda estão agrupados majoritariamente nos clusters 1 e 3, o que mostra que suas evoluções não se aproximam tanto do nível de Goiânia. Essa análise pode ser útil para identificar possíveis estratégias de desenvolvimento focadas em diminuir essa disparidade entre Goiânia e os outros municípios.

Gráfico de Pizza para ver o percentual de contribuição dos setores em comparaçao com todo o Estado de Goiás.

# Calcular a média do percentual de contribuição setorial em Goiás
setores_goias <- dados_limpos %>%
  mutate(
    perc_agropecuaria = va_agropecuaria / pib * 100,
    perc_industria = va_industria / pib * 100,
    perc_servicos = va_servicos / pib * 100,
    perc_impostos_liquidos = impostos_liquidos / pib * 100,
    perc_administracao_publica = va_adespss / pib * 100
  ) %>%
  summarise(
    perc_agropecuaria = mean(perc_agropecuaria, na.rm = TRUE),
    perc_industria = mean(perc_industria, na.rm = TRUE),
    perc_servicos = mean(perc_servicos, na.rm = TRUE),
    perc_impostos_liquidos = mean(perc_impostos_liquidos, na.rm = TRUE),
    perc_administracao_publica = mean(perc_administracao_publica, na.rm = TRUE)
  ) %>%
  pivot_longer(cols = starts_with("perc_"), names_to = "setor", values_to = "percentual") %>%
  mutate(
    setor = factor(setor,
                  levels = c("perc_agropecuaria", "perc_industria", "perc_servicos", "perc_impostos_liquidos", "perc_administracao_publica"),
                  labels = c("Agropecuária", "Indústria", "Serviços", "Impostos Líquidos", "Administração Pública"))
  )

# Criar o gráfico de pizza com valores percentuais na legenda
ggplot(setores_goias, aes(x = "", y = percentual, fill = setor)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  scale_fill_viridis_d() +
  labs(
    title = "Contribuição Percentual dos Setores ao PIB Médio de Goiás",
    x = NULL, y = NULL,
    fill = "Setor"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
  geom_text(
    aes(label = paste0(round(percentual, 1), "%")),  # Apenas a porcentagem
    position = position_stack(vjust = 0.5),
    color = "black",
    size = 3.5
  )

Interpretação do Gráfico: O gráfico de pizza apresenta a contribuição percentual de cada setor econômico para o PIB médio de Goiás. As categorias destacadas são:

Administração Pública: Contribui com 31.3% do PIB médio de Goiás, sendo o setor com a maior participação. Serviços: Contribui com 29.2%, quase tanto quanto a administração pública, mostrando a importância do setor de serviços para a economia. Agropecuária: Com 20.6%, a agropecuária é o terceiro setor em importância, destacando o papel significativo da agricultura no estado. Indústria: Contribui com 12.4%, mostrando um papel menor comparado aos outros setores, mas ainda assim vital. Impostos Líquidos: Com 6.6%, este é o setor com a menor contribuição ao PIB médio.

Considerações: Este gráfico permite visualizar rapidamente quais setores têm maior peso no PIB de Goiás e entender a estrutura econômica do estado. A predominância dos serviços e da indústria destaca a diversificação econômica, enquanto a agropecuária mantém uma contribuição sólida, refletindo a importância do setor agrícola para o estado. A análise dos impostos líquidos e da administração pública mostra como a economia é influenciada por políticas e receitas governamentais.

Essas informações são cruciais para decisões de planejamento econômico, investimento e políticas públicas, pois evidenciam os setores mais relevantes que devem receber atenção para impulsionar o desenvolvimento e a sustentabilidade da economia local.

Justificativa da escolha dessa análise: A escolha dessas colunas foi feita para focar na análise das contribuições dos setores relevantes para o PIB médio, permitindo a visualização de sua importância relativa. Essa escolha ajuda a destacar os setores mais significativos e a identificar onde há uma maior concentração de contribuição econômica. O código inclui a transformação dos dados de forma a calcular as médias percentuais de cada setor. Em seguida, é feita uma conversão e reorganização com pivot_longer() para criar um formato adequado para a visualização em um gráfico de pizza. O gráfico e o código fornecido são parte de uma análise exploratória dos dados que prepara o caminho para um entendimento mais profundo e a aplicação de métodos de mineração de dados mais avançados que realizamos.

##Conclusão:

Para reduzir a disparidade no setor de serviços entre Goiânia e os demais municípios de Goiás, é essencial descentralizar a economia por meio de incentivos fiscais, capacitação profissional e estímulo ao empreendedorismo. Investimentos em infraestrutura, conectividade digital e melhoria do ambiente de negócios são fundamentais para atrair empresas de serviços e fomentar o desenvolvimento regional. Além disso, a criação de centros regionais de serviços públicos e a promoção do turismo podem diversificar a economia local. Parcerias público-privadas e desburocratização também são estratégias-chave para gerar empregos, atrair investimentos e promover um crescimento econômico mais equilibrado e sustentável em todo o estado.