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)}
test <-
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))
growth_table <-
tibble(
"期間" = c("1983-1990", "full sample"),
"オフィス床面積log" = test,
"実質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))
)
growth_table %>%
gt() %>%
fmt_number(
columns = everything(),
decimals = 2
)
| 期間 |
オフィス床面積log |
実質GDP(日本)estat |
実質GDP(日本)log |
実質GDP(東京)log |
人口(日本)log |
人口(東京)log |
生産年齢人口(日本)log |
生産年齢人口(東京)log |
| 1983-1990 |
1.10 |
1.03 |
1.04 |
0.96 |
0.89 |
NaN |
0.89 |
0.79 |
| full sample |
0.96 |
0.96 |
0.97 |
0.99 |
NaN |
1.03 |
NaN |
0.99 |