はじめに
Moment-Based Kalman Filter(以降 MKF)というものが紹介されており,理解がてら試してみる.
詳細は下記の論文を参照.
MKFでは独立でない複数変数の混合三角モーメントの計算が必要となるが,
計算を進めるうえでいろいろな箇所で手こずったので,本記事では備忘がてら計算過程と結果を記す.
(やっていることは変数を直交基底に変数変換して,独立した変数にしているだけだと思うのですが...その計算が大変...)
変数の取り方や記号はなるべく引用文献に合わせる.
流れてきたtweet↓
https://twitter.com/purewater0901/status/1617706889642639360?s=20
MKFについての論文↓
https://arxiv.org/abs/2301.09130
混合三角モーメント
本記事で扱う三角モーメントとは,例えば下記のようなものとなる.
ここで,xとθは互いに独立でない確率変数である.
E[xcos(θ)]
前提
通常の変数であれば上記の式は計算できないが,引用論文おいては,
確率変数が正規分布に従う場合には計算可能となる.
そこで,以降では各確率変数は正規分布に従うものとする.
x=[x,θ]Tとしたとき,
x∼N(μx,Σx)
となる.
μx=[μx,μθ]Tであり,xとθの平均値を表し,Σxは共分散行列である.
共分散行列については下記がわかりやすいと思う.
https://manabitimes.jp/math/1020
計算が大変なので2変数で表記しているが,もっと多くても基本的には同じ.
変数変換
はじめに,共分散行列の固有値λ1,λ2と直交行列Tを求める.Tの求め方は調べれば出てくるので割愛する.
このとき,
T−1ΣxT=ΛΛ=[λ100λ2]
である.
次に,y=T−1xとおくと,μy=T−1μx=TTμx,Σy=Λとなる.
ここの計算の詳細は引用文献の(5)式を参照.
このとき,下記のように表記される.
y∼N(μy,Σy)
この変換を施すことにより,確率変数を独立した変数に変換できるため,混合三角モーメントを計算できるようになる.
モーメントの計算の一例
最初に挙げたE[xcos(θ)]を対象に計算をしてみる.
引用文献のExample1と同様であるが計算過程は異なる手順をとる(なお,引用文献の計算は誤植と思われ,公開されているソースコードの中身は同じ計算結果となっている).
先ほどのyを下記のように表記しなおす.
y=(y1,y2)T∼N(μy,Σy)=N((y1ˉy2ˉ),(λ100λ2))
また,TijはTの(i,j)要素とする.
これを用いて計算すると下記のようになる.
E=====[xcos(θ)]E[(T11y1+T12y2)cos(T21y1+T22y2)]E[(T11y1+T12y2){cos(T21y1)cos(T22y2)−sin(T21y1)sin(T22y2)}]//加法定理E[T11y1cos(T21y1)cos(T22y2)+T12y2cos(T21y1)cos(T22y2)−T11y1sin(T21y1)sin(T22y2)−(T12y2)sin(T21y1)sin(T22y2)]E[T21T11{T21y1cos(T21y1)cos(T22y2)}+T22T12{T22y2cos(T21y1)cos(T22y2)}−T21T11{T21y1sin(T21y1)sin(T22y2)}−T22T12{T22y2sin(T21y1)sin(T22y2)}]E[T21T11{T21y1cos(T21y1)cos(T22y2)−T21y1sin(T21y1)sin(T22y2)}+T22T12{T22y2cos(T21y1)cos(T22y2)−T22y2sin(T21y1)sin(T22y2)}]
ここで文献と同様に,l1=T21y1,l2=T22y2とおくと
l1∼N(T21y1ˉ,T212λ1)およびl2∼N(T22y2ˉ,T222λ2)となっており,これらは独立した変数となる.
E==[xcos(θ)]E[T21T11{l1cos(l1)cos(l2)−l1sin(l1)sin(l2)}+T22T12{l2cos(l1)cos(l2)−l2sin(l1)sin(l2)}]T21T11{E[l1cos(l1)]E[cos(l2)]−E[l1sin(l1)]E[sin(l2)]}+T22T12{E[cos(l1)]E[l2cos(l2)]−E[sin(l1)]E[l2sin(l2)]}
上記の各E[⋅]は計算できるので,もともとのE[xcos(θ)]を計算可能となる.
なお,各E[⋅]の計算は下記参照.
https://zenn.dev/spargel/articles/4a64d0157017cc
例
下記の分布の確率変数に対して,E[xcos(θ)]を計算する(文献に合わせる).
なお,対角化の計算などはMATLABを使用する(手計算面倒なので...).
(xθ)∼N((10.0π/3),(5.01.51.5π/6))
まず,直交行列と固有値を求める.
次に,うえで表記したようにy=T−1xとおいて,μy=TTμxとする.
また,l1,l2の平均値および分散も計算する.
そして,E[l1cos(l1)]などを計算する.
これを用いてE[xcos(θ)]を計算すると,結果が2.8485
となる.
上記の結果は引用文献と一致するので,計算は正しくできたといえるが,モンテカルロ法でも確認すると,2.8481
となる.
当然シード値を変えると答えも変わるが,2.848
までは同じなので,上記の結果は正しく計算できているといってよいかと思う.
おわりに
本記事では混合三角モーメントの計算を書き下した.
記事がだいぶ長くなったので,ほかの形のモーメントの計算については次の記事に譲る.
Discussion