library(dplyr)
library(readr)
library(purrr)
library(ggplot2)
library(rlang)
library(patchwork)
df_original <- read.csv(here::here("data\\cleaned\\20251126_gdp_office_land_pop.csv"))
df_shigai <- read.csv(here::here("data\\cleaned\\20251127_shigai_6cities.csv"))
df_growth_forecast <- read.csv(here::here("data\\cleaned\\202511005_growth_forecast.csv"))
df_office <- read.csv(here::here("data\\cleaned\\20250922_office_forecast.csv"))
df_all <- df_original |>
mutate(
gdp_jpn = parse_number(as.character(gdp_jpn)),
gdp_jpn_pop = parse_number(as.character(gdp_jpn_pop)),
gdp_jpn_wapop = parse_number(as.character(gdp_jpn_wapop)),
gdp_tokyo = parse_number(as.character(gdp_tokyo)),
gdp_tokyo_pop = parse_number(as.character(gdp_tokyo_pop)),
gdp_tokyo_wapop = parse_number(as.character(gdp_tokyo_wapop)),
office_tokubu = parse_number(as.character(office_tokubu)),
land_tokyo = parse_number(as.character(land_tokyo)),
land_tokubu = parse_number(as.character(land_tokubu))
)
df_all_log <- df_all |>
mutate(
log_gdp_jpn = log(gdp_jpn),
log_gdp_jpn_pop = log(gdp_jpn_pop),
log_gdp_jpn_wapop = log(gdp_jpn_wapop),
log_gdp_tokyo = log(gdp_tokyo),
log_gdp_tokyo_pop = log(gdp_tokyo_pop),
log_gdp_tokyo_wapop = log(gdp_tokyo_wapop),
log_office_tokubu = log(office_tokubu),
log_land_tokyo = log(land_tokyo),
log_land_tokubu = log(land_tokubu),
)
df_all_log_dummy <- df_all_log |>
mutate(
I_1975 = ifelse(year == 1975, 1, 0),
I_1976 = ifelse(year == 1976, 1, 0),
I_1977 = ifelse(year == 1977, 1, 0),
I_1978 = ifelse(year == 1978, 1, 0),
I_1979 = ifelse(year == 1979, 1, 0),
I_1980 = ifelse(year == 1980, 1, 0),
I_1981 = ifelse(year == 1981, 1, 0),
I_1982 = ifelse(year == 1982, 1, 0),
I_1983 = ifelse(year == 1983, 1, 0),
I_1984 = ifelse(year == 1984, 1, 0),
I_1985 = ifelse(year == 1985, 1, 0),
I_1986 = ifelse(year == 1986, 1, 0),
I_1987 = ifelse(year == 1987, 1, 0),
I_1988 = ifelse(year == 1988, 1, 0),
I_1989 = ifelse(year == 1989, 1, 0),
I_1990 = ifelse(year == 1990, 1, 0),
I_1991 = ifelse(year == 1991, 1, 0),
I_1992 = ifelse(year == 1992, 1, 0),
I_1993 = ifelse(year == 1993, 1, 0),
I_1994 = ifelse(year == 1994, 1, 0),
I_1995 = ifelse(year == 1995, 1, 0),
I_1996 = ifelse(year == 1996, 1, 0),
I_1997 = ifelse(year == 1997, 1, 0),
I_1998 = ifelse(year == 1998, 1, 0),
I_1999 = ifelse(year == 1999, 1, 0),
I_2000 = ifelse(year == 2000, 1, 0),
I_2001 = ifelse(year == 2001, 1, 0),
I_2002 = ifelse(year == 2002, 1, 0),
I_2003 = ifelse(year == 2003, 1, 0),
I_2004 = ifelse(year == 2004, 1, 0),
I_2005 = ifelse(year == 2005, 1, 0),
I_2006 = ifelse(year == 2006, 1, 0),
I_2007 = ifelse(year == 2007, 1, 0),
I_2008 = ifelse(year == 2008, 1, 0),
I_2009 = ifelse(year == 2009, 1, 0),
I_2010 = ifelse(year == 2010, 1, 0)
)
model_make <- function(df, explained_var, start_year, end_year){
years_dummy <- start_year:end_year
dummy_vars <- paste0("I_", years_dummy)
model <- reformulate(c("year", dummy_vars), response = explained_var)
lm(model, data = df)
}
explained_vars = c(
"log_gdp_jpn",
"log_gdp_jpn_pop",
"log_gdp_jpn_wapop",
"log_gdp_tokyo",
"log_gdp_tokyo_pop",
"log_gdp_tokyo_wapop",
"log_office_tokubu",
"log_land_tokyo",
"log_land_tokubu"
)
lm_names = c(
"lm_gdp_jpn_",
"lm_gdp_jpn_pop_",
"lm_gdp_jpn_wapop_",
"lm_gdp_tokyo_",
"lm_gdp_tokyo_pop_",
"lm_gdp_tokyo_wapop_",
"lm_office_tokubu_",
"lm_land_tokyo_",
"lm_land_tokubu_"
)
name_make_lm <- function(lm_names, start_year, end_year){
paste0(lm_names, start_year, end_year)
}
# データフレームに予測値を追加
## 変数名の前半を作成
trend_names = c(
"trend_gdp_jpn_",
"trend_gdp_jpn_pop_",
"trend_gdp_jpn_wapop_",
"trend_gdp_tokyo_",
"trend_gdp_tokyo_pop_",
"trend_gdp_tokyo_wapop_",
"trend_office_tokubu_",
"trend_land_tokyo_",
"trend_land_tokubu_"
)
## 変数名の全体を作成する変数を作成
name_make_trend <- function(trend_names, start_year, end_year){
paste0(trend_names, start_year, end_year)
}
# モデルを作る
models_19852010 <- purrr::map(explained_vars, ~ model_make(df_all_log_dummy, .x, 1985, 2010))
# モデルの名前を付け直す
model_names_19852010 <- name_make_lm(lm_names, 1985, 2010)
names(models_19852010) <- model_names_19852010
## 変数名の全体を作成
trend_names_19852010 <- name_make_trend(trend_names, 1985, 2010)
## 予測値を追加
df_all_trend <- df_all_log_dummy |>
mutate(
!!!setNames(lapply(models_19852010, predict, newdata = df_all_log_dummy), trend_names_19852010)
)
## ダミー期間を除く
dummy_cols_19852010 <- paste0("I_", 1975:2010)
# トレンド用の newdata(ダミーを全部 0 にする)
newdata_trend_19852010 <- df_all_log_dummy |>
mutate(
across(all_of(dummy_cols_19852010), ~ 0)
)
df_all_trend_new <- df_all_log_dummy |>
mutate(
!!!setNames(
lapply(models_19852010, predict, newdata = newdata_trend_19852010),
trend_names_19852010
)
)
graph_gdp_jpn_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_gdp_jpn, color = "Realized")) +
geom_line(aes(x = year, y = trend_gdp_jpn_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Japan Actual GDP") +
annotate("text", x = 2015, y = 12.7, label = "slope = 0.185")
graph_gdp_jpn_pop_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_gdp_jpn_pop, color = "Realized")) +
geom_line(aes(x = year, y = trend_gdp_jpn_pop_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Japan Actual GDP per Population") +
annotate("text", x = 2015, y = 1, label = "slope = 0.017")
graph_gdp_jpn_wapop_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_gdp_jpn_wapop, color = "Realized")) +
geom_line(aes(x = year, y = trend_gdp_jpn_wapop_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Japan Actual GDP per Warking Age Population") +
annotate("text", x = 2015, y = 1.5, label = "slope = 0.020")
graph_gdp_tokyo_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_gdp_tokyo, color = "Realized")) +
geom_line(aes(x = year, y = trend_gdp_tokyo_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Tokyo Actual GDP") +
annotate("text", x = 2015, y = 18, label = "slope = 0.021")
graph_gdp_tokyo_pop_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_gdp_tokyo_pop, color = "Realized")) +
geom_line(aes(x = year, y = trend_gdp_tokyo_pop_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Tokyo Actual GDP per Population") +
annotate("text", x = 2015, y = 1.75, label = "slope = 0.016")
graph_gdp_tokyo_wapop_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_gdp_tokyo_wapop, color = "Realized")) +
geom_line(aes(x = year, y = trend_gdp_tokyo_wapop_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Tokyo Actual GDP per Warking Age Population") +
annotate("text", x = 2015, y = 2.22, label = "slope = 0.019")
graph_office_tokubu_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_office_tokubu, color = "Realized")) +
geom_line(aes(x = year, y = trend_office_tokubu_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Tokubu Office") +
annotate("text", x = 2015, y = 11, label = "slope = 0.025")
graph_land_tokyo_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_land_tokyo, color = "Realized")) +
geom_line(aes(x = year, y = trend_land_tokyo_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Tokyo Land price") +
annotate("text", x = 2015, y = 13, label = "slope = 0.033")
graph_land_tokubu_19852010 <- ggplot(data = df_all_trend_new) +
geom_line(aes(x = year, y = log_land_tokubu, color = "Realized")) +
geom_line(aes(x = year, y = trend_land_tokubu_19852010, color = "Trend"), linetype = "dashed") +
labs(title = "Tokubu Land Price") +
annotate("text", x = 2015, y = 13.5, label = "slope = 0.035")
# graph_gdp_jpn_19852010
# graph_gdp_jpn_pop_19852010
# graph_gdp_jpn_wapop_19852010
# graph_gdp_tokyo_19852010
# graph_gdp_tokyo_pop_19852010
# graph_gdp_tokyo_wapop_19852010
# graph_office_tokubu_19852010
# graph_land_tokyo_19852010
# graph_land_tokubu_19852010
df_all_trend_dev <- df_all_trend_new |>
mutate(
level_gdp_jpn = (gdp_jpn - exp(trend_gdp_jpn_19852010)) / exp(trend_gdp_jpn_19852010),
level_gdp_jpn_pop = (gdp_jpn_pop - exp(trend_gdp_jpn_pop_19852010)) / exp(trend_gdp_jpn_pop_19852010),
level_gdp_jpn_wapop = (gdp_jpn_wapop - exp(trend_gdp_jpn_wapop_19852010)) / exp(trend_gdp_jpn_wapop_19852010),
level_gdp_tokyo = (gdp_tokyo - exp(trend_gdp_tokyo_19852010)) / exp(trend_gdp_tokyo_19852010),
level_gdp_tokyo_pop = (gdp_tokyo_pop - exp(trend_gdp_tokyo_pop_19852010)) / exp(trend_gdp_tokyo_pop_19852010),
level_gdp_tokyo_wapop = (gdp_tokyo_wapop - exp(trend_gdp_tokyo_wapop_19852010)) / exp(trend_gdp_tokyo_wapop_19852010),
level_office_tokubu = (office_tokubu - exp(trend_office_tokubu_19852010)) / exp(trend_office_tokubu_19852010),
level_land_tokyo = (land_tokyo - exp(trend_land_tokyo_19852010)) / exp(trend_land_tokyo_19852010),
level_land_tokubu = (land_tokubu - exp(trend_land_tokubu_19852010)) / exp(trend_land_tokubu_19852010)
)
graph_gdp_jpn_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_gdp_jpn, color = "Deviation"))+
labs(title = "Japan Actual GDP Deviation from Trend")
graph_gdp_jpn_pop_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_gdp_jpn_pop, color = "Deviation"))+
labs(title = "Japan Actual GDP per Population Deviation from Trend")
graph_gdp_jpn_wapop_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_gdp_jpn_wapop, color = "Deviation"))+
labs(title = "Japan Actual GDP per Warking Age Population Deviation from Trend")
graph_gdp_tokyo_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_gdp_tokyo, color = "Deviation"))+
labs(title = "Tokyo Actual GDP Deviation from Trend")
graph_gdp_tokyo_pop_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_gdp_tokyo_pop, color = "Deviation"))+
labs(title = "Tokyo Actual GDP per Population Deviation from Trend")
graph_gdp_tokyo_wapop_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_gdp_tokyo_wapop, color = "Deviation"))+
labs(title = "Tokyo Actual GDP per Warking Age Population Deviation from Trend")
graph_office_tokubu_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_office_tokubu, color = "Deviation"))+
labs(title = "Office Tokubu Deviation from Trend")
graph_land_tokyo_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_land_tokyo, color = "Deviation"))+
labs(title = "Land Tokyo GDP Deviation from Trend")
graph_land_tokubu_19852010_dev <- ggplot(data = df_all_trend_dev) +
geom_line(aes(x = year, y = level_land_tokubu, color = "Deviation"))+
labs(title = "Land Tokubu GDP Deviation from Trend")
# graph_gdp_jpn_19852010_dev
# graph_gdp_jpn_pop_19852010_dev
# graph_gdp_jpn_wapop_19852010_dev
# graph_gdp_tokyo_19852010_dev
# graph_gdp_tokyo_pop_19852010_dev
# graph_gdp_tokyo_wapop_19852010_dev
# graph_land_tokyo_19852010_dev
# graph_land_tokubu_19852010_dev
wrap_plots(
graph_gdp_jpn_19852010,
graph_gdp_jpn_19852010_dev,
graph_gdp_jpn_pop_19852010,
graph_gdp_jpn_pop_19852010_dev,
graph_gdp_jpn_wapop_19852010,
graph_gdp_jpn_wapop_19852010_dev,
graph_gdp_tokyo_19852010,
graph_gdp_tokyo_19852010_dev,
graph_gdp_tokyo_pop_19852010,
graph_gdp_tokyo_pop_19852010_dev,
graph_gdp_tokyo_wapop_19852010,
graph_gdp_tokyo_wapop_19852010_dev,
graph_land_tokyo_19852010,
graph_land_tokyo_19852010_dev,
graph_land_tokubu_19852010,
graph_land_tokubu_19852010_dev,
graph_office_tokubu_19852010,
graph_office_tokubu_19852010_dev,
ncol = 2)
# install.packages("gt") # 初回のみ
library(gt)
df <- data.frame(
項目 = c("調査主体", "目的", "形式", "頻度", "対象"),
公示地価 = c("国土交通省", "公的評価の基準", "円/㎡の絶対価格", "年1回", "全国の標準地"),
市街地価格 = c("日本不動産研究所", "市場動向の把握", "指数", "年2回", "主要都市の市街地")
)
df |>
gt() |>
tab_header(
title = "公示地価と市街地価格の比較表"
)
| 公示地価と市街地価格の比較表 | ||
| 項目 | 公示地価 | 市街地価格 |
|---|---|---|
| 調査主体 | 国土交通省 | 日本不動産研究所 |
| 目的 | 公的評価の基準 | 市場動向の把握 |
| 形式 | 円/㎡の絶対価格 | 指数 |
| 頻度 | 年1回 | 年2回 |
| 対象 | 全国の標準地 | 主要都市の市街地 |
graph_shigai <- ggplot(data = df_shigai) +
geom_line(aes(x = year, y = shigai, color = "Deviation"))+
labs(title = "Shigaichi_kakaku")
graph_shigai
df_shigai <- df_shigai |>
mutate(
log_shigai = log(shigai)
)
graph_koji_shigai <- ggplot() +
geom_line(aes(x = year, y = log_shigai, color = "Shigai"), data = df_shigai) +
geom_line(aes(x = year, y = log_land_tokyo, color = "Koji"), data = df_all_log) +
labs(ylab = "Land Price", title = "Shigaichi_kakaku vs Koji_chika")
graph_koji_shigai