太陽黒点の N 個のデータ ポイントの時系列があり、これらのポイントのサブセットに基づいて、シリーズの残りのポイントを予測し、正確性を比較したいと考えています。
私は Matlab を使用した線形予測を紹介したばかりなので、ループ内で次のコード セグメントを使用して、トレーニング セットの外側のすべてのポイントが指定されたデータの終わりまで予測されるようにすることにしました。
%x is the data, training set is some subset of x starting from beginning
%'unknown' is the number of points to extend the prediction over starting from the
%end of the training set (i.e. difference in length of training set and data vectors)
%x_pred is set to x initially
p = length(training_set);
coeffs = lpc(training_set, p);
for i=1:unknown
nextValue = -coeffs(2:end) * x_pred(end-unknown-1+i:-1:end-unknown-1+i-p+1)';
x_pred(end-unknown+i) = nextValue;
end
error = norm(x - x_pred)
これに関して 3 つの質問があります。
1)これは私が説明したことを適切に行いますか?何百ものポイントを持つデータセットの最後の 20 ポイントのみを予測すると、エラーがかなり大きく (>100) 見えるので、質問します。
2) lpc の 2 番目の引数を正しく解釈していますか? つまり、次のポイントを予測する際に使用するポイントの「順序」またはむしろ数を意味しますか?
3) これが Matlab に、ループを置き換えるために呼び出すことができるより効率的な単一行関数がある場合、全体的なデータのサブセットをトレーニング セットとして指定して、必要なすべての予測を計算するだけですか?
lpc Matlab チュートリアルを調べてみましたが、必要なニーズを説明したように、予測を行うようには見えませんでした。また、Matlab で aryule() を使用して数値シリーズを拡張する方法も使用していますか? 参考までに。