模拟 MA(1) 时间序列
您将使用 statsmodels 中的 arima_process 模块,像上一章对 AR(1) 模型所做的那样,模拟并绘制几组 MA(1) 时间序列,每组采用不同的参数 \(\small \theta\)。您将分别查看一个 \(\small \theta\) 为较大正值和较大负值的 MA(1) 模型。
与上一章一样,在输入系数时需要包含零滞后系数 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()