Как установить модель ARMA-GARCH в Python

Я пытаюсь сделать модель ARMA-GARCH на python и использую пакет arch.

Но в пакете арки я не могу найти среднюю модель ARMA.

Я попытался использовать среднюю модель ARX и пусть lags = [1,1], но сводка не похожа на модель ARMA.

Включает ли этот пакет среднюю модель ARMA?

0 ответов

Я изучил эту технику от Джейсона Браунли, доктора философии и автора более 18 книг, касающихся прикладного машинного обучения, математики и статистики:

Чтобы отдать должное, я цитирую свой источник знаний, полученных мной с помощью этого материала:

Цитирование справочника:

Введение в прогнозирование временных рядов с помощью Python© Copyright 2020 Jason Brownlee. Все права защищены. Версия: v1.10

Джейсон Браунли, доктор философии в области машинного обучения

https://machinelearningmastery.com/develop-arch-and-garch-models-for-time-series-forecasting-in-python/

Спасибо, Джейсон, за бесчисленные часы и, без сомнения, головные боли и напряжение глаз. Вы научили меня, что машинное обучение может быть интересным!

Модели ARCH и GARCH в Python

# create a simple white noise with increasing variance
from random import gauss
from random import seed
from matplotlib import pyplot

# seed pseudorandom number generator
seed(1)

# create dataset
data = [gauss(0, i*0.01) for i in range(0,100)]

# plot
pyplot.plot(data)
pyplot.show()

# create dataset
data = [gauss(0, i*0.01) for i in range(1,100+1)]

# check correlations of squared observations
from random import gauss
from random import seed
from matplotlib import pyplot
from statsmodels.graphics.tsaplots import plot_acf

# seed pseudorandom number generator
seed(1)

# create dataset
data = [gauss(0, i*0.01) for i in range(0,100)]

# square the dataset
squared_data = [x**2 for x in data]

# create acf plot
plot_acf(np.array(squared_data))
pyplot.show()

# split into train/test
n_test = 10
train, test = data[:-n_test], data[-n_test:]

# example of ARCH model
from random import gauss
from random import seed
from matplotlib import pyplot
from arch import arch_model

# seed pseudorandom number generator
seed(1)

# create dataset
data = [gauss(0, i*0.01) for i in range(0,100)]

# split into train/test
n_test = 10
train, test = data[:-n_test], data[-n_test:]

# define model
model = arch_model(train, mean='Zero', vol='ARCH', p=15)

# fit model
model_fit = model.fit()

# forecast the test set
yhat = model_fit.forecast(horizon=n_test)

# plot the actual variance
var = [i*0.01 for i in range(0,100)]
pyplot.plot(var[-n_test:])

# plot forecast variance
pyplot.plot(yhat.variance.values[-1, :])
pyplot.show()

# example of ARCH model
# seed pseudorandom number generator
seed(1)

# create dataset
data = [gauss(0, i*0.01) for i in range(0,100)]

# split into train/test
n_test = 10
train, test = data[:-n_test], data[-n_test:]

# define model
model = arch_model(train, mean='Zero', vol='GARCH', p=15, q=15)

# fit model
model_fit = model.fit()

# forecast the test set
yhat = model_fit.forecast(horizon=n_test)

# plot the actual variance
var = [i*0.01 for i in range(0,100)]
pyplot.plot(var[-n_test:])

# plot forecast variance
pyplot.plot(yhat.variance.values[-1, :])
pyplot.show()

# define model
model = arch_model(train, mean='Zero', vol='GARCH', p=15, q=15)

и увидеть результаты очень похожи, но с чуть более чем вдвое большим количеством итераций...

Цитирование справочника:

Введение в прогнозирование временных рядов с помощью Python© Copyright 2020 Jason Brownlee. Все права защищены. Версия: v1.10

Джейсон Браунли, доктор философии в области машинного обучения

https://machinelearningmastery.com/develop-arch-and-garch-models-for-time-series-forecasting-in-python/

Другие вопросы по тегам