1. Introdução

O Japão enfrenta nos últimos anos uma crise demográfica conhecida como Shoushikoreika (envelhecimento da população e baixa natalidade). Simultaneamente, o fenômeno de Akiya (casas abandonadas) vem se tornando um problema notório em diversas províncias, afetando a economia e o planejamento urbano local.

O foco principal desse projeto é analisar a correlação entre o envelhecimento populacional e a taxa de vacância imobiliária nas 47 províncias japonesas. A hipótese é que as províncias com maior proporção de idosos tendem a ter uma taxa maior de imóveis abandonados.

2. Pacotes Requeridos

Para realizar esta análise, utilizarei os seguintes pacotes do R:

library(tidyverse)
library(knitr)

O pacote tidyverse vai conter as principais ferramentas de análise de dados necessárias para a limpeza e análise dos CSVs, usaremos especificamente: readr, dplyr e ggplot2, enquanto o pacote knitr é utilizado para a formatação do próprio R markdown.

3. Preparação e Limpeza dos Dados

Os dados demográficos foram obtidos do Portal de Estatísticas Oficiais no Japão e-stat, especificamente o censo populacional de 2020 em conjunto com o levantamento de habitação e terras, o conjunto de dados original contêm a população total e a segmentação por faixa etária de cada província.

3.1 Dataset População

O arquivo original (populacao.csv) possui metadados nas primeiras 14 linhas e utiliza códigos de área mistos. Para preparar esses dados para a análise, realizaremos as seguintes etapas:

  1. Importação: Utilizaremos o parâmetro skip para ignorar o cabeçalho.
  2. Limpeza: Selecionaremos apenas as colunas relevantes (Código, Província, Total e Idosos) e removemos as virgulas dos números para convertê-los em formato numérico.
  3. Filtragem Hierárquica: O dataset original possui linhas duplicadas, pois é dividido utilizando categorias (estrangeiro, japônes, feminino e masculino). Aplicamos filtros para manter apenas:
    • Sex Code = "0": Para considerar ambos os sexos (Total).
    • Nationality Code = "0": Para incluir japoneses e estrangeiros (Total).
    • Area Code: Apenas províncias (excluindo o total nacional).
  4. Criação de Variável: Criaremos a variável aging_rate, dividindo a população de 65+ pela população total.
pop_data <- read_csv("populacao.csv", skip = 14, show_col_types = FALSE)

pop_clean <- pop_data %>%
  select(
    area_code = `Japan, Prefectures (DIDs) Code`,
    province = `Japan, Prefectures (DIDs)`,
    sex_code = `Sex Code`,
    nation_code = `All nationality or Japanese Code`,
    pop_total = `Total`,
    pop_65_more = `(Recount) 65 years old and over`
  ) %>%
  
  filter(sex_code == "0", nation_code == "0", area_code != "00000" & str_detect(area_code, "000$")) %>%
  mutate(
    pop_total = as.numeric(str_remove_all(pop_total, ",")),
    pop_65_more = as.numeric(str_remove_all(pop_65_more, ",")),
    
    aging_rate = (pop_65_more / pop_total) * 100
  ) %>%
  
  select(area_code, province, pop_total, pop_65_more, aging_rate)

head(pop_clean) %>%
  kable(caption = "Tabela 1: Primeiras linhas dos dados de População processados")
Tabela 1: Primeiras linhas dos dados de População processados
area_code province pop_total pop_65_more aging_rate
01000 Hokkaido 3973007 1183622 29.79159
02000 Aomori-ken 587023 173143 29.49510
03000 Iwate-ken 400246 106015 26.48746
04000 Miyagi-ken 1508978 359829 23.84587
05000 Akita-ken 340699 106745 31.33118
06000 Yamagata-ken 492405 140776 28.58947

3.2 Dataset Habitação

Para complementar a análise demográfica vamos utilizar os dados da Housing and Land Survey disponíveis no e-Stat. O objetivo dessa etapa é quantificar o fenômeno das Akiya em cada região.

O arquivo original (habitacao.csv) contém o número total de domicílios e o número de residências classificadas como “vacant” (vagas). O processo de preparação dos dados vai seguir os seguintes passos para garantir a consistência com o conjunto de dados populacional:

  1. Importação: Ignoramos as 13 primeiras linhas do arquivo usando o parâmetro skip
  2. Limpeza e Filtragem: Selecionamos as colunas de interesse e filtramos apenas as províncias, removendo os dados agregados nacionais para evitar duplicações.
  3. Criação de Variável: Como as variáveis já estão em números absolutos, criamos a variável akiya_rate dividindo o número de casas vagas pelo número total de casas.
housing_data <- read_csv("habitacao.csv", skip = 13, show_col_types = FALSE)

housing_clean <- housing_data %>%
  select(
    area_code = `Japan, Prefectures, 21 Major Cities Code`,
    province = `Japan, Prefectures, 21 Major Cities`,  # Adicionamos esta coluna
    total_housing = `Total`,
    vacant = `Vacant`
  ) %>%
  filter(area_code != "00000" & str_detect(area_code, "000$")) %>%
  mutate(
    total_housing = as.numeric(str_remove_all(total_housing, ",")),
    vacant = as.numeric(str_remove_all(vacant, ",")),
    akiya_rate = (vacant / total_housing) * 100
  )

nrow(housing_data)
## [1] 69
head(housing_clean) %>%
  kable(caption = "Tabela 2: Primeiras linhas dos dados de Habitação processados")
Tabela 2: Primeiras linhas dos dados de Habitação processados
area_code province total_housing vacant akiya_rate
01000 Hokkaido 2888500 451900 15.64480
02000 Aomori-ken 590300 98800 16.73725
03000 Iwate-ken 579400 100400 17.32827
04000 Miyagi-ken 1129200 140300 12.42473
05000 Akita-ken 440600 69500 15.77394
06000 Yamagata-ken 455400 61700 13.54853

4. Mesclagem dos Dados (Merge)

Para analisar a correlação demografia-habitação é necessário unificar ambos conjuntos processados anteriormente em um único dataframe

Como ambos conjuntos utilizam o código de área padronizado pelo governo japonês, utilizaremos a variável code_area como primary key para a junção (left join). Isso garante que os indicadores de envelhecimento de uma província sejam associados corretamente aos seus respectivos dados de vacância imobiliária.

df_final <- left_join(pop_clean, housing_clean, by = "area_code")

df_final <- df_final %>%
  select(
    area_code,
    province = province.x,
    pop_total,
    pop_65_more,
    aging_rate,
    total_housing,
    vacant,
    akiya_rate
  )

print(paste("Número de linhas no dataset final:", nrow(df_final)))
## [1] "Número de linhas no dataset final: 47"
head(df_final) %>%
  kable(caption = "Tabela 3: Dataset final unificado contendo dados demográficos e habitacionais")
Tabela 3: Dataset final unificado contendo dados demográficos e habitacionais
area_code province pop_total pop_65_more aging_rate total_housing vacant akiya_rate
01000 Hokkaido 3973007 1183622 29.79159 2888500 451900 15.64480
02000 Aomori-ken 587023 173143 29.49510 590300 98800 16.73725
03000 Iwate-ken 400246 106015 26.48746 579400 100400 17.32827
04000 Miyagi-ken 1508978 359829 23.84587 1129200 140300 12.42473
05000 Akita-ken 340699 106745 31.33118 440600 69500 15.77394
06000 Yamagata-ken 492405 140776 28.58947 455400 61700 13.54853