AR(1) 時系列のシミュレーション
この演習では、statsmodels の arima_process モジュールを使って、パラメータ \(\small \phi\) の異なる複数の AR(1) 時系列をシミュレーションしてプロットします。正の大きな \(\small \phi\) と負の大きな \(\small \phi\) の AR(1) モデルを扱いますが、ぜひご自身のパラメータでも試してみてください。
arima_process モジュールを使う際には、いくつかの約束事があります。第一に、これらのルーチンは AR モデルと MA モデルの両方を扱えるように一般化されています。MA モデルは次のセクションで扱いますので、ここでは MA の部分は無視してかまいません。第二に、係数を入力するときは、遅延 0 の係数 1 を必ず含め、その他の係数の符号は(信号処理の時系列文献に合わせるために)これまで使ってきたものと逆になります。たとえば \(\small \phi=0.9\) の AR(1) 過程では、AR パラメータを表す配列は ar = np.array([1, -0.9]) となります。
この演習はコースの一部です
Pythonで学ぶ時系列解析
演習の手順
arima_processモジュールからクラスArmaProcessをインポートします。- シミュレーションした AR 過程をプロットします。
- 上記の説明どおり、AR パラメータ配列 [1, \(\small -\phi\)] を表す
ar1を用意します。MA パラメータ配列ma1は、当面は遅延 0 の係数 1 のみを持ちます。 - パラメータ
ar1とma1を使って、クラスArmaProcess(ar,ma)のインスタンスAR_object1を作成します。 - 作成したオブジェクト
AR_object1からメソッド.generate_sample()を使って 1000 点のデータをシミュレーションし、サブプロットにプロットします。
- 上記の説明どおり、AR パラメータ配列 [1, \(\small -\phi\)] を表す
- 別の AR パラメータについても同様に繰り返します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# import the module for simulating data
from statsmodels.tsa.arima_process import ArmaProcess
# Plot 1: AR parameter = +0.9
plt.subplot(2,1,1)
ar1 = np.array([1, ____])
ma1 = np.array([1])
AR_object1 = ArmaProcess(____, ____)
simulated_data_1 = AR_object1.generate_sample(nsample=1000)
plt.plot(simulated_data_1)
# Plot 2: AR parameter = -0.9
plt.subplot(2,1,2)
ar2 = np.array([1, ____])
ma2 = np.array([1])
AR_object2 = ArmaProcess(____, ____)
simulated_data_2 = AR_object2.generate_sample(nsample=1000)
plt.plot(simulated_data_2)
plt.show()