Successfully reported this slideshow.
Your SlideShare is downloading. ×

Rパッケージ“KFAS”を使った時系列データの解析方法

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 33 Ad

Rパッケージ“KFAS”を使った時系列データの解析方法

Download to read offline

JaLTER 公開シンポジウム2015「生物・生態系情報の統合と時系列データの解析~生物や生態系の変化を読み解く~」における発表ファイル

JaLTER 公開シンポジウム2015「生物・生態系情報の統合と時系列データの解析~生物や生態系の変化を読み解く~」における発表ファイル

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Advertisement

Similar to Rパッケージ“KFAS”を使った時系列データの解析方法 (20)

Advertisement

Recently uploaded (20)

Rパッケージ“KFAS”を使った時系列データの解析方法

  1. 1. Rパッケージ KFAS を使った 時系列データの解析方法 森林総合研究所 伊東宏樹 2015-09-15 JaLTER公開シンポジウム2015 生物・生態系情報の統合と時系列データの解析 ∼生物や生態系の変化を読み解く∼
  2. 2. • 時系列データを、何も考えずに扱うのがよくないの はわかった……
  3. 3. • 時系列データを、何も考えずに扱うのがよくないの はわかった…… • とはいえ、BUGSやStanはまだ敷居が高い……
  4. 4. • 時系列データを、何も考えずに扱うのがよくないの はわかった…… • とはいえ、BUGSやStanはまだ敷居が高い…… • Rパッケージで扱うには……
  5. 5. 時系列データを扱う Rパッケージ • CRAN Task View: Time Series Analysis https://cran.r-project.org/view=TimeSeries • 状態空間モデル (state space model) • dlm, KFAS など
  6. 6. 状態空間モデル yt-1 αt-1 yt αt yt+1 αt+1状態 観測値 ノイズノイズ ノイズ ノイズ ノイズ ノイズ
  7. 7. できること • 観測ノイズの除去 • 過去:平滑化 • 現在:フィルタ • 将来の予測 • システムの推測
  8. 8. KFAS • Kalman Filter and Smoother for Exponential Family State Space Models • ポアソン分布、二項分布など、正規分布以外の分布 を扱える。 • dlmパッケージとくらべると、参考文献は少ない。
  9. 9. 実際のデータを解析 Kéry & Schaub Bayesian Population Analysis Using WinBUGS 第3章のハヤブサのデータ (falcons.txt)を使用 • http://www.vogelwarte.ch/de/projekte/ publikationen/bpa/complete-code-and-data- files-of-the-book.html
  10. 10. フランス・ジュラ山脈におけるハヤブサのつがい数
  11. 11. ここですること • 平滑化(観測ノイズの除去) • 予測
  12. 12. とりあえず 正規分布を使用したモデリング 観測モデル システムモデル 観測ノイズ システムノイズ yt = ↵t + ✏t, ✏t ⇠ Normal(0, 2 ✏ ) ↵t = ↵t 1 + ⌘t, ⌘t ⇠ Normal(0, 2 ⌘)
  13. 13. KFASでモデリング > mdl0 <- SSModel(Pairs ~ SSMtrend(degree = 1, + Q = list(matrix(NA, 1, 1))), + data = falcons, H = matrix(NA, 1, 1), + distribution = "gaussian") > fit0 <- fitSSM(mdl0, inits = c(10,10), method = “BFGS") 推定するパラメーターをNAとしておく。 システムノイズ 観測ノイズ 初期値
  14. 14. 平滑化 > out0 <- KFS(fit0$model, smoothing = c("state", "mean")) > coef(out0) Time Series: Start = 1 End = 40 Frequency = 1 [1] 34.00869 44.98658 39.00235 35.98974 20.01106 18.00396 20.99684 [8] 19.99842 17.00474 20.00000 23.00079 26.99843 29.00632 38.99526 [15] 43.00000 47.00473 56.99132 56.00631 63.00001 70.00395 81.99684 [22] 89.99763 95.00553 106.99605 114.00000 121.00315 131.99290 134.00552 [29] 142.99842 149.99764 154.01104 171.97868 163.00788 163.99683 160.98343 [36] 137.03474 156.98109 153.03315 190.97158 192.99840 状態の値を表示 平滑化
  15. 15. 平滑化された値 > fitted(out0) Time Series: Start = 1 End = 40 Frequency = 1 [1] 34.00869 44.98658 39.00235 35.98974 20.01106 18.00396 20.99684 [8] 19.99842 17.00474 20.00000 23.00079 26.99843 29.00632 38.99526 [15] 43.00000 47.00473 56.99132 56.00631 63.00001 70.00395 81.99684 [22] 89.99763 95.00553 106.99605 114.00000 121.00315 131.99290 134.00552 [29] 142.99842 149.99764 154.01104 171.97868 163.00788 163.99683 160.98343 [36] 137.03474 156.98109 153.03315 190.97158 192.99840 この場合、状態の値と平滑化された値は同じ。
  16. 16. 平滑化されていない……😭
  17. 17. ノイズの分散をみると…… > print(fit0$model$Q) , , 1 [,1] [1,] 113.038 > print(fit0$model$H) , , 1 [,1] [1,] 0.08911987 観測ノイズの値が小さい ←観測ノイズ ←システムノイズ
  18. 18. カウントデータなので
  19. 19. 観測モデルをポアソン分布に ↵t = ↵t 1 + ⌘t, ⌘t ⇠ Normal(0, 2 ⌘) yt = Poisson(exp(↵t)) 観測モデル システムモデル
  20. 20. モデリング > mdl1 <- SSModel(Pairs ~ SSMtrend(degree = 1, + Q = list(matrix(NA, 1, 1))), + data = falcons, distribution = "poisson") > fit1 <- fitSSM(mdl1, inits = c(1), method = “BFGS") ポアソン分布なので、観測ノイズの分散(H)は指定しない。 ポアソン分布
  21. 21. 状態と平滑化された値 > out2 <- KFS(fit2$model, smoothing = c("state", “mean")) > coef(out1) Time Series: Start = 1 End = 40 Frequency = 1 [1] 3.600436 3.646996 3.575282 3.444877 3.231464 3.112745 3.073864 3.046119 3.036783 [10] 3.095805 3.192318 3.312783 3.441466 3.609914 3.742080 3.859742 3.985474 4.054406 [19] 4.152740 4.261904 4.387899 4.486665 4.564497 4.660396 4.732748 4.798104 4.868454 [28] 4.905312 4.960069 5.007768 5.047816 5.117825 5.098279 5.091911 5.062397 4.978895 [37] 5.043466 5.072529 5.218736 5.252747 > fitted(out1) Time Series: Start = 1 End = 40 Frequency = 1 [1] 36.61420 38.35927 35.70468 31.33942 25.31670 22.48267 21.62529 21.03356 [9] 20.83810 22.10502 24.34479 27.46143 31.23270 36.96287 42.18565 47.45311 [17] 53.81081 57.65089 63.60806 70.94497 80.47118 88.82469 96.01433 105.67792 [25] 113.60727 121.28031 130.11957 135.00500 142.60367 149.57048 155.68215 166.97180 [33] 163.73988 162.70046 157.96874 145.31379 155.00634 159.57731 184.70053 191.09040
  22. 22. 赤色の線が平滑化された値
  23. 23. 傾きを組み込んだモデル 観測モデル システムモデル yt = Poisson(exp(↵1t)) ↵1t = ↵1t 1 + ↵2t 1 + ⌘1t, ⌘1t ⇠ Normal(0, 2 ⌘1) ↵2t = ↵2t 1 + ⌘2t, ⌘2t ⇠ Normal(0, 2 ⌘2)傾き
  24. 24. モデリング > mdl2 <- SSModel(Pairs ~ SSMtrend(degree = 2, + Q = list(matrix(NA, 1, 1), + matrix(NA, 1, 1))), + data = falcons, distribution = "poisson") > fit2 <- fitSSM(mdl2, inits = c(1, 1), method = "BFGS") 2次のトレンドモデル
  25. 25. 状態 > out2 <- KFS(fit2$model, smoothing = c("state", "mean")) > coef(out2) Time Series: Start = 1 End = 40 Frequency = 1 level slope 1 3.722354 -0.101679163 2 3.620679 -0.115350974 3 3.505328 -0.128485351 4 3.376839 -0.130461354 5 3.246370 -0.108773871 6 3.137591 -0.074006144 7 3.063584 -0.035537613 8 3.028045 0.005883994 9 3.033929 0.049039924 10 3.082971 0.086906959 (中略) 39 5.181215 0.078153433 40 5.259369 0.078153433
  26. 26. 赤色の線が平滑化された値
  27. 27. 状態
  28. 28. 予測 > n.prediction <- 5 > prd <- predict(fit2$model, n.ahead = n.prediction, + type = "response", + level = 0.95, + interval = "confidence", + nsim = 1000) 5年先まで予測 95%信頼区間を計算 シミュレーションの回数 応答変数のスケール
  29. 29. 予測値と95%信頼区間
  30. 30. KFASのモデリング関数 • SSMarima: ARIMA(自己回帰和分移動平均)モデル • SSMcustom: 状態空間モデルの一般式によるモデル • SSMcycle: 周期モデル • SSMregression: 回帰モデル • SSMseasonal: 季節調整モデル • SSMtrend: トレンドモデル
  31. 31. 参考文献
  32. 32. 状態空間モデルについては • 北川源四郎 (2005) 時系列解析入門. 岩波書店 • Commandeur, J.F. and Koopman, S.J. (2007) An introduction to state space time series analysis. Oxford University Press(和 合肇訳 『状態空間時系列分析入門』 シーエーピー出版, 2008年) • Petris, G., Petrone S., and Campagnoli P. (2009) Dynamic linear models with R. Springer(和合肇監訳 萩原淳一郎訳 『Rに よるベイジアン動的線形モデル』 朝倉書店, 2013年) • 馬場真哉「状態空間モデル」
 http://logics-of-blue.com/category/統計・r/状態空間モデル/
  33. 33. KFAS関連 • Helske J. KFAS: Exponential family state space models in R 
 https://cran.r-project.org/web/packages/ KFAS/vignettes/KFAS.pdf • 小野滋「Commandeur & Koopman『状態空間時 系列分析入門』をRで再現する」
 http://elsur.jpn.org/ck/

×