{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ARMA模型" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 原理讲解\n", "\n", "为了使模型更好地拟合数据,可以将 $AR(p)$ 与 $MA(q)$ 结合起来,得到 $ARMA(p,q)$ :\n", "\n", "$$y_{t}=\\beta_{0}+\\beta_{1} y_{t-1}+\\cdots+\\beta_{p} y_{t-p}+\\varepsilon_{t}+\\theta_{1} \\varepsilon_{t-1}+\\cdots+\\theta_{q} \\varepsilon_{t-q}\\tag{1}$$\n", "\n", "其中,{$\\varepsilon _t$} 为白噪声。在给定 $\\left\\{y_{1}, y_{2}, \\cdots, y_{p}\\right\\}$ 与“$\\varepsilon_{0}=\\varepsilon_{-1}=\\cdots=\\varepsilon_{-q+1}=0$”的条件下,可以使用条件 MLE 来估计 $ARMA(p,q)$。为了估计 $ARMA(p,q)$,首先必须确定 $(p,q)$,而经济理论通常不能提供这些信息,故只能根据数据来估计 $(p,q)$。\n", "在实践中,常常先考察数据的自相关函数(ACF)与偏自相关函数(PACF),以判断是否存在 p=0 或 q=0 的情形。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## statsmodels 库实现" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
ARMA Model Results
Dep. Variable: sz No. Observations: 460
Model: ARMA(1, 1) Log Likelihood -2294.749
Method: css-mle S.D. of innovations 35.352
Date: Fri, 29 May 2020 AIC 4597.498
Time: 21:03:01 BIC 4614.023
Sample: 0 HQIC 4604.006
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
const 2987.0655 142.111 21.019 0.000 2708.533 3265.597
ar.L1.sz 0.9902 0.006 161.182 0.000 0.978 1.002
ma.L1.sz 0.0012 0.047 0.025 0.980 -0.090 0.093
\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Roots
Real Imaginary Modulus Frequency
AR.1 1.0099 +0.0000j 1.0099 0.0000
MA.1 -842.3029 +0.0000j 842.3029 0.5000
" ], "text/plain": [ "\n", "\"\"\"\n", " ARMA Model Results \n", "==============================================================================\n", "Dep. Variable: sz No. Observations: 460\n", "Model: ARMA(1, 1) Log Likelihood -2294.749\n", "Method: css-mle S.D. of innovations 35.352\n", "Date: Fri, 29 May 2020 AIC 4597.498\n", "Time: 21:03:01 BIC 4614.023\n", "Sample: 0 HQIC 4604.006\n", " \n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "const 2987.0655 142.111 21.019 0.000 2708.533 3265.597\n", "ar.L1.sz 0.9902 0.006 161.182 0.000 0.978 1.002\n", "ma.L1.sz 0.0012 0.047 0.025 0.980 -0.090 0.093\n", " Roots \n", "=============================================================================\n", " Real Imaginary Modulus Frequency\n", "-----------------------------------------------------------------------------\n", "AR.1 1.0099 +0.0000j 1.0099 0.0000\n", "MA.1 -842.3029 +0.0000j 842.3029 0.5000\n", "-----------------------------------------------------------------------------\n", "\"\"\"" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from statsmodels.tsa.arima_model import ARMA\n", "import pandas as pd\n", "\n", "data = pd.read_excel('../数据/上证指数与沪深300.xlsx')\n", "res = ARMA(data['sz'], order=(1,1)).fit()\n", "res.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## matlab 实现\n", "可以参考 [MA 模型](https://nbviewer.jupyter.org/github/lei940324/econometrics/blob/master/金融时间序列/移动平均(MA)模型.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Eviews 估计\n", "估计方程 `y c ma(p) ar(q)`\n", "
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 4 }