ARIMA差分自回归模型python代码

27人阅读 评论(0) 收藏 举报
1.差分自回归模型的基本思想:将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。这个模型一旦被识别后就可以从时间序列的过去值以及现在值来预测未来值。不能对时间序列直接采取线性回归算法是因为时间序列所对应的值并不是独立的。
2.要对非平稳的序列进行平稳处理,因为非平稳的序列不能进行预测。
3.代码:
#!/usr/bin/python

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_model import ARIMA


def date_parse(date):
    return pd.datetime.strptime(date, '%Y-%m')

if __name__ == '__main__':

    data = pd.read_csv('AirPassengers.csv', header = 0, parse_dates = ['Month'], date_parser = date_parse, index_col = ['Month'])
    p,d,q = 2, 1, 2
    data.rename(columns = {'#Passengers':'Passengers'}, inplace = True)
    passengersNums = data['Passengers'].astype(np.float)
    logNums = np.log(passengersNums)
    subtractionNums = logNums - logNums.shift(periods = d)
    rollMeanNums = logNums.rolling(window = q).mean()
    logMRoll = logNums - rollMeanNums

    plt.plot(logNums, 'g-', lw = 2, label = u'log of original')
    plt.plot(subtractionNums, 'y-', lw = 2, label = u'subtractionNums')
    plt.plot(logMRoll, 'r-', lw = 2, label = u'log of original - log of rollingMean')
    plt.legend(loc = 'best')
    plt.show()

    arima = ARIMA(endog = logNums, order = (p,d,q))
    proArima = arima.fit(disp = -1)
    fittedArima = proArima.fittedvalues.cumsum() + logNums[0]
    fittedNums = np.exp(fittedArima)
    plt.plot(passengersNums, 'g-', lw = 2, label = u'orignal')
    plt.plot(fittedNums, 'r-', lw = 2, label = u'fitted')
    plt.legend(loc = 'best')
    plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

解释: 
(1)首先对原始时间序列数据进行对数处理,差分处理,滑动平均处理。其中差分处理与滑动平均处理是对非平稳序列进行平稳处理,结果如图: 
平稳处理 
很明显观察到用差分与原始数据减去滑动平均的结果可以对非平稳序列进行平稳处理。 
(2)然后用差分自回归模型拟合原始数据。其中参数p为自回顾函数的参数,d为差分的参数,q为滑动平均的参数。结果如图: 

拟合结果与原始数据

文章出处:https://blog.csdn.net/zlzl8885/article/details/73188910?utm_source=itdadao&utm_medium=referral

查看评论

时间序列之差分自回归移动平均法(ARIMA)

ARIMA模型的基本思想是将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。 ARMIA模型有四种形式:移动平均模型-MA(q)、自回归模...
  • cl1143015961
  • cl1143015961
  • 2014-11-24 17:30:19
  • 8557

自回归模型(AR)、移动平均模型(MA)、自回归移动平均模型(ARMA)以及差分自回归移动平均模型(ARIMA)辨析

短期预测是时间序列分析的主要目的。时间序列分析的理论基础很简单:设若时间序列(或随机过程)的任一元素yty_t与其前期元素(yt−1、yt−2y_{t-1}、y_{t-2}等)之间存在着某种关联,则我...
  • x_i_y_u_e
  • x_i_y_u_e
  • 2015-08-18 10:45:34
  • 4493

[python] 时间序列分析之ARIMA

时间序列建模基本步骤 1. 获取被观测系统时间序列数据; 2. 对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行**d阶差分运算**,化为平稳时间序列; 3. 经过第二步处理,已...
  • u010414589
  • u010414589
  • 2015-11-03 21:37:23
  • 86844

python+ARIMA 进行时间序列处理

利用ARIMA进行时间序列处理
  • wtt561111
  • wtt561111
  • 2016-05-20 15:01:17
  • 9823

残差自回归模型

ARIMA模型的提出使人们对非平稳序列拟合精度大大提高,但和传统的确定性因素分解方法相比较,ARIMA模型仍然有一些缺憾,它使用养分方法提取确定性信息,差分方法的优点是对确定信息的提取比较充分,缺点是...
  • dingming001
  • dingming001
  • 2017-06-27 20:26:34
  • 2165

时间序列(四)ARIMA模型与差分

ARIMA模型平稳性: 平稳性就是要求经由样本时间序列所得到的拟合曲线 在未来的一段期间内仍能顺着现有的形态“惯性”地延续下去平稳性要求序列的均值和方差不发生明显变化严平稳与弱平稳: 严平稳:严...
  • kong1287988804
  • kong1287988804
  • 2017-12-11 20:41:07
  • 437

[转]一阶自回归模型和二阶自回归模型

  • volkswageos
  • volkswageos
  • 2009-09-14 07:49:00
  • 10406

AutoRegressive Integrated Moving Average(差分自回归移动平均模型)

ARIMA: AutoRegressive Integrated Moving Average(差分自回归移动平均模型) ARIMA里面的I指Integrated(差分)。 ARIMA(p,...
  • lishuandao
  • lishuandao
  • 2016-09-09 21:08:29
  • 1104

arima预测(附Python和测试数据)

  • 2017年04月14日 14:10
  • 12KB
  • 下载

ARIMA模型

时间序列分析分为两大类:频域分析和时域分析。频域分析也称为谱分析,是一种非常有用的纵向数据分析方法。时域分析主要关心从序列值之间的相关关系对时间序列发展规律。 在时域分析里,生成时间序列数据的随机过...
  • fenghuangdesire
  • fenghuangdesire
  • 2015-06-02 09:09:27
  • 12265
    个人资料
    等级:
    访问量: 4205
    积分: 161
    排名: 107万+
    文章存档