ARIMA时间序列分析——(一)数据平稳性检验

2023-11-04

时间序列,指的是按时间顺序索引的一系列数据点,是面板数据的一种,属于一维面板数据。

时间序列分析包括用于分析时间序列数据以及提取有意义的统计数据和数据其他特征的方法。

ARIMA模型构建流程:

        1.判断模型的平稳度

        2.差分法对非平稳时间序列进行平稳化处理

        3.模型定阶

本文主要介绍构建模型流程的第一步,即判断模型的平稳度,以近三年的沪深300指数为例:

判断时间序列是否为平稳序列的方式有两种,一是通过单位根检验(如DF、ADF、PP方法等

); 二是通过观察时间序列的自相关(Autocorrelation Coefficient,ACF)和偏自相关(Partial

Autocorrelation Coefficient,PACF)函数图,对于平稳时间序列而言,其自相关或偏自相关系数

一般会在某一阶后变为迅速降低为0左右,而非平稳的时间序列的自相关系数一般则是缓慢下降

(PS:ACF与PACF在平稳序列中可作为模型定阶的参考依据)。

以近三年的沪深300指数为例:

#%% 导入需要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
%matplotlib inline 

#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False

#### 获取数据,从tushare上获取沪深300指数为例
import tushare as ts
token= "输入你的token号"   # 网站 https://tushare.pro/
pro=ts.pro_api(token)

def get_data(code,n=250*3):
    df=pro.index_daily(ts_code=code)
    #将日期设置为索引
    df.index=pd.to_datetime(df.trade_date)
    #最近n日价格走势
    df=df.sort_index()[-n:]
    #只保留收盘价数据
    del df[df.index.name]
    return df.close

df=get_data('000300.SH')


#### 引入statsmodels和scipy.stats用于画QQ和PP图
import scipy.stats as scs
import statsmodels.api as sm
def ts_plot(data, lags=None,title=''):
    if not isinstance(data, pd.Series):   
        data = pd.Series(data)
    with plt.style.context('bmh'):    
        fig = plt.figure(figsize=(10, 8),dpi=300)
        layout = (3, 2)
        ts_ax = plt.subplot2grid(layout, (0, 0))

        acf_ax = plt.subplot2grid(layout, (1, 0))
        pacf_ax = plt.subplot2grid(layout, (1, 1))
        qq_ax = plt.subplot2grid(layout, (2, 0))
        pp_ax = plt.subplot2grid(layout, (2, 1))

        data.plot(ax=ts_ax)
        ts_ax.set_title(title+'时序图')
        smt.graphics.plot_acf(data, lags=lags, ax=acf_ax, alpha=0.5)
        acf_ax.set_title('自相关系数')
        smt.graphics.plot_pacf(data, lags=lags, ax=pacf_ax, alpha=0.5)
        pacf_ax.set_title('偏自相关系数')
        sm.qqplot(data, line='s', ax=qq_ax)
        qq_ax.set_title('QQ 图')        
        scs.probplot(data, sparams=(data.mean(), data.std()), plot=pp_ax)
        pp_ax.set_title('PP 图') 
        plt.tight_layout()
    return



#### 沪深300近三年价格与收益率数据
data=pd.DataFrame(df,columns=['close'])
#对数收益率
data['logret']=np.log(data.close/data.close.shift(1))
#普通收益率
data['ret']=data.close/data.close.shift(1)-1
data=data.dropna()

#### 沪深300股价与收益率的平稳性判断
#法一:单位根检验(利用ADF检验)
print(sm.tsa.stattools.adfuller(data.close)) # 利用statsmodels模块进行ADF检验

from arch.unitroot import ADF # 利用arch.unitroot模块进行ADF检验
import ADF
ADF(data.close)
ADF(data.logret)              # 两种模块计算得到的结果一致


#法二:观察时序图
ts_plot(data.close,lags=30,title='沪深300股价')
#沪深300收益率,对数收益率与算术收益率差异不是很大
ts_plot(data.logret,lags=30,title='沪深300收益率')


通过法一得到的结果:

股价ADF结果如下

(-1.9036374544321113, 0.33035187700494084, 0, 748, {'1%': -3.43912257105195, '5%': -2.8654117005229844, '10%': -2.568831705010152}, 7957.254181584909)

收益率ADF结果如下

(-26.93729155995837, 0.0, 0, 748, {'1%': -3.43912257105195, '5%': -2.8654117005229844, '10%': -2.568831705010152}, -4290.046359288771)

第一个值:表示Test Statistic , 即T值,表示T统计量;第二个值:p-value,即p值,表示T统计量

对应的概率值;大括号中的值,分别表示1%, 5%, 10% 的三个level以及其对应的p-value值,p

值大于5%,则可以认为该数据是不平稳的。通过ADF检验得到股价是不平稳序列,收益率是平稳

序列。

 

通过法二得到的结果:

股价 

收益率:

因此,通过判断自相关系数以及偏自相关系数能够得到,股价为非平稳序列,收益率为平稳序

列。

参考文献:

【Python量化基础】时间序列的自相关性与平稳性

Python实现对数据的ADF检验 - 知乎

张建海, 张棋, 许德合, 等. ARIMA-LSTM 组合模型在基于 SPI 干旱预测中的应用——以青海省为例[J]. 干旱区地理, 2020, 43(4): 1004G1013.

https://en.wikipedia.org/wiki/Time_series

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARIMA时间序列分析——(一)数据平稳性检验 的相关文章

随机推荐

  • JSP页面中,JavaScript可以使用EL表达式吗?

    JSP页面中 JavaScript可以使用EL表达式吗 答案是可以的 而且用途很大 比如我们做分页时 把当前的页 第几页 pageIndex保存在session中 把最后一页 尾页 endPage页保存在session中 如果是首页 当点击
  • 全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等

    文章目录 1 文章引言 2 简述 npmrc 3 配置 npmrc 3 1 npmrc配置文件的优先级 3 2 npmrc设置的命令行 3 3 如何设置 npmrc 4 配置发布组件 5 npm常用命令 6 重要备注 6 1 yarn 6
  • MPP架构

    MPP Massively Parallel Processing 大规模并行处理 面对海量数据和计算时 采用大事化小的思路 对数据进行分割 数据分割后单独存储 数据处理消耗的资源也是相互隔开的 对于MPP数据库来讲 整个数据库由多个完全独
  • 2023计算机毕业设计SSM最新选题之java二手交易平台2ud44

    2023计算机毕业设计SSM最新选题之java二手交易平台2ud44 毕业设计其实不难 主要毕业的时候任务太紧了 所以大家都非常忙没有时间去做 毕业设计还是早做准备比较好 多花点时间也可以做出来的 建议还是自己动手去做 比如先选一个题 这样
  • 目前开源的智能家居服务器,Home Assistant(以下简称HA)是个开源的智能家

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Home Assistant 以下简称HA 是个开源的智能家居平台 开源意味着可以随便拿去用 而且是安全的 可以把家中的智能家居设备整合到HA中 它能够接入的设备非常的多 小米 博联 易微联 特
  • php 原生发邮件,原生php phpmailer 发送邮件 email

    setmail 查询最新可用的邮件 接受者 查询最新可用模板内容 查询最新可用企业邮箱 发送者 functionsetmail data username 24066 qq com data password ntpcbibe data f
  • UI自动化框架设计

    这个框架的话使用了PO分层思想和单用例设计模式然后使用Python selenium进行UI自动化框架设计 框架目录的结构 二 config包当中的config ini文件主要是用来存项目的绝对路径 是为了后续跑用例和生成测试报告做准备 然
  • Chrome浏览器的options参数

    options add argument headless 无头模式 options add argument window size x format width height 直接配置大小和set window size一样 optio
  • Linux:虚拟机配置免密登录和文件同步分发

    记录下 以后照抄就好了 文章目录 ssh免密登录 SCP安全拷贝 rsync同步修改 xsync集群分发 ssh免密登录 免密登录原理 生成公钥和私钥 ssh keygen t rsa后连敲三个回车 将公钥拷贝到要免密登录的目标机器上 遇到
  • 数据结构与算法期末复习总结

    为了方便复习 下面内容摘自 数据结构期末总结 夏日 blog CSDN博客 数据结构期末 目录 绪论 知识点 习题 线性表 知识点 习题 栈和队列 知识点 习题 串 数组和广义表 知识点 树和二叉树 知识点 习题 赫夫曼树及其应用 一步一步
  • R语言学习—添加回归模型拟合线(一)

    回归模型重要的基础或者方法就是回归分析 回归分析是研究一个变量 被解释变量 关于另一个 些 变量 解释变量 的具体依赖关系的计算方法和理论 是建模和分析数据的重要工具 常见的回归分析模型有 线性回归 逻辑回归 多项式回归 逐步回归 线性回归
  • OpenGL-GLSL语言入门教程(1)

    目录 GLSL简介 GLSL的内建变量 顶点着色器变量 gl PointSize gl VertexID 片段着色器变量 gl FragCoord gl FragDepth 参考网站 LearnOpenGL 参考书籍 OpenGL编程指南第
  • IOS 启动画面和图标设置(适配IOS7 and Xcode5)

    关于IOS程序设置启动画面以及图标的设备目前主要为 IPhone设备 和IPad设备 IPhone启动画面以及图标的设置 目前IPhone的分辨率为 320X480 640X960 640X1136 Default png 320X480
  • HTML DOM 利用下拉框实现网页跳转

  • C语言 结构体

    1什么是结构体 结构体是一种集合 它里面包含了多个变量或数组 它们的类型可以相同 也可以不同 每个这样的变量或数组都称为结构体的成员 结构的成员可以是标量 数组 指针 甚至是其他结构体 2结构体的定义 1 定义结构体的一般格式 struct
  • Kotlin入门-没有分号是个有趣的事情

    前言 第一眼看Kotlin的示例代码 突然发现没有分号 这个事情就值得商榷了 看两个范例 范例一 fun sum a Int b Int Int Int 参数 返回值 Int return a b 范例二 fun sum a Int b I
  • Acwing-对称的二叉树

    除了根节点都有一个性质 自己对应的节点是相同的 并且左右儿子 左右和右左分别对称 即根节点的左右两棵子树 每一棵都是左右对称的 Definition for a binary tree node struct TreeNode int va
  • 后台管理系统UI作品

    最近整理完成一个基于layUI的后台管理系统UI 分享交流 有兴趣的留言哈 演示地址 http roywu888 gitee io git
  • html使用ajax实现文件分片上传

    在实用中 经常有上传文件的操作 但是上传的文件有时会很大 所以需要将文件分片 然后一片一片上传到后台 其实前端写法跟普通的文件上传没有区别 只是需要把文件切割一下就好了 下面是一个例子 代码 结果 js部分 获取文件后就开始分片上传 有两个
  • ARIMA时间序列分析——(一)数据平稳性检验

    时间序列 指的是按时间顺序索引的一系列数据点 是面板数据的一种 属于一维面板数据 时间序列分析包括用于分析时间序列数据以及提取有意义的统计数据和数据其他特征的方法 ARIMA模型构建流程 1 判断模型的平稳度 2 差分法对非平稳时间序列进行