状態空間モデル

# はじめに
[明治大学総合数理学部 Advent Calendar 2017](https://qiita.com/advent-calendar/2017/meiji-ims)の12日目の記事．４人目として初参戦だけど，何書こうかなあと思って，12月はデータ同化手法を連載していこうと決めた．というわけで今日は基礎である状態空間モデルと分布について．今日はコードはないのでだいぶ寂しい．


# 前提知識
- 微分方程式基礎
- 確率・統計基礎


# 表記法
- ボールド体$\mathbf{a}$というように表したら，ベクトルを意味する．


# 導入
状態空間モデルとか言うと難しく聞こえるけど，簡単に言うと状態を表すモデルだよっていうこと．状態空間モデルは次の２本のモデルのこと．

```math
\begin{align}
\mathbf{x}_t = f_t(\mathbf{x}_{t-1})+\mathbf{v}_t,\ \mathbf{v}_t\sim p(\mathbf{v}_t)\\
\mathbf{y}_t = h_t(\mathbf{x}_t)+\mathbf{w}_t,\ \mathbf{w}_t\sim p(\mathbf{w}_t)
\end{align}
```

上の式をシステムモデル（状態モデル），下の式を観測モデルという．これらについてここからは順に説明していく．


# システムモデル
## 決定論的シミュレーション
シミュレーションには決定論的シミュレーションと確率論的シミュレーションがある．決定論的とは，値が１つに定まること．いわば，何回やったところで同じ結果が得られるシミュレーションのこと．それに対して，確率論的っていうのは，シミュレーションごとに結果が異なる，要するに不確実性があることである．式で表すと，決定論的っていうのは

$$\mathbf{x}\_t=f\_t(\mathbf{x}\_{t-1})$$

で表せるということである．ここで，$\mathbf{x}\_t$は時刻$t$における状態変数の値である．見てわかるように，決定論的では，初期値$\mathbf{x}\_0$さえ与えれば，以降の状態の値$\mathbf{x}\_t$は一意に定まる．図で表すとこんな感じである．

![decision_simulation.png](https://qiita-image-store.s3.amazonaws.com/0/218271/fcfcfa06-4b6d-6c6f-96f5-c67b1d2e1766.png)

## 確率論的シミュレーション
それに対して，確率論的シミュレーションとは，次の状態が確率的に決まるということである．すなわち，決定論的な式にノイズが加わると考えれば良く，

$$\mathbf{x}\_t=f\_t(\mathbf{x}\_{t-1})+\mathbf{v}\_t$$

で表せる．ここで，$\mathbf{v}\_t$はシステムノイズ（状態ノイズ）と呼ばれるもので，ある確率分布$p(\mathbf{v}\_t)$に従って得られると考える．図で表すとこんな感じである．

![propability_simulation.png](https://qiita-image-store.s3.amazonaws.com/0/218271/0bf71e9b-b90e-4a6a-e116-3d4fd0ffb474.png)

実際の真の状態$\mathbf{x}\_t$が現象として現れているのは珍しいことであるし，決定論的に時間発展しない場合が多い．統計量として期待値だけを得たいというのであれば決定論的シミュレーションでも十分意味を持つが，どれぐらいバラツキがあるかという分散や他の統計量を考えていかねばならない場合は多々ある．また，ノイズの分布が対称性があるとは限らないので，期待値を得るにも決定論的ではいけない場合がある．
例えば，ある感染症の広がりを考えてみる．感染症患者の割合を$I$，非感染者の割合を$S$としよう（問題の設定上，各個体はこの２状態のどちらかを取るとする）．すると，次の時刻における感染者の割合Sは，

$$\frac{dS}{dt}=\beta SI$$

の微分方程式モデルで表せすことが多い（これをSIモデルという，$\beta$は単位時間単位感染個体あたりの感染率である）．オイラーの前進差分を適用すると，

$$S\_{t} = \beta\Delta\_t S\_{t-1}I\_{t-1}$$

である．しかし，決定論的に感染者数が増えていくだろうか．答えはノーである．何らかのノイズ（確率的揺らぎ）が加わって増えていくのが妥当である（どれぐらいだろうと感染者数を見積もりたい時は決定論的でも有意義である）．こういった揺らぎを考慮して考えていこうというのがシステムモデルの発想である．言い換えると，（初期値や）時間発展の不確実性を考えていこうということである．
まとめると，
- システムモデルは，状態の時間発展を表すもの
- システムモデルは，時間発展の不確実性と初期値の不確実性を考慮したもの


# 観測モデル
さて，システムモデルによってデータ列$\\{\mathbf{x}\_t\\}$が得られるが，これを観測データ列$\\{\mathbf{y}\_t\\}$と比較することを考える．しかし，システムの状態と観測の状態が一致するとは限らない．例えば，考えたいシステムの状態がある物体の加速度と速度だったとしても，観測は位置しか得られていないという場合が考えられる．言い換えると，システムの変数の性質と観測の変数の性質が異なっているのである．そのため，システム変数を観測変数と同じものに変換して比べてやらねばならない．これを決定論的に考えると，

$$\mathbf{y}\_t = h\_t(\mathbf{x}\_t)$$

ということである．ここで，$h_t$を観測演算子という．例えば，状態変数が$x$方向の速度$u\_t$と$y$方向の速度$v\_t$で，得られた観測が速度の大きさ$V\_t$だったとしたら，

$$h(u\_t,v\_t)=\sqrt{u\_t^2+v\_t^2}$$

としてやれば良い．
ここで，また確率論的な議論をする．システムの時間発展で得られた状態変数$\mathbf{x}\_t$から，ずれることなく観測$\mathbf{y}\_t$が得られるとは限らない．モデルが現実を再現しきれない部分が生じうるということである．例えばその国の経済状態をGDPが適切に表せているかというとそうとは限らない．観測ごとにずれがあって然るべきである．これをノイズと考え，

$$\mathbf{y}\_t = h\_t(\mathbf{x}\_t) + \mathbf{w}\_t$$

としたものが観測モデルである．ここで，$\mathbf{w}\_t$は観測ノイズと言われ，ある分布$p(\mathbf{w}\_t)$に従って得られると考える．
まとめると，
- 観測モデルは，システム変数と観測変数の関係を表したもの
- 観測モデルは，シミュレーションモデルの不確実性（これを表現誤差という）と測定誤差を考慮したもの


# 状態空間モデル
結果，状態空間モデルは，

```math
\begin{align}
\mathbf{x}_t = f_t(\mathbf{x}_{t-1})+\mathbf{v}_t,\ \mathbf{v}_t\sim p(\mathbf{v}_t)\\
\mathbf{y}_t = h_t(\mathbf{x}_t)+\mathbf{w}_t,\ \mathbf{w}_t\sim p(\mathbf{w}_t)
\end{align}
```

のように表せる（時系列の本だと非線形・非ガウス状態空間モデルと呼ばれている）．

# 参考文献
1. 樋口知之編著，上野玄太・中野慎也・中村和幸・吉田亮著，データ同化入門ー次世代のシミュレーション技術ー，朝倉書店，2011．