开始使用免费开始使用

模拟 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。
    • 使用参数 ar1ma1 创建 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()
编辑并运行代码