SlideShare a Scribd company logo
1 of 18
Download to read offline
北川源四郎「時系列解析入門」 第 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

More Related Content

What's hot

今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン
Shinya Shimizu
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
takehikoihayashi
 

What's hot (20)

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...
 
POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 
[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 
強化学習5章
強化学習5章強化学習5章
強化学習5章
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
 
パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成
 
機械学習の理論と実践
機械学習の理論と実践機械学習の理論と実践
機械学習の理論と実践
 
今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
ICML 2020 最適輸送まとめ
ICML 2020 最適輸送まとめICML 2020 最適輸送まとめ
ICML 2020 最適輸送まとめ
 
深層学習の非常に簡単な説明
深層学習の非常に簡単な説明深層学習の非常に簡単な説明
深層学習の非常に簡単な説明
 
3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向
 
Sparse estimation tutorial 2014
Sparse estimation tutorial 2014Sparse estimation tutorial 2014
Sparse estimation tutorial 2014
 
畳み込みネットワークによる高次元信号復元と異分野融合への展開
畳み込みネットワークによる高次元信号復元と異分野融合への展開 畳み込みネットワークによる高次元信号復元と異分野融合への展開
畳み込みネットワークによる高次元信号復元と異分野融合への展開
 
マハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違いマハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違い
 

Viewers also liked

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
 

Viewers also liked (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
 

More from 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
 

Recently uploaded

Recently uploaded (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: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
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: 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
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: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...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

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