「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年12月10日改訂)。

MENU

時系列解析の基礎(25/XX)

 以下の書籍

を中心に時系列解析を勉強していきます。

14. 代表的な成分モデル

14.1 個別モデルの組み合わせ

 状態空間モデルでは、個別の基本的なモデルを組み合わせて用いることが容易である。

14.1.1 モデルの設定

 以降の議論をすべく、以下のように設定する。まず線形・\mathrm{Gauss}型状態空間モデルにおいて個別のモデルが一般にI種類存在する場合、それらを区別すべく、


\begin{aligned}
\boldsymbol{x}_t^{(i)}&=\boldsymbol{G}_t^{(i)}\boldsymbol{x}_{t-1}^{(i)}+\boldsymbol{w}_t^{(i)},&\boldsymbol{w}_t^{(i)}\sim \mathcal{N}\left(\boldsymbol{0},\boldsymbol{W}^{(i)}\right),\\
y_t^{(i)}&=\boldsymbol{F}_t^{(i)}\boldsymbol{x}_t^{(i)}+v_t^{(i)},&v_t\sim N\left(0,V^{(i)}\right)
\end{aligned}

とおく。事前分布は、\boldsymbol{x}_0^{(i)}\sim\mathcal{N}\left(\boldsymbol{m}_0^{(i)},\boldsymbol{C}_0^{(i)}\right)とする。

14.1.2 モデルを独立した各成分として考える場合

 更に上記の設定において、観測値を構成する独立した各成分をこれらのモデルとして考える場合は以下のようにおく。


\begin{aligned}
\boldsymbol{x}_{t}&=\begin{bmatrix}\boldsymbol{x}_{t}^{(1)}\\\vdots\\\boldsymbol{x}_{t}^{(I)}\end{bmatrix},\\
\boldsymbol{G}_{t}&=\begin{bmatrix}\boldsymbol{G}_{t}^{(1)}&&\\&\ddots&\\&&\boldsymbol{G}_{t}^{(I)}\end{bmatrix},\\
\boldsymbol{W}_{t}&=\begin{bmatrix}\boldsymbol{W}_{t}^{(1)}&&\\&\ddots&\\&&\boldsymbol{W}_{t}^{(I)}\end{bmatrix},\\
y_t&=\displaystyle{\sum_{i=1}^{I}},\\
\boldsymbol{F}_t&=\begin{bmatrix}\boldsymbol{F}_t^{(1)}&\cdots&\boldsymbol{F}_t^{(I)}\end{bmatrix},\\
V_t&=\displaystyle{\sum_{i=1}^{I}V_t^{(i)}}
\end{aligned}

ここで事前分布のパラメータは


\begin{aligned}
\boldsymbol{x}_{0}&=\begin{bmatrix}\boldsymbol{x}_{0}^{(1)}\\\vdots\\\boldsymbol{x}_{0}^{(I)}\end{bmatrix},\\
\boldsymbol{m}_{0}&=\begin{bmatrix}\boldsymbol{m}_{0}^{(1)}\\\vdots\\\boldsymbol{m}_{0}^{(I)}\end{bmatrix},\\
\boldsymbol{C}_{0}&=\begin{bmatrix}\boldsymbol{C}_{0}^{(1)}&&\\&\ddots&\\&&\boldsymbol{C}_{0}^{(I)}\end{bmatrix}
\end{aligned}

とおく。

14.2 ローカルレベルモデル

 特別な時間パターンを含まず、短期的には同じような値を取るレベルの推定に適したモデルがローカルレベルモデルである*1。ここでは状態雑音と観測雑音が時間に対して不変であるような場合を考える。


\begin{aligned}
x_{t}&=x_{t-1}+w_t,&w_t\sim N\left(0,W\right)\\
y_{t}&=y_{t-1}+v_t,&v_t\sim N\left(0,V\right)
\end{aligned}

14.2.1 人工的なローカルレベルモデルの作成例
################################
### ローカルレベルモデルの例 ###
################################

library("dlm")
library("ggplot2")

set.seed(23)

# ローカルレベルモデルの設定
W <- 1
V <- 2
m0 <- 10
C0 <- 9

mod <- dlmModPoly(order = 1, dW = W, dV = V, m0 = m0, C0 = C0)

# Karman predictionにより観測値を作成
t_max <- 200
sim_data <- dlmForecast(mod = mod, nAhead = t_max, sampleNew = 1)
y <- sim_data$newObs[[1]]

df <- data.frame(time = 1:length(y), val = y)

x_levels <- (floor(min(df$time)%/%50):ceiling(max(df$time)%/%50)) * 50
y_levels <- (floor(min(df$val)%/%5):ceiling(max(df$val)%/%5)) * 5



g <- ggplot(df, aes(x = time, y = val))
g <- g + geom_line(size = 0.6) + theme_bw()
g <- g + labs(title = "ローカルレベルモデルに従う人工データ",
              x = "time",y = "y")
g <- g + theme(axis.text= element_text(size = 12),
               axis.text.x=element_text(size = 12),
               legend.title = element_blank(),
               legend.text = element_text(size = 12),
               legend.position = "top",
               axis.title = element_text(size = 12),
               axis.title.y = element_text(angle = 90,size = 12),
               plot.title= element_text(size = 16,hjust = 0.5))
g <- g + geom_hline(yintercept = y_levels, linetype = 3)
g <- g + geom_vline(xintercept = x_levels, linetype = 3)

plot(g)

参考文献

  • 沖本竜義(2010)「経済・ファイナンスデータの 計量時系列分析」(朝倉書店)
  • 北川源四郎(2020)「Rによる時系列モデリング入門」(岩波書店
  • 柴田里程(2017)「時系列解析」(共立出版)
  • 白石博(2022)「時系列データ解析」(森北出版)
  • 萩原淳一郎,瓜生真也,牧山幸史[著],石田基広[監修](2018)「基礎からわかる時系列分析 Rで実践するカルマンフィルタ・MCMC・粒子フィルタ」(技術評論社)

*1:このモデルは既に例として用いている。

プライバシーポリシー お問い合わせ