AR(1) と MA(無限) の同等性
MAモデルとARモデルの関係をよりよく理解するために、適切なパラメータを用いると AR(1) モデルが MA(\(\small \infty\)) モデルと同等であることを示します。
30期という大きなラグ数で、パラメータが \(\small 0.8, 0.8^2, 0.8^3, \ldots \) の MA モデルをシミュレーションし、\(\small \phi=0.8\) の AR(1) モデルと自己相関関数(ACF)が同じになることを確認します。
補足: 数 x を指数 n 乗するには、x**n の形式を使います。
この演習はコースの一部です
Pythonで学ぶ時系列解析
演習の手順
- statsmodels からデータのシミュレーションと ACF のプロットに必要なモジュールをインポートします
- リスト内包表記を使って、指数的に減衰する MA パラメータのリストを作成します:\(\small 1, 0.8, 0.8^2, 0.8^3, \ldots\)
- MA(30) モデルの観測値を 5000 個シミュレーションします
- シミュレーションした系列の ACF をプロットします
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# import the modules for simulating data and plotting the ACF
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.graphics.tsaplots import plot_acf
# Build a list MA parameters
ma = [___ for i in range(30)]
# Simulate the MA(30) model
ar = np.array([1])
AR_object = ArmaProcess(ar, ___)
simulated_data = ___.generate_sample(nsample=5000)
# Plot the ACF
plot_acf(___, lags=30)
plt.show()