Upload
xiangze
View
4.733
Download
1
Embed Size (px)
DESCRIPTION
Data assimilation & filtering in R
Citation preview
2012/9/8 1
データ同化とフィルタの紹介
2012/9/8
Tokyo.R #26
@xiangze750
2012/9/8 2
Agenda データ同化とは データ同化の応用範囲 状態空間モデル 予測と平滑化 カルマンフィルタ
– sspirパッケージ– いろいろなパッケージ
パーティクルフィルタ
– RcppSMCパッケージ– 非線形力学系とフィルタ
まとめと課題 Reference
2012/9/8 3
自己紹介
@xiangze750
LSIメーカー勤務画像圧縮、画像処理
普段使うプログラミング言語
C++, Verilog HDL, Perl, VBA, R
普段使う自然言語
日本語、英語、中国語
2012/9/8 4
データ同化(Data Assimilation)とは
ある未知のパラメータを含んだ方程式に基づいたシミュレーションの結果を実際の観測値を用いて補正する
http://www.hzg.de/institute/coastal_research/cosyna/007914/index_0007914.html
http://www.jamstec.go.jp/drc/maps/e/kadai/clm/clm_or_ap4.html
Figure 1. The representation of the NINO3.4 SST (red and blue lines: reproduced, black: observation). Coupled data assimilation (bottom panel) reproduces the state of the 1990's much better than simulation (top panel).
2012/9/8 5
データ同化の応用範囲
流体力学的計算(Navier-Stokes 方程式に従う)
– 数値的天気予報– 気候モデル(大気海洋結合モデル、エルニーニョの予測)
– 津波のシミュレーション
– 放射性物質の拡散予測http://www.cs.kyoto-u.ac.jp/wp-content/uploads/2012/06/03ishikawa.pdf
その他
– 遺伝子発現調節モデル予測対象のメカニズム(運動方程式が)ある程度わかっている。未知なパラメータが存在する
2012/9/8 6
エルニーニョの予測 海洋研究開発機構と東京大学によるエルニーニョの予測• 大気と海洋の相互作用によって海水温度の深度分布を未知のパラメータとして推定し、予測に取り入れた。
http://www.jamstec.go.jp/j/about/press_release/20100222/http://www.jamstec.go.jp/drc/maps/e/kadai/clm/clm_or_ap4.html
2012/9/8 7
遺伝子発現調節モデル
どのようにしてしましまが形成されるのか
– ショウジョウバエの体節形成に関わる遺伝子
http://en.wikipedia.org/wiki/Drosophila_embryogenesis
2012/9/8 8
遺伝子発現調節モデル
Modeling and Estimation of Dynamic EGFR Pathwayby Data Assimilation Approach Using Time SeriesProteomic Datahttp://www.jsbi.org/pdfs/journal1/GIW06/GIW06F032.pdfhttp://www.jsbi.org/pdfs/journal1/GIW06/GIW06F032Suppl.html
2012/9/8 9
データ同化の種類
樋口知之 編著 データ同化入門 p.14
逐次型 非逐次型代表的手法 アンサンブルカルマンフィルタ 4次元変分法
解 周辺分布 状態ベクトル列の状態ベクトルの事後
数理的観点から 統計的推測 最適化
シミュレーションの規模 中〜小規模 超大規模も可能
使われている領域 すべて 気象、海洋予報
プログラムの実装 プラグイン化可能 エキスパートが最適な最適化手法を実装
High performance computing
スカラー並列計算機向き ベクトル計算器向き
シミュレーションモデルの比較
尤度により可能 困難
今回は逐次型を説明します。
2012/9/8 10
状態空間モデル
システムモデル(発展方程式)
– n次元時系列xt=(x0t,x1t,x2t,...,xnt)
– 予測対象(隠れた変数) xt
– モデル内の未知の要素 z (確率変数)
真の発展方程式にはあるが値が未知のためシミュレーションモデルに含むことができない変数を確率変数(システムノイズ)として入れこむ。
一般の場合
線形の場合
2012/9/8 11
状態空間モデル
観測モデル– 観測にはノイズがつきもの– 確率変数wtとしてノイズを表現する
システムモデル&観測モデル
真の発展方程式にあってシミュレーションモデルに含めない変数を確率変数(システムノイズ)として入れこむ
2種類のノイズが含まれる
一般の場合
線形の場合
2012/9/8 12
グラフィカルモデル
確率変数間の関係を矢印で結んだもの時系列モデルの場合は変数が鎖状に並ぶ(隠れマルコフモデル)
逐次データ同化とは事後分布p(xt|y1:t-1)の推定
確率変数x (隠れ変数)
y 観測された変数
x0 x1
y0 yTyT-1
….
x2 x3 xT-1 xT
2012/9/8 13
予測分布と計算法
逐次データ同化とは事後分布p(xt|y1:t-1)の推定
予測分布
フィルタ分布
平滑化分布
x0 x1
y0 ytyt-1
….
x2 x3 xt-1 xt
yTyT-1
….
xT-1 xT
y1
2012/9/8 14
予測分布の計算手法
ベイズの定理を用いる
yt-1
xt-1 xt
矢印を逆にたどって分布p(xt|y1:t-1)を推測する。
yt
2012/9/8 15
予測分布の計算手法
予測分布
xt-1の導入
条件付き確率の式
Xtとy1:t-1の独立性(グラフでつながっていない)
2012/9/8 16
予測分布の計算手法
フィルタ分布
ベイズの定理(yt)
条件付き確率の式(xt)
ytとy1:t-1の独立性(グラフでつながっていない)
Xtの導入
条件付き確率の式(xt,分母)
2012/9/8 17
平滑化(smoothing)
xtより将来の一定期間の観測値を用いて推測する– 固定区間平滑化– 固定点平滑化
– 固定ラグ平滑化
• t:t+Lの区間を状態ベクトルとする
2012/9/8 18
予測分布の代表的計算法
カルマンフィルタ
– 線形モデル、ガウシアンノイズの場合のみ
アンサンブルカルマンフィルタ
– 非線形、ガウシアンノイズに対応 パーティクル(粒子)フィルタ
– 非線形モデル、非ガウシアンノイズにも対応
2012/9/8 19
カルマンフィルタ
線形モデル、ガウシアンノイズの場合平均、分散が積分計算を実行することなく解析的に求まる。
– モデル
– Prediction step
– Update(filter) step
2012/9/8 20
カルマンフィルタ
Prediction step
Update(filter) step
Pk xkの共分散行列
Sk ykの共分散行列
Kk カルマン行列(Pk)のupdateで用いられる行列
2012/9/8 21
カルマンフィルタ
Prediction stepとUpdate(filter) step
2012/9/8 22
カルマンフィルタ
時系列解析との関係
– auto.arma関数の出力に推定されたカルマンフィルタのパラメータが保存されている。
– ARMAモデル
– KalmanLike,KalmanRun, KalmanSmooth,KalmanForecast関数が利用可能
http://www.slideshare.net/hamadakoichi/r-3836773
2012/9/8 23
カルマンフィルタ
library( forecast )
tsdisplay( BJsales )
r<-auto.arima(BJsales)
plot( forecast( r, h=10 ) ) #予測値(右図)
r$model #Kalman行列などが表示される。
KalmanForecast(10,r$model) #予測
#特定係数のarmaモデルによるシミュレーション
simr<-armaSim( model=list( ar=c( 0.3, -0.3 ), d=2,ma=c( 0.5, 0.7 ) ), n=200)
#尤度の推定
r2<-KalmanLike(simr,r$model)http://itbc-world.com/R_fm_library/r%E3%81%AE%E7%B5%B1%E8%A8%88%E9%96%A2%E6%95%B0/arima%E3%83%A2%E3%83%87%E3%83%AB/
2012/9/8 24
いろいろなカルマンフィルタパッケージ
sspirパッケージ
– 非ガウシアンノイズ(Poisson,二項分布)
– Linear KFASパッケージ
– 非ガウシアンノイズ、Linear
http://hosho.ees.hokudai.ac.jp/~kubo/ce/TimeSeriesData.htmlhttp://www.jstatsoft.org/v16/i01/paper
http://stat-www.berkeley.edu/~brill/Stat248/kalmanfiltering.pdf
2012/9/8 25
いろいろなカルマンフィルタパッケージ
相違点
– 平滑化の実装– 非ガウシアンノイズへの対応– 逆行列の計算方法
http://stat-www.berkeley.edu/~brill/Stat248/kalmanfiltering.pdf
2012/9/8 26
パーティクルフィルタ
事後確率分布を多数の”粒子”で近似する 利点
– 非ガウシアンノイズ、非線形モデルに対応できる。– 並列化に向いている。
欠点
– 粒子数が少ないと分布をうまく近似できない– 多くの粒子が一カ所に集まる退化と呼ばれる現象が起こる。
応用例物体追跡(ロボットの位置推定など)
2012/9/8 27
パーティクルフィルタ
処理の流れ
2012/9/8 28
パーティクルフィルタ
処理の流れ
2012/9/8 29
パーティクルフィルタ
処理の流れ
2012/9/8 30
パーティクルフィルタ
処理の流れ
2012/9/8 31
RcppSMC
3種類のモデルのパーティクルフィルタが使用できる(らしい)。
– blockpfGaussianOpt
– Linear
– Nonlinear
sim <- simGaussian(len=250) res <- blockpfGaussianOpt(sim$data,lag=5,plot=TRUE)
http://d.hatena.ne.jp/teramonagi/20120411/1334153387
2012/9/8 32
MCMCの実行
パーティクルフィルタはモンテカルロ法の一種と言える。
MCMCpack
– 使用できるモデルは限定されている。
R2winBUGS
– WinBUGS(or OpenBUGS)を呼び出している。 RcppBUGS
– BUGSのc++実装、– http://www.rinfinance.com/agenda/2012/talk/WhitArmstrong.pdf
2012/9/8 33
MCMCの実行
RcppBUGSの記述例http://www.rinfinance.com/agenda/2012/talk/WhitArmstrong.pdf
BUGS言語で隠れマルコフモデルを記述するのは大変そう。。。
2012/9/8 34
パーティクルフィルタの実施例
モデル Lorenz方程式
Sigma=10, b=8/3 r<=24 固定点Sigma=10, b=8/3 24<r<=300 ストレンジアトラクタSigma=10, b=8/3 r>330 リミットサイクル
2012/9/8 35
パーティクルフィルタの実施例
双子実験– 観測値の代わりにシミュレーションを行う。– パーティクルフィルタなどの手法の検証ができる。
データ同化用シミュレーション実験データ取得用のシミュレーション
Yt
2012/9/8 36
パーティクルフィルタの実施例
時系列、分布(N=100,r=4,固定点)
https://github.com/xiangze/particlefilter_dynamical
実験データ取得用のシミュレーション データ同化用シミュレーション
Yt
収束している
2012/9/8 37
パーティクルフィルタの実施例
時系列、分布(N=100,r=4,固定点)
https://github.com/xiangze/particlefilter_dynamical
実際の値とparticleの平均値との差 particleの分散
収束している
2012/9/8 38
パーティクルフィルタの実施例
時系列、分布(N=100,r=28,ストレンジアトラクタ)
https://github.com/xiangze/particlefilter_dynamical
実験データ取得用のシミュレーション データ同化用シミュレーション
Yt
収束している???
2012/9/8 39
パーティクルフィルタの実施例
時系列、分布(N=100,r=28,ストレンジアトラクタ)
実際の値とparticleの平均値との差 particleの分散時折particleが大きくばらける場合がある。絶対値が大きい
パーティクルフィルタの性能を高める方法に関しては「データ同化入門」の7章 融合粒子フィルタも参照
2012/9/8 40
まとめと課題
データ同化の概念とその応用範囲を紹介した。 逐次データ同化の手法としてカルマンフィルタ、パーティクルフィルタを紹介した。
– カルマンフィルタは複数のパッケージで利用できる。– RではパーティクルフィルタをRcppSMCで利用することが
可能
– 非線形モデルにおけるパーティクルフィルタを実装し動作の確認を試みた。
– 平滑化の実装が課題
2012/9/8 41
Reference
ブログ
– http://d.hatena.ne.jp/teramonagi/20120411/1334153387 スライド
– http://www.slideshare.net/horihorio/howtousetimeseries
– http://www.slideshare.net/hamadakoichi/r-3836773 論文
– http://stat-www.berkeley.edu/~brill/Stat248/kalmanfiltering.pdf
本
– データ同化入門
– 予測に生かす統計モデリングの基本
今回使用したコード
• https://github.com/xiangze/particlefilter_dynamical