精华内容
下载资源
问答
  • 差分是一个广泛用于时间序列的数据变换。...为什么差分时间序列数据?差分是一种变换时间序列数据集的方法。它可以用于消除序列对时间性的依赖性,即所谓的时间性依赖。这包含趋势和周期性的结构。不同...

    差分是一个广泛用于时间序列的数据变换。

    在本教程中,你将发现如何使用Python将差分操作应用于时间序列数据。

    完成本教程后,你将学到:

    关于差分运算,包括延迟差分的配置和差分序列。

    如何开发手动实现的差分运算。

    如何使用内置的Pandas差分函数。

    让我们开始吧。

    How-to-Difference-a-Time-Series-Dataset-with-Python.jpg

    为什么差分时间序列数据?

    差分是一种变换时间序列数据集的方法。

    它可以用于消除序列对时间性的依赖性,即所谓的时间性依赖。这包含趋势和周期性的结构。

    不同的方法可以帮助稳定时间序列的均值,消除时间序列的变化,从而消除(或减少)趋势和周期性。

    通过从当前观察中减去先前观察值来实现差分。

    difference(t) = observation(t) - observation(t-1)

    这样可以计算出序列差分。

    延迟差分

    将连续观察值之间的差值称为延迟-1差分。

    可以调整延迟差分来适应特定的时间结构。

    对于有周期性成分的时间序列,延迟可能是周期性的周期(宽度)。

    差分序列

    执行差分操作后,如非线性趋势的情况下,时间结构可能仍然存在。

    因此,差分过程可以一直重复,直到所有时间依赖性被消除。

    执行差分的次数称为差分序列。

    洗发水销售数据集

    该数据集描述了3年内洗发水的月销量。

    这些单位是销售数量,有36个观察值。原始数据集记为Makridakis,Wheelwright和Hyndman(1998)。

    下面的例子加载并创建了加载数据集的图。

    from pandas import read_csv

    from pandas import datetime

    from matplotlib import pyplot

    def parser(x):

    return datetime.strptime('190'+x, '%Y-%m')

    series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)

    series.plot()

    pyplot.show()

    运行该示例将创建显示数据中清晰的线性趋势图。

    Shampoo-Sales-Dataset-Plot-1.png

    手动差分

    我们可以手动差分数据集。

    这涉及开发一个创建差分数据集的新函数。该函数将通过你提供的序列循环,并以指定的间隔或延迟计算差分值。

    我们用名为difference()的函数实现此过程。

    # create a differenced series

    def difference(dataset, interval=1):

    diff = list()

    for i in range(interval, len(dataset)):

    value = dataset[i] - dataset[i - interval]

    diff.append(value)

    return Series(diff)

    我们可以看到,在指定的时间间隔后,函数开始差分数据集,以确保实际上可以计算差分值。定义默认间隔或延迟的值为1。这是一个合理的默认值。

    另一个改进是能够指定执行差分操作的时间顺序或次数。

    以下示例将手动difference()函数应用于洗发水销售数据集。

    from pandas import read_csv

    from pandas import datetime

    from pandas import Series

    from matplotlib import pyplot

    def parser(x):

    return datetime.strptime('190'+x, '%Y-%m')

    # create a differenced series

    def difference(dataset, interval=1):

    diff = list()

    for i in range(interval, len(dataset)):

    value = dataset[i] - dataset[i - interval]

    diff.append(value)

    return Series(diff)

    series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)

    X = series.values

    diff = difference(X)

    pyplot.plot(diff)

    pyplot.show()

    运行示例创建差分数据集并绘制结果。

    Manually-Differenced-Shampoo-Sales-Dataset.png

    自动差分

    Pandas库提供了一种自动计算差分数据集的功能。

    这个diff()函数是由Series和DataFrame对象提供。

    就像前一节中手动定义的差分函数一样,它需要一个参数来指定间隔或延迟,在本例中称为周期(periods)。

    下面的例子演示了如何在Pandas Series对象上使用内置的差分函数。

    from pandas import read_csv

    from pandas import datetime

    from matplotlib import pyplot

    def parser(x):

    return datetime.strptime('190'+x, '%Y-%m')

    series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)

    diff = series.diff()

    pyplot.plot(diff)

    pyplot.show()

    如上一节所述,运行该示例绘制了差分数据集。

    使用Pandas函数的好处需要的代码较少,并且它保留差分序列中时间和日期的信息。

    Automatic-Differenced-Shampoo-Sales-Dataset.png

    总结

    在本教程中,你已经学会了在python中如何将差分操作应用于时间序列数据。

    具体来说,你学到了:

    关于差分运算,包括延迟差分的配置和差分序列。

    如何开发手动实现的差分运算。

    如何使用内置的Pandas差分函数。

    原文:http://machinelearningmastery.com/difference-time-series-dataset-python/

    展开全文
  • 时间序列分析的主要目的是根据已有的历史数据对未来进行预测。如餐饮销售预测可以看做是基于时间序列的短期数据预测, 预测的对象时具体菜品的销售量。1.时间序列算法:常见的时间序列模型;​ 2.时序模型的预处理1. ...

    时间序列分析的主要目的是根据已有的历史数据对未来进行预测。如餐饮销售预测可以看做是基于时间序列的短期数据预测, 预测的对象时具体菜品的销售量。

    1.时间序列算法:

    常见的时间序列模型;

    3a323e95be0459ede8083277252fa576805.png3900054

    2.时序模型的预处理

    1. 对于纯随机序列,也称为白噪声序列,序列的各项之间没有任何的关系, 序列在进行完全无序的随机波动, 可以终止对该序列的分析。

    2. 对于平稳非白噪声序列, 它的均值和方差是常数。ARMA 模型是最常用的平稳序列拟合模型。

    3. 对于非平稳序列, 由于它的方差和均值不稳定, 处理方法一般是将其转化成平稳序列。 可以使用ARIMA 模型进行分析。

    对平稳性的检验:

    1.时序图检验:根据平稳时间序列的均值和方差都是常数的特性,平稳序列的时序图显示该序列值时钟在一个参数附近随机波动,而且波动的范围是有界的。如果有明显的趋势或者周期性, 那它通常不是平稳序列。

    2.自相关图检验:平稳序列具有短期相关性, 这个性质表明对平稳序列而言, 通常 只有近期的序列值得影响比较明显, 间隔越远的过去值对现在的值得影响越小。 而非平稳序列的自相关系数衰减的速度比较慢。

    3.单位根检验:单位根检验是指检验序列中是否存在单位根, 如果存在单位根, 那就是非平稳时间序列。 目前最常用的方法就是单位根检验。

    原假设是 非平稳序列过程, 备择假设是 平稳序列, 趋势平稳过程

    60cace347a2d398eb88d1029a705ac53ba9.jpg3900054

    2353a4222c8e9afbd744ba67069414b06a8.jpg3900054

    2b595ff7a9aa3ebabeb1e0cf2c5fd81fcbd.jpg3900054

    cfe8bd136e2a5ce7666c637230c7954cedc.jpg3900054

    edc2fddcac9c00cf19febac9e12d6b627c2.jpg3900054

    3.时间序列分析:

    •平稳性:

    •平稳性要求经由样本时间序列所得到的拟合曲线,在未来一段时间内仍然沿着现有的形态‘惯性’地延续下去。

    •平稳性要求序列的均值和方差不发生明显的变化。

    •弱平稳:期望和相关系数(依赖性)不变,未来某个时刻t 的值,Xt 要依赖于它过去的信息。

    •差分法:时间序列在 T 与 T-1 时刻的差值(使用差分使其满足平稳性),一般差分1,2 阶就可以了。

    •AR(自回归模型):

    •描述当前值与历史值之间的关系, 用变量自身的历史时间数据对自身进行预测。自回归模型必须满足平稳性的要求。

    公式定义:2dfaa46f24f085d1b6a2b9670d327a9b23d.png3900054

    edcc4d03f15352494070a9df2ebfc112cc2.png3900054

    d177b440a92e5fdf926a5415956f8b2e3bd.png3900054

    自回归模型的限制:

    1.自回归模型是使用自身的数据进行预测的

    2.必须具有平稳性

    3.必须具有相关性,如果相关性小于 0.5 , 则不宜使用

    4.自回归模型只适用于预测与自身前期相关的预测。

    •MA(移动平均模型):

    •移动平均模型关注的是自回归模型中的误差项的累加

    •移动平均法能有效地消除预测中的随机波动。

    b7f08ccb401ae11212f2a5b2bf024e567b4.png3900054

    •ARMA(自回归平均模型):

    •自回归和移动平均的结合。

    a897f4fa4ff82fad75702f6e6ceb64efe5a.png3900054

    •ARIMA(p,d,q)差分自回归移动平均模型(Autoregressive Integrated Moving Average Model ,简称ARIMA)

    •AR 是自回归, p 是自回归项, MA 是移动平均, q 为移动平均项, d 为时间序列称为平稳时 所做的差分次数。

    •原理: 将非平稳时间序列转换成平稳时间序列, 然后将因变量仅对它的滞后值(p阶)以及随机误差项的现值和滞后值进行回顾所建立的模型。

    •ARIMA 建模流程:

    •1.将序列平稳化(差分法确定 d)

    •2.p 和 q 阶数的确定(ACF 和 PACF 确定)

    •3.建立模型 ARIMA (p , d , q )

    f6304dafaf7f3998948504de7369813d21f.png3900054

    使用ARIMA 模型对某餐厅的销售数据进行预测

    #使用ARIMA 模型对非平稳时间序列进行建模操作

    #差分运算具有强大的确定性的信息提取能力, 许多非平稳的序列差分后显示出平稳序列的性质, 这是称这个非平稳序列为差分平稳序列。

    #对差分平稳序列可以还是要ARMA 模型进行拟合, ARIMA 模型的实质就是差分预算与 ARMA 模型的结合。

    #coding=gbk

    #使用ARIMA 模型对非平稳时间序列记性建模操作

    #差分运算具有强大的确定性的信息提取能力, 许多非平稳的序列差分后显示出平稳序列的性质, 这是称这个非平稳序列为差分平稳序列。

    #对差分平稳序列可以还是要ARMA 模型进行拟合, ARIMA 模型的实质就是差分预算与 ARMA 模型的结合。

    #导入数据 import pandas as pd filename = r'D:\datasets\arima_data.xls' data = pd.read_excel(filename, index_col = u'日期') #画出时序图 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] #定义使其正常显示中文字体黑体 plt.rcParams['axes.unicode_minus'] = False #用来正常显示表示负号 # data.plot() # plt.show()

    3900054

    c1ee862f6855926a853da4e08cea27684b6.png3900054

    #画出自相关性图

    from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

    # plot_acf(data)

    # plt.show() #平稳性检测 from statsmodels.tsa.stattools import adfuller print('原始序列的检验结果为:',adfuller(data[u'销量'])) #原始序列的检验结果为: (1.8137710150945268, 0.9983759421514264, 10, 26, {'1%': -3.7112123008648155, # '10%': -2.6300945562130176, '5%': -2.981246804733728}, 299.46989866024177) #返回值依次为:adf, pvalue p值, usedlag, nobs, critical values临界值 , icbest, regresults, resstore #adf 分别大于3中不同检验水平的3个临界值,单位检测统计量对应的p 值显著大于 0.05 , 说明序列可以判定为 非平稳序列

    3900054

    aaf2a3db27e23e9e7c7e3f89e84ea3f9834.png3900054

    #对数据进行差分后得到 自相关图和 偏相关图

    D_data = data.diff().dropna()

    D_data.columns = [u'销量差分']

    D_data.plot() #画出差分后的时序图

    # plt.show()

    plot_acf(D_data) #画出自相关图 # plt.show() plot_pacf(D_data) #画出偏相关图 # plt.show() print(u'差分序列的ADF 检验结果为: ', adfuller(D_data[u'销量差分'])) #平稳性检验 #差分序列的ADF 检验结果为: (-3.1560562366723537, 0.022673435440048798, 0, 35, {'1%': -3.6327426647230316, # '10%': -2.6130173469387756, '5%': -2.9485102040816327}, 287.5909090780334) #一阶差分后的序列的时序图在均值附近比较平稳的波动, 自相关性有很强的短期相关性, 单位根检验 p值小于 0.05 ,所以说一阶差分后的序列是平稳序列

    3900054

    eb76299b3bd2b76b2c01ed1b15280848b35.png3900054

    746e9b83c00f5bbc8e47b09b5233bb48e16.png3900054

    cf1a96328506f13d26fd0822fea6f573c69.png3900054

    #对一阶差分后的序列做白噪声检验

    from statsmodels.stats.diagnostic import acorr_ljungbox

    print(u'差分序列的白噪声检验结果:',acorr_ljungbox(D_data, lags= 1)) #返回统计量和 p 值 # 差分序列的白噪声检验结果: (array([11.30402222]), array([0.00077339])) p值为第二项, 远小于 0.05 #对模型进行定阶 from statsmodels.tsa.arima_model import ARIMA pmax = int(len(D_data) / 10) #一般阶数不超过 length /10 qmax = int(len(D_data) / 10) bic_matrix = [] for p in range(pmax +1): temp= [] for q in range(qmax+1): try: temp.append(ARIMA(data, (p, 1, q)).fit().bic) except: temp.append(None) bic_matrix.append(temp) bic_matrix = pd.DataFrame(bic_matrix) #将其转换成Dataframe 数据结构 p,q = bic_matrix.stack().idxmin() #先使用stack 展平, 然后使用 idxmin 找出最小值的位置 print(u'BIC 最小的p值 和 q 值:%s,%s' %(p,q)) # BIC 最小的p值 和 q 值:0,1 #所以可以建立ARIMA 模型,ARIMA(0,1,1) model = ARIMA(data, (p,1,q)).fit() model.summary2() #生成一份模型报告 model.forecast(5) #为未来5天进行预测, 返回预测结果, 标准误差, 和置信区间

    3900054

    利用模型向前预测的时期越长, 预测的误差就会越大,这是时间预测的典型特点。

    9aa5eeae09b9f164dcc407a630f080b2777.png3900054

    展开全文
  • 时间序列的模型主要分四种:自回归模型AR,移动回归模型MA,两者的结合移动自回归模型ARMA,以及差分过的差分移动自回归模型ARIMA。1、AR模型:Xt时刻的值等于自回归系数乘上对应时刻的数值,ut为时间序列的随机游走...

    今天给大家分享python实现时间序列的案例。时间序列的模型主要分四种:自回归模型AR,移动回归模型MA,两者的结合移动自回归模型ARMA,以及差分过的差分移动自回归模型ARIMA。

    1、AR模型:

    Xt时刻的值等于自回归系数乘上对应时刻的数值,ut为时间序列的随机游走。

    2、MA模型:

    Xt时刻的数值为每个时刻的白噪声的系数的加权和。当自回归和移动回归结合就是ARMA。

    3、ARMA模型:

    自回归移动平均模型由两部分组成:自回归部分和移动平均部分,因此包含两个阶数,可以表示为ARMA(p,q),p是自回归阶数,q为移动平均阶数,回归方程表示为:

    ARMA既体现了每个时刻数据对于预测数据的影响也提现了随机游走因素对于预测数据的影响,模型应用比较常见。

    4、ARIMA模型:

    差分移动自回归模型,由于前三个模型都有时间序列平稳的假设在,如果时间序列存在明显的上升或者下降趋势,模型预测的效果大大折扣,对于这些有明显下降或者上升趋势的数据集,可以使用差分的方式使它们平稳,之后使用ARMA拟合。假设模型经过d次差分通过了时间序列平稳的检验,ARMA的系数为p,q,ARIMA模型为ARIMA(p,d,q)。

    案例:

    from __future__ import print_function

    import pandas as pd

    import numpy as np

    from scipy import stats

    import matplotlib.pyplot as plt

    import statsmodels.api as sm

    from statsmodels.graphics.api import qqplot

    #时间序列

    dta=[10930,10318,10595,10972,7706,6756,9092,10551,9722,10913,11151,8186,6422,

    6337,11649,11652,10310,12043,7937,6476,9662,9570,9981,9331,9449,6773,6304,9355,

    10477,10148,10395,11261,8713,7299,10424,10795,11069,11602,11427,9095,7707,10767,

    12136,12812,12006,12528,10329,7818,11719,11683,12603,11495,13670,11337,10232,

    13261,13230,15535,16837,19598,14823,11622,19391,18177,19994,14723,15694,13248,

    9543,12872,13101,15053,12619,13749,10228,9725,14729,12518,14564,15085,14722,

    11999,9390,13481,14795,15845,15271,14686,11054,10395]

    dta=np.array(dta,dtype=np.float)

    #生成时间序列并画图

    dta=pd.Series(dta)

    dta.index = pd.Index(sm.tsa.datetools.dates_from_range('2001','2090'))

    dta.plot(figsize=(12,8))

    有上升趋势需要差分

    #一阶差分

    fig = plt.figure(figsize=(12,8))

    ax1= fig.add_subplot(111)

    diff1 = dta.diff(1)

    diff1.plot(ax=ax1)

    #二阶差分

    fig = plt.figure(figsize=(12,8))

    ax2= fig.add_subplot(111)

    diff2 = dta.diff(2)

    diff2.plot(ax=ax2)

    可以观察一阶差分平稳,做单位根检验

    #一阶单位根检验

    sm.tsa.stattools.adfuller(diff1[1:])

    #二阶单位根检验

    sm.tsa.stattools.adfuller(diff2[2:])

    #选择使用一阶差分的时间序列

    diff1= dta.diff(1)

    fig = plt.figure(figsize=(12,8))

    ax1=fig.add_subplot(211)

    fig = sm.graphics.tsa.plot_acf(dta,lags=40,ax=ax1)

    ax2 = fig.add_subplot(212)

    fig = sm.graphics.tsa.plot_pacf(dta,lags=40,ax=ax2)

    自相关图和偏相关图

    根据上图,猜测有以下模型可以供选择:

    1)ARMA(0,1)模型:即自相关图在滞后1阶之后缩小为0,且偏自相关缩小至0,则是一个阶数q=1的移动平均模型;

    2.)ARMA(7,0)模型:即偏自相关图在滞后7阶之后缩小为0,且自相关缩小至0,则是一个阶层p=7的自回归模型

    3.)ARMA(7,1)模型:即使得自相关和偏自相关都缩小至零。则是一个混合模型。

    4) 还可以有其他供选择的模型 ARMA(8,0)

    #不同的值的p,q拟合

    arma_mod70 = sm.tsa.ARMA(dta,(7,0)).fit()

    print(arma_mod70.aic,arma_mod70.bic,arma_mod70.hqic)

    arma_mod30 = sm.tsa.ARMA(dta,(0,1)).fit()

    print(arma_mod30.aic,arma_mod30.bic,arma_mod30.hqic)

    arma_mod71 = sm.tsa.ARMA(dta,(7,1)).fit()

    print(arma_mod71.aic,arma_mod71.bic,arma_mod71.hqic)

    arma_mod80 = sm.tsa.ARMA(dta,(8,0)).fit()

    print(arma_mod80.aic,arma_mod80.bic,arma_mod80.hqic)

    看不同的信息量:

    1619.191769832876 1641.6900568658484 1628.2644016400693

    1657.2172636424214 1664.716692653412 1660.241474244819

    1605.686728785649 1630.6848254889517 1615.7674307936416

    1597.9359854086617 1622.9340821119645 1608.0166874166543

    选择 ARMA(8,0)

    resid = arma_mod80.resid

    fig = plt.figure(figsize=(12,8))

    ax1 = fig.add_subplot(211)

    fig = sm.graphics.tsa.plot_acf(resid.values.squeeze(), lags=40, ax=ax1)

    ax2 = fig.add_subplot(212)

    fig = sm.graphics.tsa.plot_pacf(resid, lags=40, ax=ax2)

    plt.show()

    残差的ACF和PACF图,可以看到序列残差基本为白噪声。

    德宾-沃森检验:

    print(sm.stats.durbin_watson(arma_mod80.resid.values))

    QQplot:

    print(stats.normaltest(resid))

    fig = plt.figure(figsize=(12,8))

    ax = fig.add_subplot(111)

    fig = qqplot(resid, line='q', ax=ax, fit=True)

    #plt.show()

    预测:

    predict_dta = arma_mod80.predict('2090', '2150', dynamic=True)

    print(predict_dta)

    fig, ax = plt.subplots(figsize=(12, 8))

    ax = dta.ix['2000':].plot(ax=ax)

    fig = arma_mod80.plot_predict('2090', '2150', dynamic=True, ax=ax, plot_insample=False)

    plt.show()

    时间序列的初步建模并预测了之后的数据。

    如果对数据分析和挖掘可以关注我的公众号:论数据如何炼成

    展开全文
  • 时间序列模型:严格来说包含4个要素,Trend/趋势、Circle/循环、Seasonal /季节性和不规则要素。...在平稳化时间序列数据差分/differencing是种用得广&受欢迎的方法。 笔记的目的是为了理解: 平稳的时间...

    时间序列模型:严格来说包含4个要素,Trend/趋势、Circle/循环、Seasonal /季节性和不规则要素。但是实际中C和S往往几乎重合,所以模型通常是3个要素。

    一组时间序列数据有可能包含T和S,这都导致数据集不平稳。因为T会造成均值跟着时间变化而变化,S会造成方差随时间变动。

    在平稳化时间序列数据中,差分/differencing是种用得广&受欢迎的方法。

    笔记的目的是为了理解:
    • 平稳的时间序列数据和非平稳的区别,
    • 什么是差分,
    • 怎么用差分把linear trend component从数据中移除,
    • 怎么用差分把seasonal component从数据中移除;
    分4部分来解释
    1)平稳
    1. 什么是平稳的时间序列:观测值不受时间的影响。
      如果数据是平稳的,就没有T和S的存在,均值和方差也不随时间变动。同时时间序列模型都建立在平稳数据的基础之上。
    2. 判断时间序列数据是否平稳的方法:
      1)plt作图,直接观察;2)更准确的方法是用Dickey-Fuller统计检验(一般是ADfuller test/增强版)

    " If we fit a stationary model to data, we assume our data are realization of a stationary process. So our first step in an analysis should be to check whether there is any evidece of a trend or seasonal effects and, if there is, remove them."
    ——Page 122, Introductory Time Series with R.

    2)差分变换
    1. 差分是用于处理时间序列数据的方法。

    “Differencing can help stabilize the mean of the time series by removeing changes in the level of a time series, and so eliminating (or reducing) trend and seasonality.”
    —— Page 215, Forcasting: principles and practice.

    一阶差分 / lag-1 difference:
    differencet=observationtobservationt1difference_t = observation_t - observation_{t-1}
    复原差分:
    invertedt=differencedt+observationt1inverted_t = differenced_t + observation_{t-1}

    # 差分的函数
    def difference(dataset, interval=1):
    	diff = list()
    	for i in range(interval, len(dataset)):
    		value = dataset[i] - dataset[i-interval]
    		diff.append()
    	return Series(diff)
    	
    # 复原差分的函数
    def inverse_difference(las_ob, value):
    	return value + last_ob
    
    差分特性 使用模型 适用的数据走势类型
    一阶差分 一次线性模型 y^t=b0+b1ty\hat{}_t = b_0 + b_1t
    二阶差分 二次线性模型 y^t=b0+b1t+b2t2y\hat{}_t = b_0 + b_1t + b_2t^2
    三阶差分 三次线性模型 y^t=b0+b1t+b2t2+b3t3y\hat{}_t = b_0 + b_1t + b_2t^2 + b_3t^3

    一阶差分的函数pandas是df = df.diff(),二阶的是df = df.diff().diff(),以此类推得到
    lag-n difference。

    3)差分消除T

    T会使得时间序列不平稳,这会让不同时间的均值受影响。直接上例子:

    # 先造个差分方程出来
    def difference(dataset, interval=1):
       diff = list()
       for i in range(interval, len(dataset)):
       		value = dataset[i] - dataset[i - interval]
       		diff.append(value)
       return diff
    
    # 再造个复原差分的函数
    def inverse_difference(last_ob, value):
       return value + last_ob
    
    # 定义个有linear trend的数据集
    data = [i+1 for i in range(20)]
    print(data)
    # 用差分函数处理data
    diff = difference(data)
    print(diff)
    # 复原diff
    inverted = [inverse_difference(data[i], diff[i]) for i in range(len(diff))]
    print(inverted)
    
    # 结果如下
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
    
    4)差分消除S

    所谓S / Seasonal variation/ seasonality,即随着时间周期性出现的波动。

    A repeating pattern within each year is known as seasonal variation, although the term is applied more generally to repeating patterns within any fixed period.
    —— Page 6, Introductory Time Series with R.

    看例子:

    from numpy import sin, radians
    import matplotlib.pyplot as plt
    
    def difference(dataset, interval=1):
    	diff = list()
    	for i in range(interval, len(dataset)):
    		value = dataset[i] - dataset[i - interval]
    		diff.append(value)
    	return diff
    
    def inverse_difference(last_ob, value):
    	return value + last_ob
    
    data = [sin(radians(i)) for i in range(360)] + [sin(radians(i)) for i in range(360)]
    diff = difference(data, 360)
    inverted = [inverse_difference(data[i], diff[i]) for i in range(len(diff))]
    
    fig, axes = plt.subplots(3, 1)
    axes[0].plot(data)
    axes[0].title.set_text('data')
    
    axes[1].plot(diff)
    axes[1].title.set_text('diff')
    
    axes[2].plot(inverted)
    axes[2].title.set_text('inverted')
    
    plt.tight_layout()
    plt.show()
    

    结果输出如下:
    在这里插入图片描述

    展开全文
  • 一、什么是时间序列时间序列简单的说就是各时间点上形成的数值序列,...环境配置python作为科学计算的利器,当然也有相关分析的包:statsmodelstsa模块,当然这个包和SAS、R是比不了,但是python有另一个神器:pand...
  • 什么是时间序列时间序列简单的说就是各时间点上形成的数值序列时间序列分析就是通过观察历史数据预测未来的值。在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的(这里不...
  • 1 时间序列时间序列分析在生产和科学研究,对某一个或者一组变量 进行观察测量,将在一系列时刻 所得到的离散数字组成的序列集合,称之为时间序列时间序列分析是根据系统观察得到的时间序列数据,通过曲线拟合...
  • python 时间序列

    2020-12-04 12:44:46
    python 有一个标准库 datetime,可以用来表示时间、日期等。也可以实现字符串和日期、时间变量的相互转换。 类型 使用说明 date 日期(月、日、年) time 时间(时、、秒) datetime 日期和时间 ...
  • 在应用ARIMA模型时,要保证以下几点:时间序列数据是相对稳定的,总体基本不存在一定的上升或者下降趋势,如果不稳定可以通过差分的方式来使其变稳定。非线性关系处理不好,只能处理线性关系判断时序数据...
  • 一、什么是时间序列时间序列简单的说就是各时间点上形成的数值序列,...环境配置python作为科学计算的利器,当然也有相关分析的包:statsmodelstsa模块,当然这个包和SAS、R是比不了,但是python有另一个神器:pand...
  • python时间序列分析

    万次阅读 多人点赞 2018-03-05 22:45:49
    本文转载自博客园大神“大熊猫淘沙”的一篇文章——python时间序列分析。 文章写的生动有趣干货满满,特此收藏转载一下。原文地址:https://www.cnblogs.com/foley/p/5582358.html 1. 什么是时间序列 1.1 环境...
  • 在应用ARIMA模型时,要保证以下几点:时间序列数据是相对稳定的,总体基本不存在一定的上升或者下降趋势,如果不稳定可以通过差分的方式来使其变稳定。非线性关系处理不好,只能处理线性关系判断时序数据稳定基本...
  • 在应用ARIMA模型时,要保证以下几点:时间序列数据是相对稳定的,总体基本不存在一定的上升或者下降趋势,如果不稳定可以通过差分的方式来使其变稳定。非线性关系处理不好,只能处理线性关系判断时序数据稳定基本...
  • 目录1 概述2 平稳和非平稳时间序列3 让序列数据平稳4 差分转换4.1 线性增长的趋势4.2 季节性趋势5 总结 1 概述 时间序列数据集可能包含趋势和季节性,在建模之前可能需要将其删除。 趋势可能导致随时间变化的平均值...
  • 时间序列差分后去除空值

    千次阅读 2017-11-22 22:57:35
    不知道为什么,很多时间序列分析的文章里边,在对时间序列进行差分之后,都不告诉读者如何去除空值,导致后续处理(如绘制自相关或偏自相关图)报错。 python的解决方法是调用dropna()函数,如dataDiff.dropna() R的...
  • python 时间序列预测Time series analysis is the endeavor of extracting meaningful summary and statistical information from data points that are in chronological order. They are widely used in applied ...
  • 原标题:Python绘制时间序列数据的时序图、自相关图和偏自相关图时序图、自相关图和偏相关图是判断时间序列数据是否平稳的重要依据。本文涉及的扩展库numpy、pandas、statsmodels一般可以使用pip进行在线安装,如果...
  • 运用实际案例讲解如何使用Python编程的方式进行时间序列分析,...自回归移动平均(ARMA)建模方法自回归差分移动平均(ARiMA)建模方法时间序列分解方法(趋势与季节性分析)授课内容简洁明了,突出重点,强调实用性。
  • 时间序列-Python库 (Time Series - Python Libraries) Advertisements 广告 Previous Page 上一页 Next Page 下一页 Python has an established popularity among individuals who perform machine ...
  • python时间序列实验.doc

    2020-05-18 15:44:31
    PAGE 4 实验六 时间序列 姓名 学号 实验目的 一掌握时间序列分析方法 二掌握差分和还原操作 三掌握ARIMA算法 实验内容 实验数据处理 安装统计分析工具包statsmodels 在cmd输入以下安装命令 pip install ...
  • Python时间序列分析

    万次阅读 2017-05-08 14:15:04
    什么是时间序列 时间序列简单的说就是各时间点上形成的数值序列时间序列分析就是通过观察历史数据预测未来的值。在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的...
  • python 时间序列分析

    千次阅读 2017-03-24 18:29:20
    1 时间序列时间序列分析 在生产和科学研究,对某一个或者一组变量 x(t) 进行观察测量,将在一系列时刻 t1,t2,⋯,tn 所得到的离散数字组成的序列集合,称之为时间序列时间序列分析是根据系统观察得到的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,162
精华内容 9,664
关键字:

python时间序列差分

python 订阅