Python时间序列处理之ARIMA模型的使用讲解
ARIMA模型
ARIMA模型的全称是自回归移动平均模型,是用来预测时间序列的一种常用的统计模型,一般记作ARIMA(p,d,q)。
ARIMA的适应情况
ARIMA模型相对来说比较简单易用。在应用ARIMA模型时,要保证以下几点:
- 时间序列数据是相对稳定的,总体基本不存在一定的上升或者下降趋势,如果不稳定可以通过差分的方式来使其变稳定。
- 非线性关系处理不好,只能处理线性关系
判断时序数据稳定
基本判断方法:稳定的数据,总体上是没有上升和下降的趋势的,是没有周期性的,方差趋向于一个稳定的值。
ARIMA数学表达
ARIMA(p,d,q),其中p是数据本身的滞后数,是AR模型即自回归模型中的参数。d是时间序列数据需要几次差分才能得到稳定的数据。q是预测误差的滞后数,是MA模型即滑动平均模型中的参数。
a) p参数与AR模型
AR模型描述的是当前值与历史值之间的关系,滞后p阶的AR模型可以表示为:
其中u是常数,et代表误差。
b) q参数与MA模型
MA模型描述的是当前值与自回归部分的误差累计的关系,滞后q阶的MA模型可以表示为:
其中u是常数,et代表误差。
c) d参数与差分
一阶差分:
二阶差分:
d) ARIMA = AR+MA
ARIMA模型使用步骤
- 获取时间序列数据
- 观测数据是否为平稳的,否则进行差分,化为平稳的时序数据,确定d
- 通过观察自相关系数ACF与偏自相关系数PACF确定q和p
- 得到p,d,q后使用ARIMA(p,d,q)进行训练预测
Python调用ARIMA
#差分处理 diff_series = diff_series.diff(1)#一阶 diff_series2 = diff_series.diff(1)#二阶 #ACF与PACF #从scipy导入包 from scipy import stats import statsmodels.api as sm #画出acf和pacf sm.graphics.tsa.plot_acf(diff_series) sm.graphics.tsa.plot_pacf(diff_series) #arima模型 from statsmodels.tsa.arima_model import ARIMA model = ARIMA(train_data,order=(p,d,q),freq='')#freq是频率,根据数据填写 arima = model.fit()#训练 print(arima) pred = arima.predict(start='',end='')#预测
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
小白入门篇使用Python搭建点击率预估模型
点击率预估模型 0.前言 本篇是一个基础机器学习入门篇文章,帮助我们熟悉机器学习中的神经网络结构与使用. 日常中习惯于使用Python各种成熟的机器学习工具包,例如sklearn.TensorFlow等等,来快速搭建各种各样的机器学习模型来解决各种业务问题. 本文将从零开始,仅仅利用基础的numpy库,使用Python实现一个最简单的神经网络(或者说是简易的LR,因为LR就是一个单层的神经网络),解决一个点击率预估的问题. 1.假设一个业务场景 声明:为了简单起见,下面的一切设定从简-. 定义需
-
使用python实现画AR模型时序图
背景: 用python画AR模型的时序图. 结果: 代码: import numpy as np import matplotlib.pyplot as plt """ AR(1)的时序图:x[t]=a*x[t-1]+e """ num = 2000 e = np.random.rand(num) x = np.empty(num) """ 平稳AR(1) """ a = -0.5 x[
-
画pytorch模型图,以及参数计算的方法
刚入pytorch的坑,代码还没看太懂.之前用keras用习惯了,第一次使用pytorch还有些不适应,希望广大老司机多多指教. 首先说说,我们如何可视化模型.在keras中就一句话,keras.summary(),或者plot_model(),就可以把模型展现的淋漓尽致. 但是pytorch中好像没有这样一个api让我们直观的看到模型的样子.但是有网友提供了一段代码,可以把模型画出来,对我来说简直就是如有神助啊. 话不多说,上代码吧. import torch from torch.autog
-
python sklearn常用分类算法模型的调用
本文实例为大家分享了python sklearn分类算法模型调用的具体代码,供大家参考,具体内容如下 实现对'NB', 'KNN', 'LR', 'RF', 'DT', 'SVM','SVMCV', 'GBDT'模型的简单调用. # coding=gbk import time from sklearn import metrics import pickle as pickle import pandas as pd # Multinomial Naive Bayes Classifier d
-
Python时间序列处理之ARIMA模型的使用讲解
ARIMA模型 ARIMA模型的全称是自回归移动平均模型,是用来预测时间序列的一种常用的统计模型,一般记作ARIMA(p,d,q). ARIMA的适应情况 ARIMA模型相对来说比较简单易用.在应用ARIMA模型时,要保证以下几点: 时间序列数据是相对稳定的,总体基本不存在一定的上升或者下降趋势,如果不稳定可以通过差分的方式来使其变稳定. 非线性关系处理不好,只能处理线性关系 判断时序数据稳定 基本判断方法:稳定的数据,总体上是没有上升和下降的趋势的,是没有周期性的,方差趋向于一个稳定的值. A
-
完美解决ARIMA模型中plot_acf画不出图的问题
问题描述:在画时间序列ACF时,调用 from statsmodels.graphics.tsaplots import plot_acf, plot_pacf plot_acf(data, lags=40) plt.show() 画不出图,或者是只能画出一条直线,如下图所示: 出现这种情况的原因是:plot_acf(data, lags=40)中的data没有dropna(). 解决方案: from statsmodels.graphics.tsaplots import plot_acf,
-
Python时间序列数据的预处理方法总结
目录 前言 时间序列中的缺失值 时间序列去噪 滚动平均值 傅里叶变换 时间序列中的离群值检测 基于滚动统计的方法 孤立森林 K-means 聚类 面试问题 总结 前言 时间序列数据随处可见,要进行时间序列分析,我们必须先对数据进行预处理.时间序列预处理技术对数据建模的准确性有重大影响. 在本文中,我们将主要讨论以下几点: 时间序列数据的定义及其重要性. 时间序列数据的预处理步骤. 构建时间序列数据,查找缺失值,对特征进行去噪,并查找数据集中存在的异常值. 首先,让我们先了解时间序列的定义: 时间
-
浅谈Python基础之I/O模型
一.I/O模型 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别? 这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blockin
-
python时间序列按频率生成日期的方法
有时候我们的数据是按某个频率收集的,比如每日.每月.每15分钟,那么我们怎么产生对应频率的索引呢?pandas中的date_range可用于生成指定长度的DatetimeIndex. 我们先看一下怎么生成日期范围:pd.date_range(startdate,enddate) 1.生成指定开始日期和结束日期的时间范围: In:import pandas as pd index = pd.date_range('4/1/2019','5/1/2019') print(index) Out: Da
-
Python中函数参数匹配模型详解
当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用 * 来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用 def f(*args): # 直接打印元组参数 print(args) print('-'*20) # 循环打印元组参数 [print(i) for i in args] ... # 传递一个参数 f(1) print('='*20) # 传递5个参数 f(1, 2, 3, 4, 5) 示例结果: (1,)
-
用python生成与调用cntk模型代码演示方法
由于一些原因,视频录制要告一段落了.再写一篇关于cntk的文章分享出来吧.我也很想将这个事情进行下去.以后如果条件允许还会接着做. cntk2.0框架生成的模型才可以支持python.1.0不支持. python可以导入cntk.exe生成的框架,也可以导入python调用cntk生成的框架.举两个例子: 1 .导入cntk.exe生成的框架. from cntk.ops.functions import load_model from PIL import Image import numpy
-
解决python 无法加载downsample模型的问题
downsample 在最新版本里面修改了位置 from theano.tensor.single import downsample (旧版本) 上面以上的的import会有error raise: from theano.tensor.signal import downsample ImportError: cannot import name 'downsample' 找到from theano.tensor.single import downsample所在文件,如: ...\lib
-
python 利用已有Ner模型进行数据清洗合并代码
我就废话不多说了,直接上代码吧! # -*- coding: utf-8 -*- from kashgari.corpus import DataReader import re from tqdm import tqdm def cut_text(text, lenth): textArr = re.findall('.{' + str(lenth) + '}', text) textArr.append(text[(len(textArr) * lenth):]) return textAr
-
Python实现RabbitMQ6种消息模型的示例代码
RabbitMQ与Redis对比 RabbitMQ是一种比较流行的消息中间件,之前我一直使用redis作为消息中间件,但是生产环境比较推荐RabbitMQ来替代Redis,所以我去查询了一些RabbitMQ的资料.相比于Redis,RabbitMQ优点很多,比如: 具有消息消费确认机制 队列,消息,都可以选择是否持久化,粒度更小.更灵活. 可以实现负载均衡 RabbitMQ应用场景 异步处理:比如用户注册时的确认邮件.短信等交由rabbitMQ进行异步处理 应用解耦:比如收发消息双方可以使用
随机推荐
- 当达到输入长度时表单自动切换焦点
- ASP实现多行注释的方法(dw)
- JavaScript之underscore_动力节点Java学院整理
- 微信小程序 开发之快递查询功能的实现
- struts2拦截器_动力节点Java学院整理
- Ajax留言本源码 提供下载了
- JS实现简易的图片拖拽排序实例代码
- asp随机数 随机产生N位由数字和字母组成的密码
- MYSQL 导入数据的几种不同
- JS仿Windows开机启动Loading进度条的方法
- jQuery中:disabled选择器用法实例
- C#进制之间的相互转换详解
- JS中Select下拉列表类(支持输入模糊查询)功能
- 华为面试题数字大小写转换
- Android 安全加密:非对称加密详解
- Centos7搭建FTP服务器
- 微信小程序开发之左右分栏效果的实例代码
- layui之数据表格--与后台交互获取数据的方法
- Python迭代器iterator生成器generator使用解析
- ajax实现文件异步上传并回显文件相关信息功能示例