Симуляция временного ряда 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()