library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.5.3
## -- Attaching packages ------------------------------------------------ tidyverse 1.2.1 --
## √ ggplot2 3.2.1          √ purrr   0.2.5     
## √ tibble  2.1.3          √ dplyr   0.8.4     
## √ tidyr   1.0.2.9000     √ stringr 1.3.1     
## √ readr   1.1.1          √ forcats 0.3.0
## Warning: package 'ggplot2' was built under R version 3.5.3
## Warning: package 'tibble' was built under R version 3.5.3
## -- Conflicts --------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(xts)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
library(dygraphs)

DI指数の読み込みと累積DI指数の計算

data0 <- read.csv(file="DI-20200306.csv")
head(data0)
##   year month   le   co   lg
## 1 1980     1 54.5 83.3 83.3
## 2 1980     2 54.5 88.9 94.4
## 3 1980     3 45.5 88.9 88.9
## 4 1980     4 40.9 94.4 77.8
## 5 1980     5 36.4 27.8 55.6
## 6 1980     6 45.5 33.3 83.3

先行指数、一致指数、遅行指数をとり出す。

le <- data0[,"le"]
co <- data0[,"co"]
lg <- data0[,"lg"]
length(le); length(co); length(lg)
## [1] 481
## [1] 481
## [1] 481

日付をつけてts型にする。

le <- ts(le, freq=12, start=c(1980,1))
co <- ts(co, freq=12, start=c(1980,1))
lg <- ts(lg, freq=12, start=c(1980,1))

累積DI指数は指数水準50との差を累積和を計算し、第1成分をゼロに基準化することで得られる。

le.sum <- cumsum(le-50)
co.sum <- cumsum(co-50)
lg.sum <- cumsum(lg-50)
le.sum <- le.sum - le.sum[1]
co.sum <- co.sum - co.sum[1]
lg.sum <- lg.sum - lg.sum[1]
le.sum <- ts(le.sum, freq=12, start=c(1980,1))
co.sum <- ts(co.sum, freq=12, start=c(1980,1))
lg.sum <- ts(lg.sum, freq=12, start=c(1980,1))
clg.sum <- cbind(le.sum, co.sum, lg.sum)

データの視覚化

累積DI3指数をプロットする。

plot(clg.sum, plot.type="single", lty=c(2,1,3), col=c(2,1,3))
legend("topleft",
       leg=c("le", "co", "lg"),
       lty=c(2,1,3),
       col=c(2,1,3))

次に、パッケージ“dygraphs”でプロットする。

dygraph(clg.sum) %>%
  dyShading(from = "2012-3-1", to = "2012-11-30", color = "#FFE6E6") %>%
  dyShading(from = "2008-2-1", to = "2009-3-31", color = "#FFE6E6") %>%
  dyShading(from = "2000-11-1", to = "2002-1-31", color = "#FFE6E6") %>%
  dyShading(from = "1997-5-1", to = "1999-1-31", color = "#FFE6E6") %>%
  dyShading(from = "1991-2-1", to = "1993-10-31", color = "#FFE6E6") %>%
  dyShading(from = "1985-6-1", to = "1986-11-30", color = "#FFE6E6") %>%
  dyRangeSelector(height = 20, strokeColor = "red") %>%
  dyEvent(x = "2011-3-11", "東日本大震災", labelLoc = "bottom")

今回景気拡大とピークアウトの時期と今後の予想

上の図の累積一致指数(co.sum)の動きに基づけば、今回の景気の山は2018年11月前後にあったことは明瞭だと思われる。他方、累積遅行指数の低下は3月に公表された本年1月分までのデータを視る限りまだ認められない。累積先行指数は2018年1月にピークアウトしている。これらを総合すると、今回の景気拡大はおそらく2018年の年末から2019年初めにかけて景気の山を迎え、景気後退局面に入っていたのではないかと感じられる。

とすれば、実態経済の平均的な景気後退期間は1年半程度である点を考慮すれば、本年半ば前後に景気は底打ちし、秋にかけて次の拡大局面に入る、そんな変動プロセスになっていたのではないかと憶測される。

昨年秋の時点でNY株式市場のバフェット指数は148の水準に達していたと評されていたこともあり、高すぎる株価の調整は予想されていたことである。

今回の新型コロナウイルスの感染拡大は、循環的な景気変動をより激化させる方向に働いている。景気後退期間はより長く、更により深くなるかもしれない。

とはいえ、感染拡大に向けて政策上のミスがなければ、経済の実態は本年後半にかけて次の拡大サイクルに入るステージにあるのではないかと思われる。

備考:

公式の景気基準日付は『景気動向指数研究会での議論を踏まえて,内閣府経済社会総合研究所長が設定する』ことになっています。どうなるか?甚だ楽しみな所です。