SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
北川源四郎「時系列解析入門」 第 9 章
柏野 雄太
バクフー株式会社
July 8, 2015
注意
この本は名著ではありますが,役割的に「時系列解析のチートシート」
的な存在で,全体的に記述があっさりしすぎています.
特に 9 章,10 章の状態空間モデルの部分は記述が少なすぎますので,
以下の書籍等で足りない部分を補う必要があります.
カルマンフィルタは通常工学部の大学 4 年生から修士 1 年のときに,
半期の講義+演習でガッツリやるようなレベルです.
状態空間モデル:
樋口知之「予測にいかす統計モデリングの基礎」
樋口知之+「データ同化入門」
カルマンフィルタ:
足立修一・丸田一郎「カルマンフィルタの基礎」
R のパッケージ dlm:
Petris+「R によるベイジアン動的線型モデル」
状態空間モデルの古典的入門書:
コマンダー&クープマン「状態空間時系列分析入門」
2 / 1
状態空間モデル
状態空間モデル
xn = Fnxn−1 + Gnvn (9.1)
yn = Hnxn + wn (9.2)
yn: 観測される時系列 次元 l
xn: 状態 (state) 次元 k
vn: システムノイズ(状態ノイズ) 平均ベクトル 0, 分散共分散行列 Qn
に従う m 次元の正規白色ノイズ
wn: 観測ノイズ 平均ベクトル 0, 分散共分散行列 Rn に従う l 次元の正
規白色ノイズ
Fn: k × k 次元
Gn: k × m 次元
Hn: l × k 次元
3 / 1
状態空間モデルの解釈
状態空間モデル
xn = Fnxn−1 + Gnvn (9.1)
yn = Hnxn + wn (9.2)
回帰モデルとしての解釈:
観測モデルは観測 yn を表現する回帰モデルで,xn が回帰係数,シス
テムモデルはその時間発展
信号理論としての解釈:
システムモデルは信号発生メカニズム,観測モデルはノイズが付加さ
れる様子を記述.
4 / 1
状態空間モデルの例: AR モデル
AR モデル
yn =
m∑
i=1
aiyn−i + vn (9.3)
xn = Fxn−1 + Gvn (9.4)
xn = (yn, yn−1, . . . , yn−m+1)T
F =





a1 a2 · · · am
1
...
1 0





, G =





1
0
...
0





(9.5)
H =
(
1 0 · · · 0
)
5 / 1
カルマンフィルタによる状態の推定
観測値 Yj =⇒ xn の推定
Yj が与えられたときの xn の条件付き分布 p(xn|Yj) を求める問題
j < n: 予測 (prediction)
j = n: フィルタ (filtering)
j > n: 平滑 (smooting)
6 / 1
カルマンフィルタ Kalman filter
[条件付き平均と共分散]
xn|j ≡ E(xn|Yj)
Vn|j ≡ E
(
(xn − xn|j)(xn − xn|j)T
)
(9.11)
[一期先予測]
xn|n−1 = Fnxn−1|n−1
Vn|n−1 = FnVn−1|n−1FT
n + GnQnGT
n (9.12)
[フィルタ]
Kn = Vn|n−1HT
n (HnVn|n−1HT
n + Rn)−1
xn|n = xn|n−1 + Kn(yn − Hnxn|n−1)
Vn|n = (I − KnHn)Vn|n−1 (9.13)
7 / 1
カルマンフィルタの逐次計算
x1|0 −→ x2|0 −→ x3|0 −→ x4|0 −→ x5|0 −→
⇓
x1|1 =⇒ x2|1 −→ x3|1 −→ x4|1 −→ x5|1 −→
⇓
x1|2 ←− x2|2 =⇒ x3|2 −→ x4|2 −→ x5|2 −→
⇓
x1|3 ←− x2|3 ←− x3|3 =⇒ x4|3 −→ x5|3 −→
⇓
x1|4 ←− x2|4 ←− x3|4 ←− x4|4 =⇒ x5|4 −→
⇓
[ノーテーション] ⇓: フィルタ, =⇒: 予測, ←−: 平滑化, −→: 長期予測
8 / 1
9.3 平滑化のアルゴリズム
YN = y1, · · · , yN が与えられたとき,途中状態の xn を推定する.
[固定区間平滑化]
An = Vn|nFT
n+1V −1
n+1|n
xn|N = xn|n + An(xn+1|N − xn+1|n)
Vn|N = Vn|n + An(Vn+1|N − Vn+1|n)AT
n (9.14)
9 / 1
9.4 状態の長期予測
Yn = {y1, · · · , yn} に基づいて,1 期先予想をクリア消し,j 期先の状
態 xn+j(j > 1) を推定する.
カルマンフィルタにより一期先の xn+1|n と xn+1|n を求める.
yn+1 は得られないが,Yn+1 = Yn と仮定する =⇒
xn+1|n+1 = xn+1|n, Vn+1|n+1 = Vn+1|n
カルマンフィルタの n + 1 期に対する 1 期先アルゴリズムから 2 期先
予測が得られる.
xn+2|n = Fn+2xn+1|n
Vn2|n = Fn+2Vn+1|nFT
n+2 + Gn+2Qn+2GT
n+2 (9.15)
[長期予測]
xn+i|n = Fn+ixn+i−1|n
Vni|n = Fn+iVn+i−1|nFT
n+i + Gn+iQn+iGT
n+i (9.16)
10 / 1
9.5 時系列の予測
Yn が与えられたときの yn+j の平均,分散共分散行列を
yn+j ≡ E(yn+j|Yn), dn+j|n ≡ Cov(yn+j|Yn) とすると,
yn+j|n = E(Hn+jxn+j + wn+j|Yn)
= Hn+jxn+j|n (9.17)
dn+j|n = Cov(Hn+jxn+j + wn+j|Yn)
= Hn+jCov(xn+j|Yn)HT
n+j + Hn+jCov(xn+j, wn+j|Yn)
+ Cov(xn+j, wn+j|Yn)HT
n+j + Cov(wn+j|Yn)
= Hn+jVn+j|nHT
n+j + Rn+j (9.18)
注: yn|n−1, dn|n−1 はカルマンフィルタ (9.13) ですでにもとめられている
11 / 1
9.5 時系列の予測  BLSALLFOOD の例
Figure: AR モデルの長期予測分布
12 / 1
9.6 時系列モデルの尤度計算とパラメータ推定
時系列モデルの尤度
l(θ) = −
1
2
{
lNlog2π +
N∑
n=1
log|dn|n−1|
+
N∑
n=1
(yn − yn|n−1)T
d−1
n|n−1(yn − yn|n−1)
}
(9.23)
ただし,このままでは計算が大変.
データに欠損がない AR の場合はユール・ウォーカー,最小二乗法,
PARCOR 法などのほうがいい.
仕方なく (9.23) を計算する場合でも,次元圧縮を考える.
13 / 1
9.6 時系列モデルの尤度計算とパラメータ推定
次元圧縮の方法: 時系列の次元が l = 1 で wn の分散が Rn = σ2 で一定の
場合
1 R = 1 としてカルマンフィルタ (カルマンゲインを計算すると R = σ2
でも R = 1 でも同じ)
2 以下の式により ˆσ2 を求める
ˆσ2
=
1
N
N∑
n=1
(yn − yn|n−1)2
˜dn|n−1
(9.28)
3 以下の式により対数尤度 l(θ∗) を求める
l(θ∗
) = −
1
2
{
Nlog2πˆσ2
+
N∑
n=1
log ˜dn|n−1+N
}
(9.29)
4 1, 2, 3 のステップを繰り返して,対数尤度 l(θ∗) を最大化して,最尤
推定値 θ∗ を求める
14 / 1
9.7 欠損値の補間
時系列の状態空間モデルを用いると欠測値があっても厳密に尤度計算
ができ,パラメータの最尤推定値を求めることができる.
l(θ) = −
1
2
∑
n∈I(N)
{
llog2π + log|dn|n−1+N |
+ (yn − yn|n−1)T
d−1
n|n−1+N (yn − yn|n−1)
}
(9.31)
パラメータが決まりモデルが与えられたら,カルマンフィルタの予測
分布 {xn|n−1, Vn|n−1},フィルタ分布 {xn|n, Vn|n} が求まり,その後で
平滑値 xn|N から欠測値 yn|N = Hnxn|n を求める.
推定誤差分散は dn|N = HnVn|N HT
n + Rn
15 / 1
9.7 欠損値の補間: BLSALLFOOD の例
Figure: 欠測値の補間
16 / 1
Python 版 カルマンフィルター
Python 版 カルマンフィルターの更新式
from␣numpy␣import␣dot
x␣=␣dot(F,␣x)␣+␣dot(B,␣u)
P␣=␣dot(F,␣P).dot(F.T)␣+␣Q
y␣=␣z␣-␣dot(H,␣x)
S␣=␣dot(H,␣P).dot(H.T)␣+␣R
K␣=␣dot(P,␣H.T).dot(np.linalg.inv(S))
x␣=␣x␣+␣dot(K,y)
P␣=␣(I␣-␣dot(K,␣H)).dot(P)
17 / 1
MATLAB 版 カルマンフィルター
MATLAB 版 カルマンフィルターの更新関数
function␣[xhat_new,P_new,␣G]␣=␣kf(A,␣B,␣Bu,␣C,␣Q,␣R,␣u,␣y,␣xhat,␣P)
␣␣xhat␣=␣xhat(:);
␣␣u␣=␣u(:);
␣␣y␣=␣y(:);
␣␣xhatm␣=␣A*xhat␣+␣Bu*u;
␣␣Pm␣=␣A*P*A’␣+␣B*Q*B’;
␣␣G␣=␣Pm*C/(C’*Pm*C␣+␣R);
␣␣xhat_new␣=␣xhatm␣+␣G*(y␣-␣C’*xhatm);
␣␣P_new␣=␣(eye(size(A))␣-␣G*C’)*Pm;
end
18 / 1

Más contenido relacionado

La actualidad más candente

不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
 
条件付き確率場の推論と学習
条件付き確率場の推論と学習条件付き確率場の推論と学習
条件付き確率場の推論と学習
Masaki Saito
 

La actualidad más candente (20)

工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
 
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
 
20190706cvpr2019_3d_shape_representation
20190706cvpr2019_3d_shape_representation20190706cvpr2019_3d_shape_representation
20190706cvpr2019_3d_shape_representation
 
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック 大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
条件付き確率場の推論と学習
条件付き確率場の推論と学習条件付き確率場の推論と学習
条件付き確率場の推論と学習
 
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究について
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法について
 
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925
 
失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用
 
2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)
 
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 

Destacado

Gunosy go2015 06-02
Gunosy go2015 06-02Gunosy go2015 06-02
Gunosy go2015 06-02
Yuta Kashino
 
R勉強会@東京 - Tokyo.Rの紹介
R勉強会@東京 - Tokyo.Rの紹介R勉強会@東京 - Tokyo.Rの紹介
R勉強会@東京 - Tokyo.Rの紹介
Yohei Sato
 
Tokyor10 opening
Tokyor10 openingTokyor10 opening
Tokyor10 opening
Yohei Sato
 

Destacado (20)

深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
Gunosy2015-06-03
Gunosy2015-06-03Gunosy2015-06-03
Gunosy2015-06-03
 
FLAME: Probabilistic Model Combining Aspect Based Opinion Mining and Collabor...
FLAME: Probabilistic Model Combining Aspect Based Opinion Mining and Collabor...FLAME: Probabilistic Model Combining Aspect Based Opinion Mining and Collabor...
FLAME: Probabilistic Model Combining Aspect Based Opinion Mining and Collabor...
 
Gunosy2015-08-05
Gunosy2015-08-05Gunosy2015-08-05
Gunosy2015-08-05
 
Gunosy2015 09-16ts
Gunosy2015 09-16tsGunosy2015 09-16ts
Gunosy2015 09-16ts
 
Opendata@tokyowebmining
Opendata@tokyowebminingOpendata@tokyowebmining
Opendata@tokyowebmining
 
PyDataTokyo201-05-22
PyDataTokyo201-05-22PyDataTokyo201-05-22
PyDataTokyo201-05-22
 
"Automatic Variational Inference in Stan" NIPS2015_yomi2016-01-20
"Automatic Variational Inference in Stan" NIPS2015_yomi2016-01-20"Automatic Variational Inference in Stan" NIPS2015_yomi2016-01-20
"Automatic Variational Inference in Stan" NIPS2015_yomi2016-01-20
 
Chainer meetup2016 03-19pub
Chainer meetup2016 03-19pubChainer meetup2016 03-19pub
Chainer meetup2016 03-19pub
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twm
 
機械学習ビジネス研究会 第01回
機械学習ビジネス研究会 第01回機械学習ビジネス研究会 第01回
機械学習ビジネス研究会 第01回
 
日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる
 
Gunosy go2015 06-02
Gunosy go2015 06-02Gunosy go2015 06-02
Gunosy go2015 06-02
 
TensorFlow White Paperを読む
TensorFlow White Paperを読むTensorFlow White Paperを読む
TensorFlow White Paperを読む
 
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
 
PyConJP2016: 週末サイエンティストのススメ
PyConJP2016: 週末サイエンティストのススメPyConJP2016: 週末サイエンティストのススメ
PyConJP2016: 週末サイエンティストのススメ
 
線形カルマンフィルタの導出
線形カルマンフィルタの導出線形カルマンフィルタの導出
線形カルマンフィルタの導出
 
お前の逐モン、GETだぜ!
お前の逐モン、GETだぜ!お前の逐モン、GETだぜ!
お前の逐モン、GETだぜ!
 
R勉強会@東京 - Tokyo.Rの紹介
R勉強会@東京 - Tokyo.Rの紹介R勉強会@東京 - Tokyo.Rの紹介
R勉強会@東京 - Tokyo.Rの紹介
 
Tokyor10 opening
Tokyor10 openingTokyor10 opening
Tokyor10 opening
 

Más de Yuta Kashino (11)

時系列データと確率的プログラミング tfp.sts
時系列データと確率的プログラミング tfp.sts時系列データと確率的プログラミング tfp.sts
時系列データと確率的プログラミング tfp.sts
 
Python kansai2019
Python kansai2019Python kansai2019
Python kansai2019
 
Mlse20190208
Mlse20190208Mlse20190208
Mlse20190208
 
Ml15m2018 10-27
Ml15m2018 10-27Ml15m2018 10-27
Ml15m2018 10-27
 
Pydata2017 11-29
Pydata2017 11-29Pydata2017 11-29
Pydata2017 11-29
 
私は如何にして心配するのを止めてPyTorchを愛するようになったか
私は如何にして心配するのを止めてPyTorchを愛するようになったか私は如何にして心配するのを止めてPyTorchを愛するようになったか
私は如何にして心配するのを止めてPyTorchを愛するようになったか
 
Pycon2017
Pycon2017Pycon2017
Pycon2017
 
ベイジアンディープニューラルネット
ベイジアンディープニューラルネットベイジアンディープニューラルネット
ベイジアンディープニューラルネット
 
深層学習とベイズ統計
深層学習とベイズ統計深層学習とベイズ統計
深層学習とベイズ統計
 
Wasserstein GAN Tfug2017 07-12
Wasserstein GAN Tfug2017 07-12Wasserstein GAN Tfug2017 07-12
Wasserstein GAN Tfug2017 07-12
 
確率的プログラミングライブラリEdward
確率的プログラミングライブラリEdward確率的プログラミングライブラリEdward
確率的プログラミングライブラリEdward
 

Último

Último (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

Gunosy2015 07-07

  • 1. 北川源四郎「時系列解析入門」 第 9 章 柏野 雄太 バクフー株式会社 July 8, 2015
  • 2. 注意 この本は名著ではありますが,役割的に「時系列解析のチートシート」 的な存在で,全体的に記述があっさりしすぎています. 特に 9 章,10 章の状態空間モデルの部分は記述が少なすぎますので, 以下の書籍等で足りない部分を補う必要があります. カルマンフィルタは通常工学部の大学 4 年生から修士 1 年のときに, 半期の講義+演習でガッツリやるようなレベルです. 状態空間モデル: 樋口知之「予測にいかす統計モデリングの基礎」 樋口知之+「データ同化入門」 カルマンフィルタ: 足立修一・丸田一郎「カルマンフィルタの基礎」 R のパッケージ dlm: Petris+「R によるベイジアン動的線型モデル」 状態空間モデルの古典的入門書: コマンダー&クープマン「状態空間時系列分析入門」 2 / 1
  • 3. 状態空間モデル 状態空間モデル xn = Fnxn−1 + Gnvn (9.1) yn = Hnxn + wn (9.2) yn: 観測される時系列 次元 l xn: 状態 (state) 次元 k vn: システムノイズ(状態ノイズ) 平均ベクトル 0, 分散共分散行列 Qn に従う m 次元の正規白色ノイズ wn: 観測ノイズ 平均ベクトル 0, 分散共分散行列 Rn に従う l 次元の正 規白色ノイズ Fn: k × k 次元 Gn: k × m 次元 Hn: l × k 次元 3 / 1
  • 4. 状態空間モデルの解釈 状態空間モデル xn = Fnxn−1 + Gnvn (9.1) yn = Hnxn + wn (9.2) 回帰モデルとしての解釈: 観測モデルは観測 yn を表現する回帰モデルで,xn が回帰係数,シス テムモデルはその時間発展 信号理論としての解釈: システムモデルは信号発生メカニズム,観測モデルはノイズが付加さ れる様子を記述. 4 / 1
  • 5. 状態空間モデルの例: AR モデル AR モデル yn = m∑ i=1 aiyn−i + vn (9.3) xn = Fxn−1 + Gvn (9.4) xn = (yn, yn−1, . . . , yn−m+1)T F =      a1 a2 · · · am 1 ... 1 0      , G =      1 0 ... 0      (9.5) H = ( 1 0 · · · 0 ) 5 / 1
  • 6. カルマンフィルタによる状態の推定 観測値 Yj =⇒ xn の推定 Yj が与えられたときの xn の条件付き分布 p(xn|Yj) を求める問題 j < n: 予測 (prediction) j = n: フィルタ (filtering) j > n: 平滑 (smooting) 6 / 1
  • 7. カルマンフィルタ Kalman filter [条件付き平均と共分散] xn|j ≡ E(xn|Yj) Vn|j ≡ E ( (xn − xn|j)(xn − xn|j)T ) (9.11) [一期先予測] xn|n−1 = Fnxn−1|n−1 Vn|n−1 = FnVn−1|n−1FT n + GnQnGT n (9.12) [フィルタ] Kn = Vn|n−1HT n (HnVn|n−1HT n + Rn)−1 xn|n = xn|n−1 + Kn(yn − Hnxn|n−1) Vn|n = (I − KnHn)Vn|n−1 (9.13) 7 / 1
  • 8. カルマンフィルタの逐次計算 x1|0 −→ x2|0 −→ x3|0 −→ x4|0 −→ x5|0 −→ ⇓ x1|1 =⇒ x2|1 −→ x3|1 −→ x4|1 −→ x5|1 −→ ⇓ x1|2 ←− x2|2 =⇒ x3|2 −→ x4|2 −→ x5|2 −→ ⇓ x1|3 ←− x2|3 ←− x3|3 =⇒ x4|3 −→ x5|3 −→ ⇓ x1|4 ←− x2|4 ←− x3|4 ←− x4|4 =⇒ x5|4 −→ ⇓ [ノーテーション] ⇓: フィルタ, =⇒: 予測, ←−: 平滑化, −→: 長期予測 8 / 1
  • 9. 9.3 平滑化のアルゴリズム YN = y1, · · · , yN が与えられたとき,途中状態の xn を推定する. [固定区間平滑化] An = Vn|nFT n+1V −1 n+1|n xn|N = xn|n + An(xn+1|N − xn+1|n) Vn|N = Vn|n + An(Vn+1|N − Vn+1|n)AT n (9.14) 9 / 1
  • 10. 9.4 状態の長期予測 Yn = {y1, · · · , yn} に基づいて,1 期先予想をクリア消し,j 期先の状 態 xn+j(j > 1) を推定する. カルマンフィルタにより一期先の xn+1|n と xn+1|n を求める. yn+1 は得られないが,Yn+1 = Yn と仮定する =⇒ xn+1|n+1 = xn+1|n, Vn+1|n+1 = Vn+1|n カルマンフィルタの n + 1 期に対する 1 期先アルゴリズムから 2 期先 予測が得られる. xn+2|n = Fn+2xn+1|n Vn2|n = Fn+2Vn+1|nFT n+2 + Gn+2Qn+2GT n+2 (9.15) [長期予測] xn+i|n = Fn+ixn+i−1|n Vni|n = Fn+iVn+i−1|nFT n+i + Gn+iQn+iGT n+i (9.16) 10 / 1
  • 11. 9.5 時系列の予測 Yn が与えられたときの yn+j の平均,分散共分散行列を yn+j ≡ E(yn+j|Yn), dn+j|n ≡ Cov(yn+j|Yn) とすると, yn+j|n = E(Hn+jxn+j + wn+j|Yn) = Hn+jxn+j|n (9.17) dn+j|n = Cov(Hn+jxn+j + wn+j|Yn) = Hn+jCov(xn+j|Yn)HT n+j + Hn+jCov(xn+j, wn+j|Yn) + Cov(xn+j, wn+j|Yn)HT n+j + Cov(wn+j|Yn) = Hn+jVn+j|nHT n+j + Rn+j (9.18) 注: yn|n−1, dn|n−1 はカルマンフィルタ (9.13) ですでにもとめられている 11 / 1
  • 12. 9.5 時系列の予測  BLSALLFOOD の例 Figure: AR モデルの長期予測分布 12 / 1
  • 13. 9.6 時系列モデルの尤度計算とパラメータ推定 時系列モデルの尤度 l(θ) = − 1 2 { lNlog2π + N∑ n=1 log|dn|n−1| + N∑ n=1 (yn − yn|n−1)T d−1 n|n−1(yn − yn|n−1) } (9.23) ただし,このままでは計算が大変. データに欠損がない AR の場合はユール・ウォーカー,最小二乗法, PARCOR 法などのほうがいい. 仕方なく (9.23) を計算する場合でも,次元圧縮を考える. 13 / 1
  • 14. 9.6 時系列モデルの尤度計算とパラメータ推定 次元圧縮の方法: 時系列の次元が l = 1 で wn の分散が Rn = σ2 で一定の 場合 1 R = 1 としてカルマンフィルタ (カルマンゲインを計算すると R = σ2 でも R = 1 でも同じ) 2 以下の式により ˆσ2 を求める ˆσ2 = 1 N N∑ n=1 (yn − yn|n−1)2 ˜dn|n−1 (9.28) 3 以下の式により対数尤度 l(θ∗) を求める l(θ∗ ) = − 1 2 { Nlog2πˆσ2 + N∑ n=1 log ˜dn|n−1+N } (9.29) 4 1, 2, 3 のステップを繰り返して,対数尤度 l(θ∗) を最大化して,最尤 推定値 θ∗ を求める 14 / 1
  • 15. 9.7 欠損値の補間 時系列の状態空間モデルを用いると欠測値があっても厳密に尤度計算 ができ,パラメータの最尤推定値を求めることができる. l(θ) = − 1 2 ∑ n∈I(N) { llog2π + log|dn|n−1+N | + (yn − yn|n−1)T d−1 n|n−1+N (yn − yn|n−1) } (9.31) パラメータが決まりモデルが与えられたら,カルマンフィルタの予測 分布 {xn|n−1, Vn|n−1},フィルタ分布 {xn|n, Vn|n} が求まり,その後で 平滑値 xn|N から欠測値 yn|N = Hnxn|n を求める. 推定誤差分散は dn|N = HnVn|N HT n + Rn 15 / 1
  • 16. 9.7 欠損値の補間: BLSALLFOOD の例 Figure: 欠測値の補間 16 / 1
  • 17. Python 版 カルマンフィルター Python 版 カルマンフィルターの更新式 from␣numpy␣import␣dot x␣=␣dot(F,␣x)␣+␣dot(B,␣u) P␣=␣dot(F,␣P).dot(F.T)␣+␣Q y␣=␣z␣-␣dot(H,␣x) S␣=␣dot(H,␣P).dot(H.T)␣+␣R K␣=␣dot(P,␣H.T).dot(np.linalg.inv(S)) x␣=␣x␣+␣dot(K,y) P␣=␣(I␣-␣dot(K,␣H)).dot(P) 17 / 1
  • 18. MATLAB 版 カルマンフィルター MATLAB 版 カルマンフィルターの更新関数 function␣[xhat_new,P_new,␣G]␣=␣kf(A,␣B,␣Bu,␣C,␣Q,␣R,␣u,␣y,␣xhat,␣P) ␣␣xhat␣=␣xhat(:); ␣␣u␣=␣u(:); ␣␣y␣=␣y(:); ␣␣xhatm␣=␣A*xhat␣+␣Bu*u; ␣␣Pm␣=␣A*P*A’␣+␣B*Q*B’; ␣␣G␣=␣Pm*C/(C’*Pm*C␣+␣R); ␣␣xhat_new␣=␣xhatm␣+␣G*(y␣-␣C’*xhatm); ␣␣P_new␣=␣(eye(size(A))␣-␣G*C’)*Pm; end 18 / 1