「公的統計の読み方」をテーマにした一般教養科目を履修したところ,
景気判断の指標の一つである在庫循環図を書く機会があったのでメモします。
在庫循環図とは
- 縦軸に鉱工業指数の在庫指数の前年比を、横軸に同生産指数の前年比をプロットしたもの
- 通常,反時計回りに回りながら短期の景気循環を表す
Rで実行
1. データの取得
2つの方法があります
私はe-statAPIを使いましたが,実は最終更新日が2017年の5月となっており,それ以降のデータはサイトからダウンロードするしかありません。
## 在庫循環図(鉱工業) ---------------------------------------------------- library(dplyr) # e-stat library(estatapi) AppID <- "" # 自分のAPIのIDを入力 # 1. 統計を検索 #ResultData <- estat_getStatsList(appId = AppID, searchWord = "鉱工業生産・出荷・在庫指数") #ResultData_df <- ResultData %>% as.data.frame() #ResultData_df %>% head() # 2. データの取得:0003181031 業種別/四半期、年、年度/原指数 付加価値額生産(平成22年=100.0) ---- #estat_getMetaInfo(appId = AppID, statsDataId = "0003181031") output <- estat_getStatsData(appId = AppID, statsDataId = "0003181031", cdCat02 = "0001000" # 鉱工業 ) # 3. データの取得:0003181068 業種別/四半期、年、年度/原指数 在庫(期末)(平成22年=100.0) ---- #estat_getMetaInfo(appId = AppID, statsDataId = "0003181068") stock <- estat_getStatsData(appId = AppID, statsDataId = "0003181068", cdCat02 = "0001000" # 鉱工業 ) # 4. merge --------------------------------------------------------- df = data.frame(QE = output[20:56, c('統計項目A')][[1]], output = output[20:56, c('value')][[1]]) df = merge(df, data.frame(QE = stock[20:56, c('統計項目A')][[1]], stock = stock[20:56, c('value')][[1]]) ) # 5. 前年同期比を計算する。{(当期ー前年同期)/前年同期}---------- # 前年同期比関数 Year_on_year_rate <- function(x) { y <- NA for(i in 5:length(x)){ y[i] = (x[i] - x[i-4])/x[i-4] # 四半期を使ったので-4 } return(y) } # run df <- data.frame(df, output_r = Year_on_year_rate(df$output), stock_r = Year_on_year_rate(df$stock) ) df <- na.omit(df)
2. プロット
# 6. plot:2009Q1 ~ 2017Q1 ------------------------------------------------------ # デフォルトの関数でplot plot(df$output_r, df$stock_r, type = 'l') points(df$output_r, df$stock_r)
# ggplotでplot library(ggplot2) windowsFonts(Yu = windowsFont("Yu Gothic UI")) #新しいフォントファミリーを定義 g <- ggplot(df, aes(x = output_r, y = stock_r)) + geom_point(color = "royalblue", alpha = 0.7, size = 2) + geom_path(color = "royalblue", alpha = 0.7)+ # geom_lineではなくpathを使う labs(x = "生産前年同期比(%)", y = "在庫前年同期比(%)", title = "在庫循環図(鉱工業)")+ theme(text = element_text(family = 'Yu'))+ # 日本語フォント指定 # 軸 geom_vline(xintercept = 0)+ geom_hline(yintercept = 0)+ geom_abline(intercept = 0, slope = 1, lty = 2)+ geom_abline(intercept = 0, slope = -1, lty = 2)+ # データラベル geom_label(aes(label = QE, x = output_r, y = stock_r), alpha = 0.3, vjust = 0, color = "steelblue") g
# 7. plot:2014Q1 ~ 2017Q1 ------------------------------------------------------ g <- ggplot(df[21:33,], aes(x = output_r, y = stock_r)) + geom_point(color = "royalblue", alpha = 0.7, size = 2) + geom_path(color = "royalblue", alpha = 0.7)+ # geom_lineではなくpathを使う labs(x = "生産前年同期比(%)", y = "在庫前年同期比(%)", title = "在庫循環図(鉱工業)")+ theme(text = element_text(family = 'Yu'))+ # 日本語フォント指定 # 軸 geom_vline(xintercept = 0)+ geom_hline(yintercept = 0)+ geom_abline(intercept = 0, slope = 1, lty = 2)+ geom_abline(intercept = 0, slope = -1, lty = 2)+ # データラベル geom_label(aes(label = QE, x = output_r, y = stock_r), alpha = 0.3, vjust = 0, color = "steelblue") g