library("tidyverse")
library("readr")
library("dplyr")
library("ggrepel")
library("gt")
library("gtsummary")

データの読み込み

df_office <- read.csv(here::here("data\\cleaned\\20250922_office_forecast.csv"))
df_GDP <- read.csv(here::here("data\\cleaned\\20250920_GDP_forecast.csv"))
df_growth_forecast <- read.csv(here::here("data\\cleaned\\202511005_growth_forecast.csv"))
df_pop <- read.csv(here::here("data\\cleaned\\20251007_pop.csv"))
df_actualGDP_jpn_tokyo <- read.csv(here::here("data\\cleaned\\20250925_actualGDP_jpn_tokyo.csv"))
df_nominalGDP_jpn_tokyo <- read.csv(here::here("data\\cleaned\\20250925_nominalGDP_jpn_tokyo.csv"))

データの加工

df_office <- df_office |>
  mutate(
    office = parse_number(as.character(office)),
    forecast = parse_number(as.character(forecast)),
    after_forecast = parse_number(as.character(after_forecast))
  ) |>
  mutate(
    log_office = log(office),
    log_forecast = log(forecast),
    log_after_forecast = log(after_forecast)) |>
  mutate(
    growth_log_office = (log_office - lag(log_office)),
    growth_log_forecast = (log_forecast - lag(log_forecast)),
    growth_log_after_forecast = (log_after_forecast - lag(log_after_forecast))) |>
  mutate(
    growth_log_combined = coalesce(growth_log_forecast, growth_log_after_forecast)
    )

df_GDP <- df_GDP |>
  mutate(
    GDP = parse_number(as.character(GDP))
    ) |>
  mutate(
    log_GDP = log(GDP),
    log_forecast = log(forecast),
    log_after_forecast = log(after_forecast)
    ) |>
  mutate(
    growth_log_GDP = log_GDP - lag(log_GDP),
    growth_log_forecast = log_forecast -lag(log_forecast),
    growth_log_after_forecast = log_after_forecast - lag(log_after_forecast)
    )


df_growth_forecast <- df_growth_forecast |>
  mutate(
    forecast = if_else(year <= 1989, 4, NA_real_)
  ) |>
  mutate(
    after_forecast = if_else(year >= 1989, 4, NA_real_)
  )

df_pop <- df_pop |>
  mutate(
    pop_jpn = parse_number(as.character(pop_jpn)),
    wapop_jpn = parse_number(as.character(wapop_jpn)),
    pop_tokyo = parse_number(as.character(pop_tokyo)),
    wapop_tokyo = parse_number(as.character(wapop_tokyo))
    ) |>
  mutate(
    pop_jpn = pop_jpn*1000,
    wapop_jpn = wapop_jpn*1000
    ) |>
  mutate(
    log_pop_jpn = log(pop_jpn),
    log_wapop_jpn = log(wapop_jpn),
    log_pop_tokyo = log(pop_tokyo),
    log_wapop_tokyo = log(wapop_tokyo)
    ) |>
  mutate(
    growth_log_pop_jpn = log_pop_jpn - lag(log_pop_jpn),
    growth_log_wapop_jpn = log_wapop_jpn - lag(log_wapop_jpn),
    growth_log_pop_tokyo = log_pop_tokyo - lag(log_pop_tokyo),
    growth_log_wapop_tokyo = log_wapop_tokyo - lag(log_wapop_tokyo)
    )

df_actualGDP_jpn_tokyo <- df_actualGDP_jpn_tokyo |>
  mutate(jpn = parse_number(as.character(jpn))) |>
  mutate(tokyo = parse_number(as.character(tokyo))) |>
  mutate(tokyo = tokyo/1000) |>
  mutate(log_jpn = log(jpn), log_tokyo = log(tokyo)) |>
  mutate(growth_log_jpn = log_jpn - lag(log_jpn), growth_log_tokyo = log_tokyo -lag(log_tokyo)) |>
  group_by(period = if_else(year <= 1992, "1980-1992", "1993-2022"))


df_nominalGDP_jpn_tokyo <- df_nominalGDP_jpn_tokyo |>
  mutate(jpn = parse_number(as.character(jpn))) |>
  mutate(tokyo = parse_number(as.character(tokyo))) |>
  mutate(tokyo = tokyo/1000) |>
  mutate(log_jpn = log(jpn), log_tokyo = log(tokyo)) |>
  mutate(growth_log_jpn = log_jpn - lag(log_jpn), growth_log_tokyo = log_tokyo -lag(log_tokyo)) |>
  group_by(period = if_else(year <= 1992, "1980-1992", "1993-2022"))

グラフ

df_growth_forecast |>
  ggplot() +
  geom_line(aes(x = year, y = actualGDP_growth_rate, color = "実質GDP成長率")) +
  geom_line(aes(x = year, y = gov, color = "政府見通し")) +
  geom_line(aes(x = year, y = min, color = "民間見通し")) +
  geom_line(aes(x = year, y = forecast, color = "4%forecast")) +
  geom_line(aes(x = year, y = after_forecast, color = "4%の予測"), linetype = "dashed") +
  scale_x_continuous(breaks = seq(1980, 2023, 5)) +
  scale_y_continuous(breaks = seq(-10, 10, 1)) +
  labs(x = "年", y = "実質GDP成長率", title = "実質GDP成長率と予測") +
  scale_color_manual(values = c("red", "red", "black", "blue", "green")) +
  theme_classic() +
  theme(plot.title = element_text(hjust = 0.5), legend.title = element_blank())

df_office |>
  ggplot() +
  geom_line(aes(x = year, y = growth_log_office, color = "オフィス床面積")) +
  geom_line(aes(x = year, y = growth_log_forecast, color = "予測")) +
  geom_line(aes(x = year, y = growth_log_after_forecast, color = "予測"), linetype = "dashed") +
  scale_x_continuous(breaks = seq(1980, 2023, 5)) +
  scale_y_continuous(breaks = seq(0, 0.1, 0.01)) +
  labs(x = "年", y = "オフィス床面積成長率", title = "オフィス床面積成長率と予測") +
  scale_color_manual(values = c("black", "red", "red")) +
  theme_classic() +
  theme(plot.title = element_text(hjust = 0.5), legend.title = element_blank())

df_office |>
  ggplot() +
  geom_line(aes(x = year, y = log_office, color = "オフィス床面積")) +
  geom_line(aes(x = year, y = log_forecast, color = "予測")) +
  geom_line(data = df_office |> filter(year <= 2005), aes(x = year, y = log_after_forecast, color = "予測"), linetype = "dashed") +
  geom_point(aes(x = 2000, y = 11.37366, color = "予測終わり"), size = 3) +
  scale_x_continuous(breaks = seq(1980, 2023, 5)) +
  scale_y_continuous(breaks = seq(0, 12, 0.2)) +
  labs(x = "年", y = "オフィス床面積(対数化)", title = "オフィス床面積と予測") +
  scale_color_manual(values = c("black", "red", "red")) +
  theme_classic() +
  theme(plot.title = element_text(hjust = 0.5), legend.title = element_blank())

df_pop |>
  ggplot() +
  geom_line(aes(x = year, y = growth_log_pop_jpn, color ="jpn")) +
  geom_line(aes(x = year, y = growth_log_pop_tokyo, color = "tokyo")) +
  geom_line(aes(x = year, y = 0)) +
  scale_x_continuous(breaks = seq(1980, 2022, 5)) +
  scale_y_continuous(limits = c(-0.015, 0.015, 0.01)) +
  labs(x = "年", y = "実質GDP成長率", title = "日本と東京都の人口成長率") +
  theme_minimal() +
  theme(legend.title = element_blank())

df_pop |>
  ggplot() +
  geom_line(aes(x = year, y = growth_log_wapop_jpn, color ="jpn")) +
  geom_line(aes(x = year, y = growth_log_wapop_tokyo, color = "tokyo")) +
  geom_line(aes(x = year, y = 0)) +
  ylim(-0.15, 0.15) +
  scale_x_continuous(breaks = seq(1980, 2022, 5)) +
  scale_y_continuous(breaks = seq(-0.15, 0.15, 0.01)) +
  labs(x = "年", y = "実質GDP成長率", title = "日本と東京都生産年齢人口成長率") +
  theme_minimal() +
  theme(legend.title = element_blank())

成長率まとめ

CAGR <- function(start, end, year){(end/start)^(1/year)}

growth_table <-
  tibble(
    "期間" = c("1983-1990", "full sample"),
    "オフィス床面積log" = c(CAGR(df_office$growth_log_office[df_office$year == 1984], df_office$growth_log_office[df_office$year == 1990], 1990-1984), CAGR(df_office$growth_log_office[df_office$year == 1984], df_office$growth_log_office[df_office$year == 2023], 2023-1984)),
    "実質GDP(日本)estat" = c(CAGR(df_growth_forecast$actualGDP_growth_rate[df_growth_forecast$year == 1983], df_growth_forecast$actualGDP_growth_rate[df_growth_forecast$year == 1990], 1990 - 1983), CAGR(df_growth_forecast$actualGDP_growth_rate[df_growth_forecast$year == 1983], df_growth_forecast$actualGDP_growth_rate[df_growth_forecast$year == 2023], 2023 - 1983)),
   "実質GDP(日本)log" = c(CAGR(df_actualGDP_jpn_tokyo$growth_log_jpn[df_actualGDP_jpn_tokyo$year == 1983], df_actualGDP_jpn_tokyo$growth_log_jpn[df_actualGDP_jpn_tokyo$year == 1990], 1990 - 1983), CAGR(df_actualGDP_jpn_tokyo$growth_log_jpn[df_actualGDP_jpn_tokyo$year == 1983], df_actualGDP_jpn_tokyo$growth_log_jpn[df_actualGDP_jpn_tokyo$year == 2022], 2022 - 1983)),
   "実質GDP(東京)log" = c(CAGR(df_actualGDP_jpn_tokyo$growth_log_tokyo[df_actualGDP_jpn_tokyo$year == 1983], df_actualGDP_jpn_tokyo$growth_log_tokyo[df_actualGDP_jpn_tokyo$year == 1990], 1990 - 1983), CAGR(df_actualGDP_jpn_tokyo$growth_log_tokyo[df_actualGDP_jpn_tokyo$year == 1981], df_actualGDP_jpn_tokyo$growth_log_tokyo[df_actualGDP_jpn_tokyo$year == 2022], 2022 - 1983)),
   "人口(日本)log" = c(CAGR(df_pop$growth_log_pop_jpn[df_pop$year == 1983], df_pop$growth_log_pop_jpn[df_pop$year == 1990], 1990 - 1983), CAGR(df_pop$growth_log_pop_jpn[df_pop$year == 1983], df_pop$growth_log_pop_jpn[df_pop$year == 2020], 2020 - 1983)),
   "人口(東京)log" = c(CAGR(df_pop$growth_log_pop_tokyo[df_pop$year == 1983], df_pop$growth_log_pop_tokyo[df_pop$year == 1990], 1990 - 1983), CAGR(df_pop$growth_log_pop_tokyo[df_pop$year == 1983], df_pop$growth_log_pop_tokyo[df_pop$year == 2020], 2020 - 1983)),
   "生産年齢人口(日本)log" = c(CAGR(df_pop$growth_log_wapop_jpn[df_pop$year == 1983], df_pop$growth_log_wapop_jpn[df_pop$year == 1990], 1990 - 1983), CAGR(df_pop$growth_log_wapop_jpn[df_pop$year == 1983], df_pop$growth_log_wapop_jpn[df_pop$year == 2020], 2020 - 1983)),
   "生産年齢人口(東京)log" = c(CAGR(df_pop$growth_log_wapop_tokyo[df_pop$year == 1983], df_pop$growth_log_wapop_tokyo[df_pop$year == 1990], 1990 - 1983), CAGR(df_pop$growth_log_wapop_tokyo[df_pop$year == 1983], df_pop$growth_log_wapop_tokyo[df_pop$year == 2020], 2020 - 1983))
  )
show(growth_table)
## # A tibble: 2 × 9
##   期間        オフィス床面積log `実質GDP(日本)estat` `実質GDP(日本)log`
##   <chr>                   <dbl>                <dbl>              <dbl>
## 1 1983-1990               1.10                 1.03               1.04 
## 2 full sample             0.961                0.957              0.966
## # ℹ 5 more variables: `実質GDP(東京)log` <dbl>, `人口(日本)log` <dbl>,
## #   `人口(東京)log` <dbl>, `生産年齢人口(日本)log` <dbl>,
## #   `生産年齢人口(東京)log` <dbl>