Lorenz モデルの推定

本ページでは、MCDC ツールによるモデル推定の実行例として、Lorenz モデルに従う観測データ系列のモデル推定を行う手順を紹介します。

Lorenz 方程式は非線形方程式の一つで、ここでは、Lorenz 方程式をもとに以下の非線形状態空間モデルを考えます。

状態遷移関数
x1(t) = (Sigma * x2(t-1) * dt + x1(t-1) * (1 - Sigma * dt))   + sqrt(q1) * randn;
x2(t) = (x1(t-1) * (Rho - y1(t-1))) * dt + x2(t-1) * (1 - dt) + sqrt(q2) * randn;
観測関数
y1(t) = (x1(t-1) * x2(t-1) * dt) + y1(t-1) * (1 - Beta * dt)  + sqrt(r1) * randn;
y2(t) = Alpha0 * x1(t-1) .^ 2                                 + sqrt(r2) * randn;
y3(t) = Alpha0 * x2(t-1) .^ 2                                 + sqrt(r3) * randn;

ただし Sigma, Rho, Beta, Alpha0 はモデルパラメータであり、q, r は系列に加えられるノイズの大きさを制御するパラメータです。dt は時間間隔です。

この実験では、Lorenz モデルから生成された観測データ系列を与えて、モデル推定を行い、推定されたモデルの観測データ系列への当てはめを確認します。モデルパラメータは以下のように設定しました。

パラメータ名内容設定値
T系列の長さ1,000
Sigmaモデルパラメータ10
Rhoモデルパラメータ28
Betaモデルパラメータ8/3
Alpha0モデルパラメータ1
(q1, q2)状態遷移関数に加えられるノイズの大きさ(1e-1, 1e-1)
(r1, r2, r3)観測関数に加えられるノイズの大きさ(1e-1, 1e-1, 1e-1)
dt時間間隔1e-2

実験プログラムの起動

本実験用のソースコードは samples/LorenzModelPMCMC2Estimation.m です。

実験プログラムを起動するには、Matlab で以下のように実行します。

addpath('samples');
LorenzModelPMCMC2Estimation;

モデル推定パラメータ

実験に用いたパラメータは以下のとおりです。

項目設定値
状態空間の次元数2
状態空間のグリッドの範囲各軸について -30 から 30 まで 2.0 刻みに設定
状態遷移の平均値関数の初期値 (アンカーモデル)
@(x) (Sigma .* x(2,:) .* dt + x(1,:) .* (1 - Sigma .* dt)),  ...
@(x) (x(1,:) .* (Rho - x(3,:)) .* dt + x(2,:) .* (1 - dt))   ...
状態遷移の分散共分散関数状態空間の x1 軸方向について RBF カーネルを利用。x2 軸方向は独立とした
観測の平均値関数の初期値 (アンカーモデル)
@(x) ((x(1,:) .* x(2,:) .* dt) + x(3,:) .* (1 - Beta * dt)), ...
@(x) (Alpha0 * x(1,:) .^ 2),                                 ...
@(x) (Alpha0 * x(2,:) .^ 2)                                  ...
観測の分散共分散関数状態空間の x1 軸方向について RBF カーネルを利用。x2 軸方向は独立とした
粒子フィルタで用いる粒子数500
MCMC 反復回数2,000

実行結果

推定モデルを用いて観測データ系列を推定した結果を以下のグラフに示します。赤色の実線が観測データ、青色の実線が推定モデルによる推定平均です。青色の破線は推定平均±標準偏差の幅を表します。

観測データ系列の推定結果 (順に y1, y2, y3)

MCMC iteration ごとの推定モデルの対数尤度を次のグラフに示します。

推定モデルの対数尤度

この実験を行った計算機環境と実行時間は以下のとおりです。

項目
CPUIntel Xeon X5680 @ 3.33GHz
Memory48GB
MCMC iteration あたりの平均所要時間302.979 秒

考察

Lorenz model の推定では、真のモデルに等しいアンカーモデルを設定しているため、2 回目以降の MCMC iteration の結果はすべて棄却されています。 推定モデルは観測データ系列を比較的よく表現できていますが、これは真のモデルをアンカーモデルにしているためと考えられます。