开始使用免费开始使用

模拟 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 过程:
    • 按上述说明,让 ar1 表示 AR 参数数组 [1, \(\small -\phi\)]。目前 MA 参数数组 ma1 仅包含滞后 0 的系数 1。
    • 使用参数 ar1ma1,创建一个 ArmaProcess(ar,ma) 的实例,命名为 AR_object1
    • 从刚创建的对象 AR_object1 中使用 .generate_sample() 方法模拟 1000 个数据点。在一个子图中绘制模拟数据。
  • 对另一个 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()
编辑并运行代码