以下の書籍
を中心に時系列解析を勉強していきます。
前回
14. 代表的な成分モデル
14.1 個別モデルの組み合わせ
状態空間モデルでは、個別の基本的なモデルを組み合わせて用いることが容易である。
14.1.1 モデルの設定
以降の議論をすべく、以下のように設定する。まず線形・型状態空間モデルにおいて個別のモデルが一般に種類存在する場合、それらを区別すべく、
とおく。事前分布は、とする。
14.1.2 モデルを独立した各成分として考える場合
更に上記の設定において、観測値を構成する独立した各成分をこれらのモデルとして考える場合は以下のようにおく。
ここで事前分布のパラメータは
とおく。
14.2 ローカルレベルモデル
特別な時間パターンを含まず、短期的には同じような値を取るレベルの推定に適したモデルがローカルレベルモデルである*1。ここでは状態雑音と観測雑音が時間に対して不変であるような場合を考える。
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)
参考文献
*1:このモデルは既に例として用いている。