金融时间序列分析:5. AR模型实例(Python)

1. 前言

本文简单谈谈如何用Python构建AR模型,并进行数据预测。 
本文承接前文: 

金融时间序列分析:3. First Demo By Python

这篇文章介绍了用Python获取数据、数据预处理、稳定性分析、以及定阶。在此,本文就不再介绍这些内容,直接进入AR模型部分。

金融时间序列分析:4. AR模型

 

2. 定阶

在之前的文章简单介绍了定阶这个过程,这里在详细介绍下。 
在前一篇文章中,我说:

简单的理解就是找到时间序列的周期,比如说气温这一项,就有明显的年度周期性,前几年的同期数据对预测当年的气温有极大的参考意义。

从统计学上讲就是寻找是得ACF(样本自相关系数)最大的时间间隔。

在学习完AR模型后,我们进一步理解就是要采用多少阶的模型比如AR(1), AR(2)….

看下ACF和PACF: 

从图中可以看出:1, 2, 4, 8, 20都可以采用。 
但是有一点,从AR模型公式看,当阶越大,数据处理难度越高。

Python也提供一个定阶的函数adfuller:

def adf_test(ts):
    adftest = adfuller(ts, autolag='AIC')
    adf_res = pd.Series(adftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])

    for key, value in adftest[4].items():
        adf_res['Critical Value (%s)' % key] = value
    return adf_res

通过int(adf_res[‘Lags Used’])获取响应的阶数。

 

3. AR模型预测

Python statsmodels.tsa.arima_model包中提供ARMA,ARIMA等模型。 
具体使用方法如下:

from statsmodels.tsa.arima_model import ARMA, ARIMA

def draw_ar(ts, w):
    arma = ARMA(ts, order=(w,0)).fit(disp=-1)
    ts_predict = arma.predict()

    plt.clf()
    plt.plot(ts_predict, label="PDT")
    plt.plot(ts, label = "ORG")
    plt.legend(loc="best")
    plt.title("AR Test %s" % w)
    plt.savefig("./PDF/test_ar_"+ str(w) +".pdf", format='pdf')

 

其中w是传入的阶数。 
输出如下: 

 

 

预测的结果差强人意……

 

4. 置信水平分析

免责声明:信息仅供参考,不构成投资及交易建议。投资者据此操作,风险自担。
如果觉得文章对你有用,请随意赞赏收藏
相关推荐
相关下载
登录后评论
Copyright © 2019 宽客在线