如何在Python中拟合ARMA-GARCH模型

洪子軒*_*洪子軒 8 python arch

我正在尝试用python创建一个ARMA-GARCH模型,并且使用了arch包。

但是在arch软件包中,我找不到ARMA均值模型。

我尝试使用ARX均值模型,并让lags = [1,1],但摘要看起来并不像ARMA模型。

该软件包是否包括ARMA平均模型?

Fis*_*Jay 0

我从 Jason Brownlee 博士那里学到了这项技术,他是 18 多本与应用机器学习、数学和统计学相关的书籍的作者:

\n

为了给予适当的认可,我引用了我通过本材料获得的学习来源:

\n

引用参考书:

\n

使用 Python 进行时间序列预测 \xc2\xa9 简介 版权所有 2020 Jason Brownlee。版权所有。版本:v1.10

\n

Jason Brownlee 博士,精通机器学习

\n

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

\n

感谢杰森花了无数的时间,毫无疑问,头痛和眼睛疲劳。您教会了我机器学习可以很有趣!

\n

Python 中的 ARCH 和 GARCH 模型

\n
# create a simple white noise with increasing variance\nfrom random import gauss\nfrom random import seed\nfrom matplotlib import pyplot\n\n# seed pseudorandom number generator\nseed(1)\n\n# create dataset\ndata = [gauss(0, i*0.01) for i in range(0,100)]\n\n# plot\npyplot.plot(data)\npyplot.show()\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n
# create dataset\ndata = [gauss(0, i*0.01) for i in range(1,100+1)]\n\n# check correlations of squared observations\nfrom random import gauss\nfrom random import seed\nfrom matplotlib import pyplot\nfrom statsmodels.graphics.tsaplots import plot_acf\n\n# seed pseudorandom number generator\nseed(1)\n\n# create dataset\ndata = [gauss(0, i*0.01) for i in range(0,100)]\n\n# square the dataset\nsquared_data = [x**2 for x in data]\n\n# create acf plot\nplot_acf(np.array(squared_data))\npyplot.show()\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n
# split into train/test\nn_test = 10\ntrain, test = data[:-n_test], data[-n_test:]\n\n# example of ARCH model\nfrom random import gauss\nfrom random import seed\nfrom matplotlib import pyplot\nfrom arch import arch_model\n\n# seed pseudorandom number generator\nseed(1)\n\n# create dataset\ndata = [gauss(0, i*0.01) for i in range(0,100)]\n\n# split into train/test\nn_test = 10\ntrain, test = data[:-n_test], data[-n_test:]\n\n# define model\nmodel = arch_model(train, mean=\'Zero\', vol=\'ARCH\', p=15)\n\n# fit model\nmodel_fit = model.fit()\n\n# forecast the test set\nyhat = model_fit.forecast(horizon=n_test)\n\n# plot the actual variance\nvar = [i*0.01 for i in range(0,100)]\npyplot.plot(var[-n_test:])\n\n# plot forecast variance\npyplot.plot(yhat.variance.values[-1, :])\npyplot.show()\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

在此输入图像描述

\n
# example of ARCH model\n# seed pseudorandom number generator\nseed(1)\n\n# create dataset\ndata = [gauss(0, i*0.01) for i in range(0,100)]\n\n# split into train/test\nn_test = 10\ntrain, test = data[:-n_test], data[-n_test:]\n\n# define model\nmodel = arch_model(train, mean=\'Zero\', vol=\'GARCH\', p=15, q=15)\n\n# fit model\nmodel_fit = model.fit()\n\n# forecast the test set\nyhat = model_fit.forecast(horizon=n_test)\n\n# plot the actual variance\nvar = [i*0.01 for i in range(0,100)]\npyplot.plot(var[-n_test:])\n\n# plot forecast variance\npyplot.plot(yhat.variance.values[-1, :])\npyplot.show()\n\n# define model\nmodel = arch_model(train, mean=\'Zero\', vol=\'GARCH\', p=15, q=15)\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

并看到结果非常相似,但是迭代次数略多于两倍......

\n

在此输入图像描述

\n

引用参考书:

\n

使用 Python 进行时间序列预测简介\n\xc2\xa9 版权所有 2020 Jason Brownlee。版权所有。版本:v1.10

\n

Jason Brownlee 博士,精通机器学习

\n

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

\n