次のMatlabの観察には非常に困惑しています。
私の問題では、離散的にサンプリングされた入出力データから ARX/ARMAX モデルを推定しようとしています。コマンドラインで線形モデルを識別するためのMatlabのガイドに従っています(システム識別ツールボックスを使用)
- 私のデータセットは 980 の入力と出力のペア (実験) で、サンプリング時間は
Ts = 10
2 秒 (入力 2 つ、出力 1 つ) です。my_data
私はデータを 490 回の実験の 2 つのサブセットに分割しました:experimental
とvalidation
. - 実行
delayest(my_data)
すると、どの入力にも遅延がないことがわかります。したがってnk1=0
、 とnk2=0
. - と で注文を識別すると
selstruc
、、 、 の注文をarxstruc
選択できます。na
nb1
nb2
- システムの初期条件をゼロに設定
opt=armaxOptions('InitialCondition','z')
しました (Matlab で推定変数として扱うことはありません)。
上記のすべてを考慮して、私は実行します
my_model = arx(experimental,[6,[2,5],[0,0]],opt)
コマンドラインで次のモデルを提供します(pastebinのリンク)。
experimental
上記のリンクから下にスクロールすると、データへの適合がかなり良好であることがわかります。
そして、ここに私の質問があります:
サブセットを使用してデータを検証する場合は、次のコマンドvalidation
で比較を実行します。compare
% the model had zero initial condition as well
opt=compareOptions('InitialCondition','z');
[~,fit_vector,~]=compare(validation,my_model,opt);
disp(num2str(cell2mat(fit_vector)))
これは興味深いことです。表示された数値が-109.626 %
適切になりました。
arx
このコマンドの正確な動作を知っている人はいますか? (上記の貼り付けリンクで)モデルを生成するときのフィットとコマンドを使用するときのフィットとの間にこのような不一致があるのはなぜcompare
ですか?experimental
異なるデータセットとであっvalidation
ても、それらは両方とも同じファミリの入力 (入力 1 の異なる持続時間と振幅のパルス、入力 2 は外因性入力) に由来するため、非常に奇妙に感じます。