MA(1) 時系列のシミュレーション
この課題では、statsmodels の arima_process モジュールを使って、パラメータ \(\small \theta\) が異なる複数の MA(1) 時系列をシミュレーションし、プロットします。前の章で AR(1) モデルに対して行ったのと同様です。ここでは、\(\small \theta\) が大きい正の値の場合と大きい負の値の場合を確認します。
前の章と同様に、係数を入力する際はラグ 0 の係数 1 を含める必要があります。ただし、AR モデルの章と異なり、MA 係数の符号は直感どおりになります。たとえば、\(\small \theta=-0.9\) の MA(1) 過程では、MA パラメータを表す配列は ma = np.array([1, -0.9]) となります。
この演習はコースの一部です
Pythonで学ぶ時系列解析
演習の手順
arima_processモジュールからクラスArmaProcessをインポートします。- シミュレーションした MA(1) 過程をプロットします。
- 上で説明したとおり、
ma1は MA パラメータ [1, \(\small \theta\)] の配列を表します。AR パラメータ配列はラグ 0 の係数 1 のみを含みます。 - パラメータ
ar1とma1を使って、ArmaProcess(ar,ma)クラスのインスタンスMA_object1を作成します。 - 直前に作成したオブジェクト
MA_object1から、メソッド.generate_sample()を使って 1000 点をシミュレーションし、サブプロットにプロットします。
- 上で説明したとおり、
- もう一方の MA パラメータについても同様に繰り返します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# import the module for simulating data
from statsmodels.tsa.arima_process import ArmaProcess
# Plot 1: MA parameter = -0.9
plt.subplot(2,1,1)
ar1 = np.array([1])
ma1 = np.array([1, ____])
MA_object1 = ArmaProcess(____, ____)
simulated_data_1 = MA_object1.generate_sample(nsample=1000)
plt.plot(simulated_data_1)
# Plot 2: MA parameter = +0.9
plt.subplot(2,1,2)
ar2 = np.array([1])
ma2 = np.array([1, ____])
MA_object2 = ArmaProcess(____, ____)
simulated_data_2 = MA_object2.generate_sample(nsample=1000)
plt.plot(simulated_data_2)
plt.show()