НачатьНачать бесплатно

Симуляция временного ряда MA(1)

Вы смоделируете и визуализируете несколько временных рядов MA(1) с различными значениями параметра \(\small \theta\), используя модуль arima_process из библиотеки statsmodels — так же, как вы делали это в предыдущей главе для моделей AR(1). Вы рассмотрите модель MA(1) с большим положительным и большим отрицательным значением \(\small \theta\).

Как и в предыдущей главе, при задании коэффициентов необходимо включить коэффициент при нулевом лаге, равный 1. Однако, в отличие от моделей AR, знак коэффициентов MA соответствует ожидаемому. Например, для процесса MA(1) с \(\small \theta=-0{,}9\) массив параметров MA будет выглядеть так: ma = np.array([1, -0.9])

Это упражнение является частью курса

Анализ временных рядов на Python

Посмотреть курс

Инструкции к упражнению

  • Импортируйте класс ArmaProcess из модуля arima_process.
  • Постройте графики смоделированных процессов MA(1):
    • Задайте ma1 как массив параметров MA [1, \(\small \theta\)] в соответствии с описанием выше. Массив параметров AR должен содержать только коэффициент при нулевом лаге, равный 1.
    • Используя параметры ar1 и ma1, создайте экземпляр класса ArmaProcess(ar,ma) с именем MA_object1.
    • Смоделируйте 1000 точек данных на основе созданного объекта MA_object1, применив метод .generate_sample(). Отобразите результат на подграфике.
  • Повторите те же шаги для другого значения параметра 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()
Редактировать и запускать код