时间序列 订阅
时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。 [1] 展开全文
时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。 [1]
信息
外文名
time series
类    型
序列
作    用
描述现象的发展状态和结果
要素二
指标数值
中文名
时间序列
要素一
时间
构成要素
现象所属的时间等
时间序列简介
时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内依照给定的采样率对某种潜在过程进行观测的结果。时间序列数据本质上反映的是某个或者某些随机变量随时间不断变化的趋势,而时间序列预测方法的核心就是从数据中挖掘出这种规律,并利用其对将来的数据做出估计。 [2]  构成要素:长期趋势,季节变动,循环变动,不规则变动。1)长期趋势( T )现象在较长时期内受某种根本性因素作用而形成的总的变动趋势。2)季节变动( S )现象在一年内随着季节的变化而发生的有规律的周期性变动。3)循环变动( C )现象以若干年为周期所呈现出的波浪起伏形态的有规律的变动。4)不规则变动(I )是一种无规律可循的变动,包括严格的随机变动和不规则的突发性影响很大的变动两种类型。 [3] 
收起全文
精华内容
参与话题
问答
  • 算法模型---时间序列模型

    万次阅读 多人点赞 2018-01-16 09:04:58
    1、时间序列时间序列是时间间隔不变的情况下收集的不同时间点数据集合,这些集合被分析用来了解长期发展趋势及为了预测未来。 时间序列与常见的回归问题的不同点在于: 1、时间序列是跟时间有关的;而线性回归模型...

    文章来源

    时间序列

    时间序列是时间间隔不变的情况下收集的不同时间点数据集合,这些集合被分析用来了解长期发展趋势及为了预测未来。
    时间序列与常见的回归问题的不同点在于:
    1、时间序列是跟时间有关的;而线性回归模型的假设:观察结果是独立的在这种情况下是不成立的。
    2、随着上升或者下降的趋势,更多的时间序列出现季节性趋势的形式;

    常用的时间序列模型有AR模型(Autoregressive model:自回归模型)、MA模型(moving average model:滑动平均模型)、ARMA模型(Auto-Regressive and Moving Average Model:自回归滑动平均模型)和ARIMA模型(Autoregressive Integrated Moving Average Model:自回归积分滑动平均模型)等。

    时间序列的预处理(使数据平稳化和随机化)

    拿到一个观察值序列之后,首先要对它的平稳性和纯随机性进行检验,这两个重要的检验称为序列的预处理。根据检验的结果可以将序列分为不同的类型,对不同类型的序列我们会采用不同的分析方法。

    平稳化处理

    平稳 就是围绕着一个常数上下波动且波动范围有限,即有常数均值和常数方差。如果有明显的趋势或周期性,那它通常不是平稳序列。序列平稳不平稳,一般采用三种方法检验:

    时序图检验

    这里写图片描述

    看看上面这个图,很明显的增长趋势,不平稳。

    利用自相关系数和偏相关系数

    自相关系数和偏相关系数的概念可参考《算法模型— 概率论基础—相关系数相关》
    下面是不平稳数据的自相关和偏相关系数的一种情形。
    这里写图片描述
    左边第一个为自相关图(Autocorrelation),第二个偏相关图(Partial Correlation)。
    平稳的序列的自相关图和偏相关图要么拖尾,要么是截尾。截尾就是在某阶之后,系数都为 0 。怎么理解呢,看上面偏相关的图,当阶数为 1 的时候,系数值还是很大, 0.914;二阶长的时候突然就变成了 0.050. 后面的值都很小,认为是趋于 0 ,这种状况就是截尾。什么是拖尾,拖尾就是有一个缓慢衰减的趋势,但是不都为 0 。
    自相关图既不是拖尾也不是截尾。以上的图的自相关是一个三角对称的形式,这种趋势是单调趋势的典型图形,说明这个序列不是平稳序列。
    平稳序列的自相关系数会快速衰减。

    单位根检验

    单位根检验是指检验序列中是否存在单位根,如果存在单位根就是非平稳时间序列。
    单位根检验:ADF是一种常用的单位根检验方法,他的原假设为序列具有单位根,即非平稳,对于一个平稳的时序数据,就需要在给定的置信水平上显著,拒绝原假设。ADF只是单位根检验的方法之一,如果想采用其他检验方法,可以安装第三方包arch,里面提供了更加全面的单位根检验方法,个人还是比较钟情ADF检验。以下为检验结果,其p值大于0.99,说明并不能拒绝原假设。

    利用差分将序列数据转换为平衡序列

    差分可以将数据转换为平稳序列。
    一阶差分指原序列值相距一期的两个序列值之间的减法运算;k阶差分就是相距k期的两个序列值之间相减。如果一个时间序列经过差分运算后具有平稳性,则该序列为差分平稳序列,可以使用ARIMA模型进行分析。
    确定不平稳后,依次进行1阶、2阶、3阶…差分,直到平稳为止。

    随机化处理

    对于纯随机序列,又称白噪声序列,序列的各项数值之间没有任何相关关系,序列在进行完全无序的随机波动,可以终止对该序列的分析。白噪声序列是没有信息可提取的平稳序列。对于平稳非白噪声序列,它的均值和方差是常数。通常是建立一个线性模型来拟合该序的发展,借此提取该序列的有用信息。ARMA模型是最常用的平稳序列拟合模型。

    平稳时间序列建模

    某个时间序列经过预处理,被判定为平稳非白噪声序列,就可以进行时间序列建模。
    建模步骤:
    (1)计算出该序列的自相关系数(ACF)和偏相关系数(PACF);
    (2)模型识别,也称模型定阶。根据系数情况从AR§模型、MA(q)模型、ARMA(p,q)模型、ARIMA(p,d,q)模型中选择合适模型,其中p为自回归项,d为差分阶数,q为移动平均项数。
    若平稳序列的偏相关函数是截尾的,而自相关函数是拖尾的,可断定序列适合AR模型;若平稳序列的偏相关函数是拖尾的,而自相关函数是截尾的,则可断定序列适合MA模型;若平稳序列的偏相关函数和自相关函数均是拖尾的,则序列适合ARMA模型。(截尾是指时间序列的自相关函数(ACF)或偏自相关函数(PACF)在某阶后均为0的性质(比如AR的PACF);拖尾是ACF或PACF并不在某阶后均为0的性质(比如AR的ACF)。)
    (3)估计模型中的未知参数的值并对参数进行检验;
    (4)模型检验;
    (5)模型优化;
    (6)模型应用:进行短期预测。

    混合自回归移动平均过程(公式表达)

    差分方程
    所谓差分方程即将变量 yty_t与它的滞后期联系起来的表达式。
    研究变量在第t期的值记为yty_t。假定给出的动态方程将变量y第t期的值与另外的变量wtw_t以及y的前一期联系起来:
    yt=ϕyt1+wty_t=ϕy_{t−1}+w_t
    上述称为一阶差分方程是因为仅仅只有变量的一阶滞后(yt1)(y_t−1)出现在方程中。
    移动平均
    “移动平均”的含义源于YtY_t是最近两期的ϵ\epsilon的加权平均。
    ϵt{\epsilon_t}是一个白噪声序列。
    Yt=μ+ϵt+θϵt1Y_t=μ+\epsilon_t+θ\epsilon_{t−1}
    其中μ和θ可以是任意的常数。这个时间序列称为一阶移动平均过程,记为MA(1)MA(1)
    自回归过程
    一阶自回归过程
    一个一阶自回归,记作AR(1)AR(1)满足下面的差分方程
    Yt=c+ϕYt1+ϵtY_t=c+ϕY_{t−1}+\epsilon_t
    ϵt{\epsilon_t}是一个白噪声序列。
    p阶自回归过程
    一个p阶自回归,记作AR(p)AR(p)满足下式
    Yt=c+ϕ1Yt1+ϕ2Yt2+...+ϕpYtp+ϵtY_t=c+ϕ_1Y_{t−1}+ϕ_2Y_{t−2}+...+ϕ_pY{t−p}+\epsilon_t
    混合自回归移动平均过程
    一个ARMA(p,q)ARMA(p,q)过程包括自回归和移动平均项:
    Yt=c+ϕ1Yt1+ϕ2Yt2+...+ϕpYtp+ϵt+θ1ϵt1+θ2ϵt2+...+θqϵtqY_t=c+ϕ_1Y_{t−1}+ϕ_2Y_{t−2}+...+ϕ_pY{t−p}+\epsilon_t+θ_1ϵ_{t−1}+θ_2ϵ{t−2}+...+θ_qϵ_{t−q}

    利用statsmodels库实现时间序列的分析处理

    Time Series analysis tsa
    statsmodels.tsa.arima_model.ARIMA
    AR(I)MA时间序列建模过程——步骤和python代码
    Seasonal ARIMA with Python
    Python 3中使用ARIMA进行时间序列预测的指南
    Python_Statsmodels包_时间序列分析_ARIMA模型
    时间序列实战(一)
    How to Make Predictions for Time Series Forecasting with Python
    How to Use and Remove Trend Information from Time Series Data in Python
    时间序列分析之ARIMA上手-Python
    [python] 时间序列分析之ARIMA

    python中有专门的库statsmodels可以用来作时间序列分析,但spark中则没有现成的。

    #-*- coding: utf-8 -*-
    import matplotlib.pyplot as plt
    import pandas as pd
    data=pd.read_csv('./HIS_MONTH.csv')
    b=data['fData']
    plt.plot(data['fData'])
    plt.show()
    

    数据结构如下
    这里写图片描述

    #自相关图
    from statsmodels.graphics.tsaplots import plot_acf
    plot_acf(data['fData']).show()
    

    如下所示
    这里写图片描述
    从图上可以自相关系数基本是拖尾的,稍做调整就可以使用。

    #偏自相关图
    from statsmodels.graphics.tsaplots import plot_pacf
    plot_pacf(data['fData']).show()
    

    如下图所示
    这里写图片描述
    偏相关系数也基本符合拖尾。

    #平稳性检测
    from statsmodels.tsa.stattools import adfuller as ADF
    print('原始序列的ADF检验结果为:')
    print(ADF(data['fData']))
    #返回值依次为adf、pvalue、usedlag、nobs、critical values、icbest、regresults、resstore
    

    如下所示

    原始序列的ADF检验结果为:
    (-6.561077625309946, 8.378411469638636e-09, 0L, 47L, {'5%': -2.925338105429433, '1%': -3.5778480370438146, '10%': -2.6007735310095064}, 273.5266547319719)
    

    p值远小于0.05,拒绝原假设(原假设认为存在单位根),所以该序列为平衡时间序列。

    #白噪声检验
    from statsmodels.stats.diagnostic import acorr_ljungbox
    print('差分序列的白噪声检验结果为:')
    print(acorr_ljungbox(data['fValueData'], lags=1))
    

    结果如下

    差分序列的白噪声检验结果为:
    (array([0.05198092]), array([0.81965149]))
    

    P=0.81965149,统计量的P值大于显著性水平0.05,则接受原假设(原假设认为为白噪声序列)。

    下面对原序列做一阶差分运算

    #差分后的结果
    D_data = data['fValueData'].diff().dropna()
    D_data.columns = ['fValueData']
    #时序图
    D_data.plot()
    

    结果如下:
    这里写图片描述
    从图上看,一阶差分后,感觉数据分布更对称为随机了。

    #自相关图
    plot_acf(D_data).show()
    plt.show()
    

    结果如下
    这里写图片描述
    从图上看,一阶差分对数据有改善,振荡衰减更明显

    #偏自相关图
    plot_pacf(D_data).show()
    

    结果如下
    这里写图片描述
    从图上看,偏相关系数虽然没有自相关系数好,但基本能满足平稳序列的要求。

    #平稳性检测
    print('差分序列的ADF检验结果为:')
    print( ADF(D_data))
    

    结果如下

    差分序列的ADF检验结果为:
    (-4.595500765524432, 0.0001316587309452837, 10L, 36L, {'5%': -2.9459512825788754, '1%': -3.626651907578875, '10%': -2.6116707716049383}, 270.35268975914374)
    

    p值远小于0.05,拒绝原假设(原假设认为存在单位根),所以该序列为平衡时间序列。

    #白噪声检验
    from statsmodels.stats.diagnostic import acorr_ljungbox
    #返回统计量和p值
    print('差分序列的白噪声检验结果为:')
    print(acorr_ljungbox(D_data, lags=1))
    

    结果如下:

    差分序列的白噪声检验结果为:
    (array([12.35619393]), array([0.00043953]))
    

    P=0.00043953,统计量的P值小于显著性水平0.05,则拒绝原假设(原假设认为为白噪声序列),所以一阶差分后该序列为非白噪声序列,有进一步分析的价值。

    Holt-Winters模型原理及python实现

    本部分来源,也可以参考该文

    原理分析

    公式前面也写过,这里再表述一下,有时间再来整理
    假设随机时间序列为:
    xt(t=1,2,,N,N=n)x_t(t=1,2,\ldots,N,N=n)
    时间序列数据一般有以下几种特点:1.趋势(Trend) 2. 季节性(Seasonality)。
    趋势描述的是时间序列的整体走势,比如总体上升或者总体下降。下图所示的时间序列是总体上升的:
    这里写图片描述
    季节性描述的是数据的周期性波动,比如以年或者周为周期,如下图:
    这里写图片描述
    三次指数平滑算法可以对同时含有趋势和季节性的时间序列进行预测,该算法是基于一次指数平滑和二次指数平滑算法的。

    移动平均(The simple moving average (MA))

    直观上,最简单的平滑时间序列的方法是实现一个无权重的移动平均,目前已知的方法是用窗口函数,平滑统计量 StS_t就是最近k个观察值的均值。公式如下:

    st=1kn=0k1xtn=xt+xt1++xtk+1k=st1+xtxtkk s_t=\frac{1}{k} \sum_{n=0}^{k-1} x_{t-n}=\frac{x_t+x_{t-1}+\ldots + x_{t-k+1}}{k}=s_{t-1}+\frac{x_t -x_{t-k}}{k}

    这样的方法存在明显的缺陷,当k比较小时,预测的数据平滑效果不明显,而且突出反映了数据最近的变化;当k较大时,虽然有较好的平滑效果,但是预测的数据存在延迟。而且最少需要k个值(窗口有限)。

    加权移动平均

    一种稍微复杂的方法是先选择一组权重因子来计算加权移动平均
    ω1,ω2,,ωk,n=1kωn=1 {\omega_1,\omega_2,\ldots,\omega_k},满足\sum_{n=1}^{k}\omega_n=1
    然后用这些权重来计算这些平滑统计量:
    st=n=1kωnxtn+1=ω1xt+ω2xt1++ωkxtk+1 s_t=\sum_{n=1}^{k}\omega_n x_{t-n+1}=\omega_1x_t+\omega_2 x_{t-1}+\ldots+\omega_{k}x_{t-k+1}
    在实践中,通常在选择权重因子时,赋予时间序列中的最新数据更大的权重,并减少对旧数据的权重。这个方法也需要最少k个值,并且计算复杂。

    简单指数平滑法

    幸运地是有一种方法可以避免上述问题,它叫做指数平滑法。最简单的指数平滑法如下:
    si=αxi+(1α)si1 s_i = \alpha x_i + (1-\alpha)s_{i-1}
    其中α\alpha是平滑因子,0<α<10 < \alpha < 1sis_i是当前时刻的平滑值。换句话说,平滑统计值SiS_i是当前统计值XtX_t与上一时间平滑值Si1S_{i-1}加权平均。这个简单指数平滑是很容易被应用的,因为只要有两个观察值就能计算了。这里α的选取,我们可以采用最小二乘来决定α\alpha(最小化(stxt)2(s_t-x_t)^2)。
    一次指数平滑算法进行预测的公式为:
    xi+h=six_{i+h}=s_i
    其中i为当前最后的一个数据记录的坐标,亦即预测的时间序列为一条直线,不能反映时间序列的趋势和季节性。

    为什么被称为“指数”平滑法
    从它的递推公式就能发现:

    简单指数平滑法适用于没有总体趋势的时间序列。如果用来处理有总体趋势的序列,平滑值将往往滞后于原始数据,除非α的值接近1,但这样一来就会造成不够平滑。

    二次指数平滑(HoltWinters-无季节趋势)

    为了解决上述问题,于是引出了二次指数平滑,能够保留总体趋势信息。因为将指数平滑应用了两次,所以被称为二次指数平滑。与简单指数平滑相比,二次指数平滑加入了时间趋势统计量tit_i,公式如下:
    si=αxi+(1α)(si1+ti1)ti=β(sisi1)+(1β)ti1 s_i=\alpha x_i + (1-\alpha)(s_{i-1}+t_{i-1})\\ t_i=\beta (s_i-s_{i-1}) + (1-\beta)t_{i-1}
    sis_i添加了与一次指数平滑相比,添加了一个新的趋势项tit_i;而tit_i的表达式与一次指数平滑形式上是一样的,只不过用将xix_i换成(sisi1)(s_i-s_{i-1}),趋势可以想像成增量,就是在此刻与上一刻的差值,趋势当然应该用平滑后的数据的差值;同时将一次平滑中的si1s_{i-1}换成ti1t_{i-1}
    二次指数平滑的预测公式为
    xi+h=si+h ti x_{i+h}=s_i+h \ t_i
    二次指数平滑的预测结果是一条斜的直线

    三次指数平滑

    三次指数平滑将时间序列的季节性这一特征也考虑进去了。
    季节性被定义为时间序列数据的趋势,它表现出每一个周期重复自身的行为,就像任何周期函数一样。“季节”这个词用来表示行为每隔时间段L就开始自我重复。在自然界中有不同类型的季节性“累加性”(additive)和“累乘性“(multiplicative),就像加法和乘法是数学的基本运算。
    如果每个12月都比每个11月多卖出1000套公寓,我们就说这样的季节趋势是“累加性”的。可以用绝对增⻓来表示。如果我们在夏季比冬季多卖出10%的公寓,那么季节趋势在自然中是“累乘性”的。
    累乘性公式如下:
    下面的式子中kk表示季节频率,这个还需要查资料进行理解
    si=αxipik+(1α)(si1+ti1)ti=β(sisi1)+(1β)ti1pi=γxisi+(1γ)ptk s_i=\alpha \frac{x_i }{p_{i-k}} +(1-\alpha)(s_{i-1}+t_{i-1})\\ t_i=\beta (s_i-s_{i-1}) + (1-\beta)t_{i-1}\\ p_i=\gamma \frac{x_i}{s_i} + (1-\gamma)p_{t-k}\\
    上式中k为周期, 累乘三次指数平滑的预测公式为:
    xi+h=(si+h ti)pik+(h mod k) x_{i+h}=(s_i+h\ t_i)p_i-k+(h\ mod\ k)
    或者
    xi+h=(si+h ti)pik+1+(h1) mod k x_{i+h}=(s_i+h\ t_i)p_{i-k+1+(h-1) \ mod \ k}
    两个公式还需要确认下
    累乘性公式初始值的计算
    sk=1k(s1+s2++sk)tk=1k[xk+1x1k+xk+2x2k++xk+kxkk]p1=x1sk,p2=x2sk,,pk=xksk s_k=\frac{1}{k} (s_1+s_2+\cdots+s_k)\\ t_k=\frac{1}{k}\left[ \frac{x_{k+1}-x_1}{k}+\frac{x_{k+2}-x_2}{k}+\cdots+\frac{x_{k+k}-x_k}{k} \right]\\ p_1=\frac{x_1}{s_k},p_2=\frac{x_2}{s_k},\cdots,p_k=\frac{x_k}{s_k}

    累加性公式如下:
    si=α(xipik)+(1α)(si1+ti1)ti=β(sisi1)+(1β)ti1pi=γ(xisi)+(1γ)pikxi+h=si+hbi+pik+h mod k s_i=\alpha (x_i-p_{i-k} )+(1-\alpha)(s_{i-1}+t_{i-1})\\ t_i=\beta (s_i-s_{i-1}) + (1-\beta)t_{i-1}\\ p_i=\gamma (x_i-s_i) + (1-\gamma)p_{i-k}\\ x_{i+h}=s_i+hb_i + p_{i-k+h \ mod \ k}
    或者
    xi+h=si+hbi+pik+1+(h1) mod k x_{i+h}=s_i+hb_i + p_{i-k+1+(h-1) \ mod \ k}
    两个公式还需要确认下
    累加性公式初始值的计算
    sk=1k(s1+s2++sk)tk=1k[xk+1x1k+xk+2x2k++xk+kxkk]p1=x1sk,p2=x2sk,,pk=xksk s_k=\frac{1}{k} (s_1+s_2+\cdots+s_k)\\ t_k=\frac{1}{k}\left[ \frac{x_{k+1}-x_1}{k}+\frac{x_{k+2}-x_2}{k}+\cdots+\frac{x_{k+k}-x_k}{k} \right]\\ p_1=x_1-s_k,p_2=x_2-s_k,\cdots,p_k=x_k-s_k
    其中 α\alpha是数据平滑因子, 0<α<10 < \alpha < 1;β\beta是趋势平滑因子,0<β<10 < \beta < 1; γ\gamma是季节改变平滑因子0<γ<10 < \gamma < 1
    αβγ\alpha,\beta,\gamma的值都位于[0,1]之间,可以多试验几次以达到最佳效果。

    s,t,ps,t,p初始值的选取对于算法整体的影响不是特别大,通常的取值为s0=x0,t0=x1x0s_0=x_0,t_0=x_1-x_0,累加时p=0p=0,累乘时p=1p=1.
    对三次指数平滑法而言,我们必须初始化一个完整的“季节”pip_i的值,不过我们可以简单地设置为全1(针对累乘式)或全0(针对累加式)。只有当序列的⻓度较短时,我们才需要慎重考虑初始值的选取。
    我们这里讲的Holt-Winters模型就是三次指数平滑法。哇,终于切入正题了。
    所有的指数平滑法都要更新上一时间步⻓的计算结果,并使用当前时间步⻓的数据中包含的新信息。它们通过“混合”新信息和旧信息来实现,而相关的新旧信息的权重由一个可调整的拌和参数来控制。各种方法的不同之处在于它们跟踪的量的个数和对应的拌和参数的个数。三次指数平滑法,功能最强大,既能体现趋势性又能体现季节性,所以三次指数平滑法的参数最多,有三个。
    下图为使用累加三次指数平滑进行预测的效果:其中红色为源时间序列,蓝色为预测的时间序列,αβγ\alpha,\beta,\gamma的取值为0.45,0.2,0.95:

    下图为累乘三次指数平滑进行预测的效果,αβγ\alpha,\beta,\gamma的取值为0.4,0.05,0.9:

    可以看到三次指数平滑算法可以很好的保存时间序列数据的趋势和季节性信息,在International Airline Passengers数据集上累乘平滑指数算法的效果更好。

    python代码实现

    我们知道HoltWinters模型有三个可调参数,我们的目的就是训练出有效的α,β, γ
    。我们有两种方法,一种就是自己取值来试试,一种就是采用数值优化的思想,比如
    前面我们提到的最小二乘来最小化误差来求参数(注意不一定能全局收敛!这个问题
    实在是让人头痛。。。)我们就采用最小二乘法(L-BFGS)。

    RMSE的实现

    statsmodels中的holtwinters

    statsmodels.tsa模块
    statsmodels.tsa.holtwinters源码
    statsmodels.tsa.holtwinters.ExponentialSmoothing
    ExponentialSmoothing - 指数平滑算法

    基于SVM作短期时间序列的预测

    传统的做法是提取1、2、3、4、5、7、9、13个单位时间的数据作为特征进行预测;
    举个例子进行分析,比如每天都有口香糖的销量,那么如何通过几周的数据预测明天的数据,
    就可以选择前1、2、3、4、5、7、14天的数据作为特征,从而预测明天的数据,
    通过构建特征,再选择核函数进行预测,其中调参的参数尽量要进行最优化,
    参考方法:如果选择RBF核函数,那么其中就会有三个参数,固定两个,然后不停的优化另外一个,直到得到最优解。

    具体应用的例子:

    (1)SVM预测风场:http://wenku.baidu.com/link?url=SCCIJJe8tXLbTjLMZ81x5Qy6elsceAKIOwtkZ0QxfSCQQ4KaWKwo8Biepjs3Ss2LJ2ewhisNR0ixrDY4kV1Rd7BcqWRenuTaG85K80E-30y
    (2)SVM预测股票指数:基于SVM修正的模糊时间序列模型在沪指预测中的应用
    (3)SVM预测时间序列其他方面:http://www.docin.com/p-233353900.html

    LSTM模型分析及对时序数据预测的具体实现(python实现)

    来源:2017年09月30日 10:28:08

    如何用LSTM自编码器进行极端事件预测?(含Python代码)

    时间序列的并行实现

    spark里面的库是没有时间序列算法的,但是国外有人已经写好了相应的算法。其github网址是:https://github.com/sryza/spark-timeseries
    sryza/spark-timeseries
    Spark-TimeSeries使用方法
    A New Library for Analyzing Time-Series Data with Apache Spark
    【Spark Summit East 2017】使用Spark进行时间序列分析

    基于小波变换的时间序列预测,Python实现,来自雪球

    清华AIOps算法:KPI聚类

    其他资料

    时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)
    Holt-Winters原理和初始值的确定

    展开全文
  • 时间序列分析和预测(含实例及代码)

    万次阅读 多人点赞 2018-09-17 21:37:34
    研究时间序列主要目的:进行预测,根据已有的时间序列数据预测未来的变化。 时间序列预测关键:确定已有的时间序列的变化模式,并假定这种模式会延续到未来。 时间序列预测法的基本特点 假设事物发展趋势会...

    导论

    研究时间序列主要目的:进行预测,根据已有的时间序列数据预测未来的变化。

    时间序列预测关键:确定已有的时间序列的变化模式,并假定这种模式会延续到未来。

    时间序列预测法的基本特点
    • 假设事物发展趋势会延伸到未来
    • 预测所依据的数据具有不规则性
    • 不考虑事物发展之间的因果关系

    时间序列数据用于描述现象随时间发展变化的特征

    时间序列分析就其发展历史阶段和所使用的统计分析方法看:传统的时间序列分析和现代时间序列分析

    一、时间序列及其分解

    时间序列(time series)是同一现象在不同时间上的相继观察值排列而成的序列。根据观察时间的不同,时间序列中的时间可以是可以是年份、季度、月份或其他任何时间形式。

    时间序列:

    (1)平稳序列(stationary series)

    是基本上不存在趋势的序列,序列中的各观察值基本上在某个固定的水平上波动,在不同时间段波动程度不同,但不存在某种规律,随机波动

    (2)非平稳序列(non-stationary series)

    是包含趋势、季节性或周期性的序列,只含有其中一种成分,也可能是几种成分的组合。可分为:有趋势序列、有趋势和季节性序列、几种成分混合而成的复合型序列。

    趋势(trend):时间序列在长时期内呈现出来的某种持续上升或持续下降的变动,也称长期趋势。时间序列中的趋势可以是线性和非线性。

    季节性(seasonality):季节变动(seasonal fluctuation),是时间序列在一年内重复出现的周期波动。销售旺季,销售淡季,旅游旺季、旅游淡季,因季节不同而发生变化。季节,不仅指一年中的四季,其实是指任何一种周期性的变化。含有季节成分的序列可能含有趋势,也可能不含有趋势。

    周期性(cyclicity):循环波动(cyclical fluctuation),是时间序列中呈现出来的围绕长期趋势的一种波浪形或振荡式波动。周期性是由商业和经济活动引起的,不同于趋势变动,不是朝着单一方向的持续运动,而是涨落相间的交替波动;不同于季节变动,季节变动有比较固定的规律,且变动周期大多为一年,循环波动则无固定规律,变动周期多在一年以上,且周期长短不一。周期性通常是由经济环境的变化引起。

    除此之外,还有偶然性因素对时间序列产生影响,致使时间序列呈现出某种随机波动。时间序列除去趋势、周期性和季节性后的偶然性波动,称为随机性(random),也称不规则波动(irregular variations)。

    时间序列的成分可分为4种:趋势(T)、季节性或季节变动(S)、周期性或循环波动(C)、随机性或不规则波动(I)。传统时间序列分析的一项主要内容就是把这些成分从时间序列中分离出来,并将它们之间的关系用一定的数学关系式予以表达,而后分别进行分析。按4种成分对时间序列的影响方式不同,时间序列可分解为多种模型:加法模型(additive model),乘法模型(multiplicative model)。乘法模型:Y_t=T_t\times S_t\times C_t\times I_t

    二、描述性分析

    1、图形描述

    2、增长率分析

    是对现象在不同时间的变化状况所做的描述。由于对比的基期不同,增长率有不同的计算方法。

    (1)增长率(growth rate):增长速度,是时间序列中报告期观察值与基期观察值之比减1后的结果,用%表示。由于对比的基期不同,可分为环比增长率和定基增长率。

    环比增长率:是报告期观察值与前一时期观察值之比减1,说明现象逐期增长变化的程度;

    定基增长率是报告期观察值与某一固定时期观察值之比减1,说明现象在整个观察期内总的增长变化程度。

    设增长率为G:          环比增长率 :G_i=\frac{Y_i-Y_{i-1}}{Y_{i-1}}=\frac{Y_i}{Y_{i-1}}-1,i=1,2...,n

                                           定基增长率 :G_i=\frac{Y_i-Y_{0}}{Y_{0}}=\frac{Y_i}{Y_{0}}-1,i=1,2...,n

    (2)平均增长率(average rate of increase):平均增长速度,是时间序列中逐期环比值(环比发展速度)的几何平均数减1的结果:\bar{G}=\sqrt[n]{\frac{Y_1}{Y_{0}}\times \frac{Y_2}{Y_{1}}...\times \frac{Y_n-Y_{n-1}}{Y_{i-1}}}-1=\sqrt[n]{\frac{Y_n-Y_{n-1}}{Y_{0}}}-1   n:环比值的个数

    (3)增长率分析中应注意的问题

    i:    当时间序列中的观察出现0或负数时,不宜计算增长率。这种序列计算增长率,要么不符合数学公理,要么无法解释其实际意义。可用绝对数进行分析。

    ii:    有些情况下,不能单纯就增长率论增长率,注意增长率与绝对水平结合起来。增长率是一个相对值,与对比的基数值的大小有关。这种情况,计算增长1%的绝对值来克服增长率分析的局限性:

    增长1%的绝对值表示增长率每增长一个百分点而增加的绝对数量:增长1%的绝对值=前期水平/100

    三、时间序列预测的程序

    时间序列分析的主要目的之一是根据已有的历史数据对未来进行预测。时间序列含有不同的成分,如趋势、季节性、周期性和随机性。对于一个具体的时间序列,它可能含有一种成分,也可能同时含有几种成分,含有不同成分的时间序列所用的预测方法是不同的。预测步骤:

    第一步:确定时间序列所包含的成分,确定时间序列的类型

    第二步:找出适合此类时间序列的预测方法

    第三步:对可能的预测方法进行评估,以确定最佳预测方案

    第四步:利用最佳预测方案进行预测

    1、确定时间序列成分

    (1)确定趋势成分

    确定趋势成分是否存在,可绘制时间序列的线图,看时间序列是否存在趋势,以及存在趋势是线性还是非线性。

    利用回归分析拟合一条趋势线,对回归系数进行显著性检验。回归系数显著,可得出线性趋势显著的结论。

    (2)确定季节成分

    确定季节成分是否存在,至少需要两年数据,且数据需要按季度、月份、周或天来记录。可绘图,年度折叠时间序列图(folded annual time series plot),需要将每年的数据分开画在图上,横轴只有一年的长度,每年的数据分别对应纵轴。如果时间序列只存在季节成分,年度折叠时间序列图中的折线将会有交叉;如果时间序列既含有季节成分又含有趋势,则年度折叠时间序列图中的折线将不会有交叉,若趋势上升,后面年度的折线将会高于前面年度的折线,若下降,则后面年度的折线将会低于前面年度的折线。

    2、选择预测方法

    确定时间序列类型后,选择适当的预测方法。利用时间数据进行预测,通常假定过去的变化趋势会延续到未来,这样就可以根据过去已有的形态或模式进行预测。时间序列的预测方法:传统方法:简单平均法、移动平均法、指数平滑法等,现代方法:Box-Jenkins 的自回归模型(ARMA)。

    一般来说,任何时间序列都会有不规则成分存在,在商务和管理数据中通常不考虑周期性,只考虑趋势成分和季节成分。

    不含趋势和季节成分的时间序列,即平稳时间序列只含随机成分,只要通过平滑可消除随机波动。因此,这类预测方法也称平滑预测方法。

    3、预测方法的评估

    在选择某种特定的方法进行预测时,需要评价该方法的预测效果或准确性。评价方法是找出预测值与实际值的差距,即预测误差。最优的预测方法就是预测误差达到最小的方法。

    预测误差计算方法:平均误差,平均绝对误差、均方误差、平均百分比误差、平均绝对百分比误差。方法的选择取决于预测者的目标、对方法的熟悉程度。

    (1)平均误差(mean error):Y:观测值,F:预测值,n预测值个数

                   ME=\frac{\sum_{i=1}^{n}(Y_i-F_i)}{n}     

    由于预测误差的数值可能有正有负,求和的结果就会相互抵消,这种情况下,平均误差可能会低估误差。

    (2)平均绝对误差(mean absolute deviation)是将预测误差取绝对值后计算的平均无擦,MAD:

                  MAD=\frac{\sum_{i=1}^{n}|Y_i-F_i|}{n}

    平均绝对误差可避免误差相互抵消的问题,因而可以准确反映实际预测误差的大小。

    (3)均方误差(mean square error):通过平方消去误差的正负号后计算的平均误差,MSE:

                MSE=\frac{\sum_{i=1}^{n}(Y_i-F_i)^2}{n}

    (4)平均百分比误差和平均绝对百分比误差

    ME,MAD,MSE的大小受时间序列数据的水平和计量单位的影响,有时并不能真正反映预测模型的好坏,只有在比较不同模型对同一数据的预测时才有意义。平均百分比误差(mean percentage error,MPE)和平均绝对百分比误差(mean absolute percentage error,MAPE)则不同,它们消除了时间序列数据的水平和计量单位的影响,是反映误差大小的相对值。

    MPE=\frac{\sum_{i=1}^{n}(\frac{Y_i-F_i}{Y_i}\times 100)}{n} 

    MAPE=\frac{\sum_{i=1}^{n}(\frac{|Y_i-F_i|}{Y_i}\times 100)}{n}

    4、平稳序列的预测

    平稳时间序列只含有随机成分,预测方法:简单平均法、移动平均法、指数平滑法。主要通过对时间序列进行平滑以消除随机波动,又称平滑法。平滑法可用于对时间序列进行短期预测,也可对时间序列进行平滑以描述序列的趋势(线性趋势和非线性趋势)。

    (1)简单平均法:根据已有的t期观察值通过简单平均法来预测下一期的数值。设时间序列已有的t期观察值为Y_1,Y_2,...,Y_t,则t+1期的预测值F_{t+1}为:F_{t+1}=\frac{1}{t}(Y_1+Y_2+...+Y_t)=\frac{1}{t}\sum_{i=1}^{t} Y_i

    到了t+1期后,有了t+1期的实际值,t+1期的预测误差e_{t+1}为:e_{t+1}=Y_{t+1}-F_{t+1}

    t+2期预测值:F_{t+2}=\frac{1}{t+1}(Y_1+Y_2+...+Y_t+Y_{t+1})=\frac{1}{t+1}\sum_{i=1}^{t+1} Y_i

    简单平均法适合对较为平稳的时间序列进行预测,即当时间序列没有趋势时,用该方法比较好。但如果时间序列有趋势或季节成分,该方法的预测则不够准确。简单平均法将远期的数值和近期的数值看作对未来同等重要。从预测角度,近期的数值比远期的数值对未来有更大的作用,因此简单平均法预测的结果不够准确。

    (2)移动平均法(moving average):通过对时间序列逐期递移求得平均数作为预测值的一种预测方法,有简单移动平均法(simple moving average)和加权移动平均法(weighted moving average).

    简单移动平均将最近k期数据加以平均,作为下一期的预测值。设移动平均间隔为k(1<k<t),则t期的移动平均值为:

    \bar{Y}_{t}=\frac{Y_{t-k+1}+Y_{t-k+2}+...+Y_{t-1}+Y_{t}}{k}  是对时间序列的平滑结果,通过这些平滑值可描述出时间序列的变化形态或趋势。也可以用来预测。

    t+1期的简单移动平均预测值为:F_{t+1}=\bar{Y}_{t}=\frac{Y_{t-k+1}+Y_{t-k+2}+...+Y_{t-1}+Y_{t}}{k}

    t+2期的简单移动平均预测值为:F_{t+2}=\bar{Y}_{t+1}=\frac{Y_{t-k+2}+Y_{t-k+3}+...+Y_{t}+Y_{t+1}}{k}

    移动平均法只使用最近k期的数据,在每次计算移动平均值时,移动的间隔都为k,也适合对较为平稳的时间序列进行预测。应用关键是确定合理的移动平均间隔k。对于同一个时间序列,采用不同的移动间隔,预测的准确性是不同的。可通过试验的方法,选择一个使均方误差达到最小的移动间隔。移动间隔小,能快速反映变化,但不能反映变化趋势;移动间隔大,能反映变化趋势,但预测值带有明显的滞后偏差。

    移动平均法的基本思想:移动平均可以消除或减少时间序列数据受偶然性因素干扰而产生的随机变动影响,适合短期预测。

    (3)指数平滑法(exponential smoothing)是通过对过去的观察值加权平均进行预测,使t+1期的预测值等t期的实际观察值与t期的预测值的加权的平均值。指数平滑法是从移动平均法发展而来,是一种改良的加权平均法,在不舍弃历史数据的前提下,对离预测期较近的历史数据给予较大权数,权数由近到远按指数规律递减,因此称指数平滑。指数平滑有一次指数平滑法、二次指数平滑法、三次指数平滑法等。

    一次指数平滑法也称单一指数平滑法(single exponential smoothing),只有一个平滑系数,且观察值离预测时期越久远,权数变得越小。一次指数平滑是将一段时期的预测值与观察值的线性组合作为t+1时期的预测值,预测模型为:

    F_{t+1}=\alpha Y_t+(1-\alpha )F_t      \alpha:平滑系数(0\leq \alpha\leq 1

    t+1期的数据是t期的实际观察值与t期的预测值的加权平均。1期的预测值=1期的观察值

    2期预测值:F_{2}=\alpha Y_1+(1-\alpha )F_1=\alpha Y_1+(1-\alpha )Y_1=Y_1

    3期预测值:F_{3}=\alpha Y_2+(1-\alpha )F_2=\alpha Y_2+(1-\alpha )Y_1

    4期预测值:F_{4}=\alpha Y_3+(1-\alpha )F_3=\alpha Y_3+\alpha (1-\alpha )Y_2+ (1-\alpha )^2Y_1

    对指数平滑法的预测精度,用均方误差来=衡量:

    F_{t+1}=\alpha Y_t+(1-\alpha )F_t

              =F_t+\alpha (Y_t-F_t)

    F_{t+1}是t期的预测值F_{t}加上用\alpha调整的t期预测误差(Y_t-F_t)。

    使用指数平滑法时, 关键问题是确定一个合适的平滑系数\alpha,不同的\alpha对预测结果产生不同的影响。

    \alpha=0,预测值仅仅是重复上一期的预测结果;\alpha=1,预测值就是上一期的实际值;

    \alpha越接近1,模型对时间序列变化的反应就越及时,因为它给当前的实际值赋予了比预测值更大的权数;

    \alpha越接近0,给当前的预测值赋予了更大的权数,模型对时间序列变化的反应就越慢。

    当时间序列有较大随机波动时,选较大\alpha,以便能很快跟上近期的变化;当时间序列比较平稳时,选较小\alpha

    实际应用中,需考虑预测误差,用均方误差衡量预测误差大小。确定\alpha时,可选择几个\alpha进行预测,然后找出预测误差最小的作为最后的\alpha值。

    与移动平均法一样,一次指数平滑法可用于对时间序列进行修匀,以消除随机波动,找出序列的变化趋势。

    用一次指数平滑法进行预测时,一般\alpha取值不大于0.5,若大于0.5,才能接近实际值,说明序列有某种趋势或波动过大。

    阻尼系数  \beta=1-\alpha ,阻尼系数越小,近期实际值对预测结果的影响越大,反之,越小。阻尼系数是根据时间序列的变化特性来选取。

    5、趋势型序列的预测

    时间序列的趋势可分为线性趋势和非线性趋势,若这种趋势能够延续到未来,就可利用趋势进行外推预测。有趋势序列的预测方法主要有线性趋势预测、非线性趋势预测和自回归模型预测。

    (1) 线性趋势预测

    线性趋势(linear trend)是指现象随着时间的推移而呈现稳定增长或下降的线性变化规律。

    趋势方程:\hat{Y}_t=b_0+b_1t     \hat{Y}_t:时间序列Y_t的预测值;b_1是趋势线斜率,表示时间t 变动一个单位,观察值的平均变动数量

    (2) 非线性趋势预测

    序列中的趋势通常可认为是由于某种固定因素作用同一方向所形成的。若这种因素随时间推移按线性变化,则可对时间序列拟合趋势直线;若呈现出某种非线性趋势(non-linear trend),则需要拟合适当的趋势曲线。

    i:   指数曲线(exponential curve):用于描述以几何级数递增或递减的现象,即时间序列的观察值Y_t按指数规律变化,或者时间序列的逐期观察值按一定的增长率增长或衰减。一般的自然增长及大多数经济序列都有指数变化趋势。

    趋势方程:\hat{Y}_t=b_0b_1^{t}     b_0,b_1为待定系数

    b_1>1,则增长率随着时间t的增加而增加;若b_1<1,则增长率随着时间t的增加而降低;若b_0>0,b_1<1,则预测值\hat{Y}_t逐渐降低以到0为极限。

    为确定b_0,b_1,可采用线性化手段将其化为对数直线形式,两端取对数:lg\hat{Y}_t=lgb_0+tlgb_1

    根据最小二乘原理,按直线形式的常数确定方法求得 lgb_0,lgb_1,求出 lgb_0,lgb_1后,再取其反对数,即可得到b_0,b_1

    \left\{\begin{matrix}\sum lgY=nlgb_0+lgb_1\sum t\\\sum t lgY_t=lgb_0\sum t+lgb_1\sum t^2\end{matrix}\right.

    ii:   多阶曲线:

    有些现象变化形态复杂,不是按照某种固定的形态变化,而是有升有降,在变化过程中可能有几个拐点。这时就需要拟合多项式函数。当只有一个拐点时,可拟合二项曲线,即抛物线;当有两个拐点时,需要拟合三阶曲线;有k-1个拐点时,需要拟合k阶曲线。

    6、复合型序列的分解预测

    复合型序列是指含有趋势、季节、周期和随机成分的序列。对这类序列的预测方法是将时间序列的各个因素依次分解出来,然后进行预测。由于周期成分的分析需要有多年的数据,实际中很难得到多年的数据,因此采用的分解模型为:Y_t=T_t\times S_t\times I_t

    预测方法有:季节性多元回归模型、季节自回归模型和时间序列分解法预测。

    分解法预测步骤:

    第一步:确定并分离季节成分。计算季节指数,以确定时间序列中的季节成分。然后将季节成分从时间序列中分离出去,即用每一个时间序列观察值除以相应的季节指数,以消除季节性。

    第二步:建立预测模型并进行预测。对消除了季节成分的时间序列建立适当的预测模型,并根据这一模型进行预测。

    第三步:计算最后的预测值。用预测值乘以相应的季节指数,得到最终的预测值。

    (1)确定并分离季节成分

    季节性因素分析是通过季节指数来表示各年的季节成分,以此描述各年的季节变动模式。

    i:  计算季节指数(seasonal index)

    季节指数刻画了序列在一个年度内各月或各季度的典型季节特征。在乘法模型中,季节指数以其平均数等于100%为条件而构成的,反映了某一月份或季度的数值占全年平均值的大小。若现象的发展没有季节变动,则各期的季节指数应等于100%;若某一月份或季度有明显的季节变化,则各期的季节指数应大于或小于100%。因此,季节变动的程度是根据各季节指数与其平均数(100%)的偏差程度来测定的。

    季节指数计算方法较多,移动平均趋势剔除法步骤:

    第一步:计算移动平均值(若是季节数据,采用4项移动平均,月份数据则采用12项移动平均),并对其结果进行中心化处理,即将移动平均的结果再进行一次二项移动平均,即得出中心化移动平均值(CMA)。

    第二步:计算移动平均的比值,即季节比率,即将序列的各观察值除以相应的中心化移动平均值,然后计算出各比值的季度或月份平均值。

    第三步:季节指数调整。由于各季节指数的平均数应应等于1或100%,若根据第二步计算的季节比率的平均值不等于1,则需要进行调整。具体方法:将第二步计算的每个季节比率的平均值除以它们的总平均值。

    ii:  分离季节成分

    计算出季节指数后,可将各实际观察值分别除以相应的季节指数,将季节成分从时间序列中分离出去:\frac{Y}{S}=\frac{T*S*I}{S}=T*I

    结果即为季节成分分离后的序列,反映了在没有季节因素影响下时间序列的变化形态。

    iii: 建立预测模型并进行预测

    7、时序案例分析

    https://blog.csdn.net/mengjizhiyou/article/details/104765862

     

    参考:贾俊平《统计学》第六版

    《统计学》pdf及课后答案:链接: https://pan.baidu.com/s/1dZPW0smz2cO-67zfn1BFyQ 提取码: ktxq 

    展开全文
  • 如何使用python进行时间序列分析

    千人学习 2019-07-23 21:53:47
    运用实际案例讲解如何使用Python编程的方式进行时间序列分析,包括: 自回归移动平均(ARMA)建模方法 自回归差分移动平均(ARiMA)建模方法 时间序列分解方法(趋势与季节性分析) ...
  • 时间序列--ARIMA(原理简单应用

    万次阅读 2018-12-27 15:52:32
    其原理在于:在将非平稳时间序列转化为平稳时间序列的过程中,将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。         其实就是三大块的整合 1.自回归model 自回归模型是...

    Autoregressive Integrated Moving Average Model,即自回归移动平均模型。它属于统计模型中最常见的一种,用于进行时间序列的预测。其原理在于:在将非平稳时间序列转化为平稳时间序列的过程中,将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。

     

     

     

     

    其实就是三大块的整合

    1.自回归model

    自回归模型是描述当前值与历史值之间的关系的模型,是一种用变量自身的历史事件数据对自身进行预测的方法。其公式如下:

     

     

    其中,yt是当前值;μ是常数项;p是阶数;γi是自相关系数,ϵt是误差值。

     

    自回归模型的使用有以下四项限制:

     

    该模型用自身的数据进行预测,即建模使用的数据与预测使用的数据是同一组数据;使用的数据必须具有平稳性;使用的数据必须有自相关性,如果自相关系数小于0.5,则不宜采用自回归模型;自回国模型只适用于预测与自身前期相关的现象。
     

    2.integrated

    ARIMA模型最重要的地方在于时序数据的平稳性。平稳性是要求经由样本时间序列得到的拟合曲线在未来的短时间内能够顺着现有的形态惯性地延续下去,即数据的均值、方差理论上不应有过大的变化。平稳性可以分为严平稳与弱平稳两类。严平稳指的是数据的分布不随着时间的改变而改变;而弱平稳指的是数据的期望与向关系数(即依赖性)不发生改变。在实际应用的过程中,严平稳过于理想化与理论化,绝大多数的情况应该属于弱平稳。对于不平稳的数据,我们应当对数据进行平文化处理。最常用的手段便是差分法,计算时间序列中t时刻与t-1时刻的差值,从而得到一个新的、更平稳的时间序列。
     

    3.moving average

    移动平均模型关注的是自回归模型中的误差项的累加。它能够有效地消除预测中的随机波动。

     

    1+3=ARMA

    在这个公式中,p与q分别为自回归模型与移动平均模型的阶数,是需要人为定义的。γi与θi分别是两个模型的相关系数,是需要求解的。如果原始数据不满足平稳性要求而进行了差分,则为差分自相关移动平均模型(ARIMA),将差分后所得的新数据带入ARMA公式中即可

    流程:

    自相关函数(ACF)是将有序的随机变量序列与其自身相比较,它反映了同一序列在不同时序的取值之间的相关性。

    偏自相关函数(PACF)计算的是严格的两个变量之间的相关性,是剔除了中间变量的干扰之后所得到的两个变量之间的相关程度。对于一个平稳的AR(p)模型,求出滞后为k的自相关系数p(k)时,实际所得并不是x(t)与x(t-k)之间的相关关系。这是因为在这两个变量之间还存在k-1个变量,它们会对这个自相关系数产生一系列的影响,而这个k-1个变量本身又是与x(t-k)相关的。这对自相关系数p(k)的计算是一个不小的干扰。而偏自相关函数可以剔除这些干扰

    • p: The number of lag observations included in the model, also called the lag order.
    • d: The number of times that the raw observations are differenced, also called the degree of differencing.
    • q: The size of the moving average window, also called the order of moving average.

    Shampoo Sales Dataset Plot

    我们的序列张这样,可以看出来存在趋势,不平稳所以需要差分(至少一次差分,你可以用adf检验获取更具有统计意义的结果,参考:https://www.jianshu.com/p/4130bac8ebec)

    Autocorrelation Plot of Shampoo Sales Data

    自回归图长这样,所以我们大致选择滞后项为5(更精确的选择可以参考上面链接)

    from pandas import read_csv
    from pandas import datetime
    from pandas import DataFrame
    from statsmodels.tsa.arima_model import ARIMA
    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)
    # fit model
    model = ARIMA(series, order=(5,1,0))
    model_fit = model.fit(disp=0)
    print(model_fit.summary())
    # plot residual errors
    residuals = DataFrame(model_fit.resid)
    residuals.plot()
    pyplot.show()
    residuals.plot(kind='kde')
    pyplot.show()
    print(residuals.describe())

    这里我们选择lag=5,差分=1,MA=0看看模型

                                 ARIMA Model Results
    ==============================================================================
    Dep. Variable:                D.Sales   No. Observations:                   35
    Model:                 ARIMA(5, 1, 0)   Log Likelihood                -196.170
    Method:                       css-mle   S.D. of innovations             64.241
    Date:                Mon, 12 Dec 2016   AIC                            406.340
    Time:                        11:09:13   BIC                            417.227
    Sample:                    02-01-1901   HQIC                           410.098
                             - 12-01-1903
    =================================================================================
                        coef    std err          z      P>|z|      [95.0% Conf. Int.]
    ---------------------------------------------------------------------------------
    const            12.0649      3.652      3.304      0.003         4.908    19.222
    ar.L1.D.Sales    -1.1082      0.183     -6.063      0.000        -1.466    -0.750
    ar.L2.D.Sales    -0.6203      0.282     -2.203      0.036        -1.172    -0.068
    ar.L3.D.Sales    -0.3606      0.295     -1.222      0.231        -0.939     0.218
    ar.L4.D.Sales    -0.1252      0.280     -0.447      0.658        -0.674     0.424
    ar.L5.D.Sales     0.1289      0.191      0.673      0.506        -0.246     0.504
                                        Roots
    =============================================================================
                     Real           Imaginary           Modulus         Frequency
    -----------------------------------------------------------------------------
    AR.1           -1.0617           -0.5064j            1.1763           -0.4292
    AR.2           -1.0617           +0.5064j            1.1763            0.4292
    AR.3            0.0816           -1.3804j            1.3828           -0.2406
    AR.4            0.0816           +1.3804j            1.3828            0.2406
    AR.5            2.9315           -0.0000j            2.9315           -0.0000
    -----------------------------------------------------------------------------

    最后那个roots其实没太明白是什么玩意。。。。

    ARMA Fit Residual Error Line Plot

    上面是残差图,可以看出来并不会杂乱无章,所以说明我们的模型不是很好

    count   35.000000
    mean    -5.495213
    std     68.132882
    min   -133.296597
    25%    -42.477935
    50%     -7.186584
    75%     24.748357
    max    133.237980

    残差均值也不=0,所以确实模型不好啊

    按理说残差表现好才能预测,那先假设残差表现好把

    如果我们使用训练数据集中的100个观测值来拟合模型,那么预测的下一个时间步的索引将被指定给预测函数start=101, end=101。这将返回一个包含预测的元素的数组。

    如果在配置模型时执行了任何不同操作(d>0),我们也希望预测的值保持在原始的比例。这可以通过将typ参数设置为值“levels”来指定:typ=“levels”。

    另外,我们可以通过使用forecast()函数来避免所有这些规范,该函数使用模型执行一步预测。我们可以将训练数据集分为训练集和测试集,使用训练集来拟合模型,并为测试集上的每个元素生成一个预测。

    考虑到对差分和AR模型的依赖,需要滚动预测。执行滚动预测的一种粗略方法是在每次接收到新的观测之后重新创建ARIMA模型。

    我们手动跟踪一个名为history的列表中的所有观察结果,这个列表中包含了培训数据,并且每个迭代都会添加新的观察结果。把这些放在一起,下面是一个使用Python中的ARIMA模型滚动预测的示例。

    from pandas import read_csv
    from pandas import datetime
    from matplotlib import pyplot
    from statsmodels.tsa.arima_model import ARIMA
    from sklearn.metrics import mean_squared_error
    
    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)
    X = series.values
    size = int(len(X) * 0.66)
    train, test = X[0:size], X[size:len(X)]
    history = [x for x in train]
    predictions = list()
    for t in range(len(test)):
    	model = ARIMA(history, order=(5,1,0))
    	model_fit = model.fit(disp=0)
    	output = model_fit.forecast()
    	yhat = output[0]
    	predictions.append(yhat)
    	obs = test[t]
    	history.append(obs) # 这里实现了滚动预测,应该是ARIMA只能预测下一步而不能多步
    	print('predicted=%f, expected=%f' % (yhat, obs))
    error = mean_squared_error(test, predictions)
    print('Test MSE: %.3f' % error)
    # plot
    pyplot.plot(test)
    pyplot.plot(predictions, color='red')
    pyplot.show()

    ARIMA Rolling Forecast Line Plot

    效果图如上

    https://machinelearningmastery.com/arima-for-time-series-forecasting-with-python/

    使用建议:

    https://machinelearningmastery.com/gentle-introduction-box-jenkins-method-time-series-forecasting/

     

    https://blog.csdn.net/qq_27123591/article/details/80272669 

    这里有两个具体的例子实现了ARIMA

    1.https://machinelearningmastery.com/time-series-forecast-study-python-annual-water-usage-baltimore/

    2.https://machinelearningmastery.com/time-series-forecast-case-study-python-monthly-armed-robberies-boston/

    这两个例子介绍了如何根据acf、pacf选择ARIMA的pdq

    这里我们用predict实现了ARIMA的滚动预测,也可以手动实现(虽然不必要)可以参考:

    https://machinelearningmastery.com/make-manual-predictions-arima-models-python/

    展开全文
  • 机器学习(三)——时间序列

    万次阅读 2018-07-02 09:13:00
    笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据...

    笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。

    我的公众号为:livandata

    简而言之:
    对某一个或者一组变量 x(t) 进行观察测量,将在一系列时刻t1,t2,⋯,tn 所得到的离散数字组成的序列集合,称之为时间序列。

    例如: 某股票A从2015年6月1日到2016年6月1日之间各个交易日的收盘价,可以构成一个时间序列;某地每天的最高气温可以构成一个时间序列。

    一些特征:
    趋势:是时间序列在长时期内呈现出来的持续向上或持续向下的变动。

    季节变动:是时间序列在一年内重复出现的周期性波动。它是诸如气候条件、生产条件、节假日或人们的风俗习惯等各种因素影响的结果。

    循环波动:是时间序列呈现出得非固定长度的周期性变动。循环波动的周期可能会持续一段时间,但与趋势不同,它不是朝着单一方向的持续变动,而是涨落相同的交替波动。

    不规则波动:是时间序列中除去趋势、季节变动和周期波动之后的随机波动。不规则波动通常总是夹杂在时间序列中,致使时间序列产生一种波浪形或震荡式的变动。只含有随机波动的序列也称为平稳序列。

    严平稳:

    如果对所有的时刻 t,任意正整数 k 和任意 k 个正整数:

    的联合分布与:

    的联合分布相同,我们称时间序列{rt} 是严平稳的。

    也就是:

    的联合分布在时间的平移变换下保持不变,这是个很强的条件。而我们经常假定的是平稳性的一个较弱的方式。

    弱平稳:

    若时间序列 {rt} 满足下面两个条件:

    则时间序列 {rt} 为弱平稳的。即该序列的均值,rt与rt-l 的协方差不随时间而改变,l为任意整数。

    在金融数据中,通常我们所说的平稳序列,是弱平稳的。

    差分:

    差分(这里为前向),就是求时间序列{rt}在 t时刻的值 rt 与 t-1 时刻的值r(t-1) 的差不妨记做 dt,则我们得到了一个新序列{dt},为一阶差分,对新序列{dt}再做同样的操作,则为二阶差分。

    通常非平稳序列可以经过d次差分,处理成弱平稳或者近似弱平稳时间序列。回头看上图,我们发现二阶差分得到的序列比一阶差分效果更好。

    自相关函数 (AutocorrelationFunction, ACF):

    相关系数度量了两个向量的线性相关性,而在平稳时间序列 {rt} 中,我们有时候很想知道,rt 与它的过去值 rt-i 的线性相关性。 这时候我们把相关系数的概念推广到自相关系数。

    rt 与 rt-l 的相关系数称为 rt 的间隔为 l 的自相关系数,通常记为 ρl。具体的:

    这里用到了弱平稳序列的性质:

    则函数: 称为rt 的样本自相关函数(ACF)。

    当自相关函数中所有的值都为0时,我们认为该序列是完全不相关的;因此,我们经常需要检验多个自相关系数是否为0。

    白噪声序列:

    随机变量X(t)(t=1,2,3……),如果是由一个不相关的随机变量的序列构成的,即对于所有S不等于T,随机变量Xt和Xs的协方差为零,则称其为纯随机过程。

    对于一个纯随机过程来说,若其期望和方差均为常数,则称之为白噪声过程。白噪声过程的样本实称成为白噪声序列,简称白噪声。之所以称为白噪声,是因为他和白光的特性类似,白光的光谱在各个频率上有相同的强度,白噪声的谱密度在各个频率上的值相同。

    线性时间序列:

    时间序列{rt},如果能写成:

    则我们称{rt} 为线性序列。其中at称为在t时刻的新息(innovation)或扰动(shock)。

    很多时间序列具有线性性,即是线性时间序列,相应的有很多线性时间序列模型,例如接下来要介绍的AR、MA、ARMA,都是线性模型,但并不是所有的金融时间序列都是线性的。

    对于弱平稳序列,我们利用白噪声的性质很容易得到rt的均值和方差:

    因为 Var(rt)一定小于正无穷,因此必须是收敛序列,因此满足:

    即:随着i的增大,远处的扰动 at-i 对 rt 的影响会逐渐消失。

    一、自回归(AR)模型:

    在第一章中,我们计算了上证指数部分数据段的ACF,看表可知间隔为1时:

    根据这点我们可以建立下面的模型:

    其中{at}是白噪声序列,这个模型与简单线性回归模型有相同的形式,这个模型也叫做一阶自回归(AR)模型,简称AR(1)模型

    从AR(1)很容易推广到AR(p)模型:


    AR(p)模型的特征根及平稳性检验。

    我们先假定序列是弱平稳的,则有;

    因为{at}是白噪声序列,因此有:

    所以有:

    根据平稳性的性质,又有E(rt) =E(rt-1)=...= u,从而:

    对式2.1,假定分母不为0, 我们将下面的方程称为特征方程:

    该方程所有解的倒数称为该模型的特征根,如果所有的特征根的模都小于1,则该AR(p)序列是平稳的。

    下面我们就用该方法,检验上证指数日收益率序列的平稳性。

    我们可以看看模型有多少阶。

    可以看出,自动生成的AR模型是17阶的。关于价次的讨论在下节内容,我们画出模型的特征根,来检验平稳性。

    可以看出,所有特征根都在单位圆内,则序列为平稳的!
    二、AR(p)模型的定阶:

    一般有两种方法来决定p:

    第一种:利用偏相关函数(PartialAuto Correlation Function,PACF)

    第二种:利用信息准则函数

    偏相关函数判断p:

    对于偏相关函数的介绍,这里不详细展开,重点介绍一个性质:

    AR(p)序列的样本偏相关函数是 p 步截尾的。

    所谓截尾,就是快速收敛应该是快速的降到几乎为0或者在置信区间以内。

    具体我们看下面的例子,还是以之前上证指数日收益率序列。

    我们看出,按照截尾来看,模型阶次p在110+,但是之前调用的自动生成AR模型,阶数为17,这一点我也有些不解。

    当然,我们很少会用这么高的阶次。。

    信息准则--- AIC、BIC、HQ :

    现在有以上这么多可供选择的模型,我们通常采用AIC法则。我们知道:增加自由参数的数目提高了拟合的优良性,AIC鼓励数据拟合的优良性但是尽量避免出现过度拟合(Overfitting)的情况。所以优先考虑的模型应是AIC值最小的那一个。赤池信息准则的方法是寻找可以最好地解释数据但包含最少自由参数的模型。不仅仅包括AIC准则,目前选择模型常用如下准则:

    AIC = -2 ln(L) + 2 k 中文名字:赤池信息量 akaikeinformation criterion

    BIC = -2 ln(L) + ln(n)*k中文名字:贝叶斯信息量 bayesian information criterion

    HQ = -2 ln(L) +ln(ln(n))*k hannan-quinn criterion

    下面我们来测试下3种准则下确定的p,仍然用上证指数日收益率序列。为了减少计算量,我们只计算间隔前10个看看效果。

    可以看出,3个准则在第一点均取到最小值,也就是说,p的最佳取值应该在1,我们只计算了前10个,结果未必正确。

    当然,利用上面的方法逐个计算是很耗时间的,实际上,有函数可以直接按照准则计算出合适的order,这个是针对 ARMA模型的,我们后续再讨论。

    模型的检验:

    根据式2.0,如果模型是充分的,其残差序列应该是白噪声,根据我们第一章里介绍的混成检验,可以用来检验残差与白噪声的接近程度。

    我们先求出残差序列:

    然后我们检查它是不是接近白噪声序列。

    观察p-value可知,该序列可以认为没有相关性,近似得可以认为残差序列接近白噪声。

    拟合优度及预测:

    我们使用下面的统计量来衡量拟合优度:

    但是,对于一个给定的数据集,R2是用参数个数的非降函数,为了克服该缺点,推荐使用调整后的R2:

    它的值在0-1之间,越接近1,拟合效果越好。

    下面我们计算之前对上证指数日收益率的AR模型的拟合优度。

    可以看出,模型的拟合程度并不好,当然,这并不重要,也许是这个序列并不适合用AR模型拟合。

    三、滑动平均(MA)模型:

    MA(q)模型的形式:

    c0为一个常数项。这里的at,是AR模型t时刻的扰动或者说新息,则可以发现,该模型,使用了过去q个时期的随机干扰或预测误差来线性表达当前的预测值。
    MA模型的性质:

    平稳性:

    MA模型总是弱平稳的,因为他们是白噪声序列(残差序列)的有限线性组合。因此,根据弱平稳的性质可以得出两个结论:

    自相关函数:

    对q阶的MA模型,其自相关函数ACF总是q步截尾的。因此MA(q)序列只与其前q个延迟值线性相关,从而它是一个“有限记忆”的模型。

    这一点可以用来确定模型的阶次,后面会介绍。

    可逆性:

    当满足可逆条件的时候,MA(q)模型可以改写为AR(p)模型。这里不进行推导,给出1阶和2阶MA的可逆性条件。

    1阶:

    2阶:

    MA的阶次判定:

    我们通常利用上面介绍的第二条性质:MA(q)模型的ACF函数q步截尾来判断模型阶次。示例如下:

    使用上证指数的日涨跌数据(2013年1月至2014年8月)来进行分析,先取数据(点击查看原文代码):

    可以看出,序列看上去是弱平稳的。下面我们画出序列的ACF:

    我们发现ACF函数在43处截尾,之后的acf函数均在置信区间内,我们判定该序列MA模型阶次为43阶。

    建模和预测:

    由于sm.tsa中没有单独的MA模块,我们利用ARMA模块,只要将其中AR的阶p设为0即可。

    函数sm.tsa.ARMA中的输入参数中的order(p,q),代表了AR和MA的阶次。模型阶次增高,计算量急剧增长,因此这里就建立10阶的模型作为示例,如果按上一节的判断阶次来建模,计算时间过长。

    我们用最后10个数据作为out-sample的样本,用来对比预测值。

    我们先来看看拟合效果,计算:

    得结果0.0278706962641

    可以看出,score远小于1,拟合效果不好。

    然后我们用建立的模型进行预测最后10个数据

    可以看出,建立的模型效果很差,预测值明显小了1到2个数量级!就算只看涨跌方向,正确率也不足50%。所以该模型不适用于原数据。

    当然如果真的这么简单能预测指数日涨跌才奇怪~

    关于MA的内容只做了简单介绍,下面主要介绍ARMA模型

    四、ARMA模型:

    在有些应用中,我们需要高阶的AR或MA模型才能充分地描述数据的动态结构,这样问题会变得很繁琐。为了克服这个困难,提出了自回归滑动平均(ARMA)模型。

    基本思想是把AR和MA模型结合在一起,使所使用的参数个数保持很小。

    模型的形式为:

    其中,{at}为白噪声序列,p和q都是非负整数。AR和MA模型都是ARMA(p,q)的特殊形式。

    利用向后推移算子B,上述模型可写成:

    (后移算子B,即上一时刻)

    这时候我们求rt的期望,得到:

    和上期我们的AR模型一毛一样。因此有着相同的特征方程:

    该方程所有解的倒数称为该模型的特征根,如果所有的特征根的模都小于1,则该ARMA模型是平稳的。

    有一点很关键:ARMA模型的应用对象应该为平稳序列! 我们下面的步骤都是建立在假设原序列平稳的条件下的~

    4.1 识别ARMA模型阶次

    4.1.1 PACF、ACF 判断模型阶次

    我们通过观察PACF和ACF截尾,分别判断p、q的值。(限定滞后阶数50)

    可以看出,模型的阶次应该为(27,27)。然而,这么高的阶次建模的计算量是巨大的。

    为什么不再限制滞后阶数小一些?如果lags设置为25,20或者更小时,阶数为(0,0),显然不是我们想要的结果。

    综合来看,由于计算量太大,在这里就不使用(27,27)建模了。采用另外一种方法确定阶数。

    4.2 信息准则定阶

    关于信息准则,上一期有过一些介绍:

    目前选择模型常用如下准则: (其中L为似然函数,k为参数数量,n为观察数)

    AIC = -2 ln(L) + 2 k 中文名字:赤池信息量 akaikeinformation criterion

    BIC = -2 ln(L) +ln(n)*k 中文名字:贝叶斯信息量 bayesian information criterion

    HQ = -2 ln(L) +ln(ln(n))*k hannan-quinn criterion

    我们常用的是AIC准则,AIC鼓励数据拟合的优良性但是尽量避免出现过度拟合(Overfitting)的情况。所以优先考虑的模型应是AIC值最小的那一个模型。

    下面,我们分别应用以上3种法则,为我们的模型定阶,数据仍然是上证指数日涨跌幅序列:

    为了控制计算量,我们限制AR最大阶不超过6,MA最大阶不超过4。 但是这样带来的坏处是可能为局部最优。

    可以看出,AIC求解的模型阶次为(3,3)。我们这里就以AIC准则为准~至于到底哪种准则更好,小伙伴们可以分别建模进行对比~

    4.2 模型的建立及预测

    我们使用上一节AIC准则求解的模型阶次(3,3)来建立ARMA模型,源数据为上证指数日涨跌幅数据,最后10个数据用于预测。

    同样的,先来看看拟合效果:

    得结果:0.0495081497069

    对比之前建立的AR、MA模型,可以发现拟合精度上有所提升,但仍然是不够看的级别。

    接着来看预测效果:

     

    如图,可以看出,虽然还是准头很低,不过相比之前的MA模型,只看涨跌的话,胜率为55.6%,效果还是好了不少。

    五、 ARIMA模型:

    到目前为止,我们研究的序列都集中在平稳序列。,即ARMA模型研究的对象为平稳序列。如果序列是非平稳的,就可以考虑使用ARIMA模型。

    ARIMA比ARMA仅多了个"I",代表着其比ARMA多一层内涵:也就是差分

    一个非平稳序列经过d次差分后,可以转化为平稳时间序列。d 具体的取值,我们得分被对差分1次后的序列进行平稳性检验,若果是非平稳的,则继续差分。直到d次后检验为平稳序列。

    5.1 单位根检验:

    ADF是一种常用的单位根检验方法,它的原假设为序列具有单位根,即非平稳,对于一个平稳的时序数据,就需要在给定的置信水平上显著,拒绝原假设。

    下面给出示例,我们先看上证综指的日指数序列:

    看图形,这里显然是非平稳的。接着我们进行ADF单位根检验。

    可以看出,p-value为0.1704489,大于显著性水平。原假设:序列具有单位根即非平稳。不能被拒绝。 因此上证指数日指数序列为非平稳的。

    我们将序列进行1次差分后再次检验!

    从图形来看,序列近似平稳序列,我们来进行ADF检验:p-value: 2.31245750144e-30

    可以看出,p-value非常接近于0,拒绝原假设,因此,该序列为平稳的。

    可见,经过1次差分后的序列是平稳的,对于原序列,d的取值为1即可。

    5.2 ARIMA(p,d,q)模型阶次确定

    上面一小节我们确定了差分次数d,接下来,我们就可以将差分后的序列建立ARMA模型。

    首先,我们还是尝试PACF和ACF来判断p、q。

    可以看出,模型的阶次为(27,27),还是太高了。建模计算了太大。我们再看看AIC准则根据AIC准则,差分后的序列的ARMA模型阶次为(2,2)。因此,我们要建立的ARIMA模型阶次(p,d,q) = (2,1,2)

    5.3 ARIMA模型建立及预测

    根据上一结确定的模型阶次,我们对差分后序列建立ARMA(2,2)模型:

    我们先看差分序列的ARMA拟合值。

    得0.0397489997089

    再看对差分序列的预测情况:

    可以看出,差分序列ARMA模型的拟合效果和预测结果并不好,预测值非常小,这代表什么?这代表对于新的值,这里认为它很接近上一时刻的值。

    这个影响可能来自模型阶次,看来模型阶次还是得尝试更高阶的。这里就不建模了,(计算时间太长),大家有兴趣可以试试高阶的模型。

    然后我们将预测值还原(即在上一时刻指数值的基础上加上差分差值的预估):

    我们发现,预测序列像是比原序列延后了一段时间。 这充分表现了对最近数据的依赖。这是因为对差分序列进行预测时过于“保守”。显然,这种滞后性,在我们预测金融数据时会陷入被动。

    当然,这也说明该模型并不能很好得预测指数,上面也说过,模型阶次的提高可能会提高预测的效果。

    展开全文
  • 时间序列

    千次阅读 2018-09-02 00:33:43
    时间序列的定义 所谓时间序列就是按照时间的顺序记录的一列有序数据。对时间序列进行观察、研究、找寻他发展变化的规律,预测他将来的走势就是时间序列分析,时间序列分析方法只适用于近期与短期的预测。 相关特征...
  • 时间序列(一)时间序列的生成

    千次阅读 2019-07-05 16:48:22
    版权声明:本文为博主原创文章,...
  • 关于时间序列问题

    千次阅读 2019-05-15 09:53:11
    按照 AAL 模板将大脑划分为 116 脑区后,再将每个被试的 175 个功能磁共振成像时间序列进行脑区内体素平均,如此,每个脑区对应一个平均时间序列,从而每个被试得到 116 个脑区的平均时间序列,对应 116×175 的矩阵...
  • 时间序列模型 (七): 时间序列建模的基本步骤

    万次阅读 多人点赞 2019-04-22 12:21:50
    时间序列建模的基本步骤 时间序列建模的基本步骤 习题 时间序列经典教材推荐 时间序列模型 (一):模型概述 时间序列模型 (二):移动平均法 时间序列模型 (三):指数平滑法 时间序列模型 (四):差分...
  • 时间序列模型 (一):模型概述

    万次阅读 多人点赞 2019-04-21 21:47:12
    时间序列的其它博文系列: 时间序列模型 (一):模型概述 时间序列模型 (二):移动平均法 时间序列模型 (三):指数平滑法 时间序列模型 (四):差分指数平滑法、 自适应滤波法v 时间序列模型 (五): ...
  • 时间序列分析

    万次阅读 多人点赞 2017-03-22 17:04:51
    http://blog.csdn.net/pipisorry/article/details/62053938时间序列简介时间序列是时间间隔不变的情况下收集的时间点集合。这些集合被分析用来了解长期发展趋势,为了预测未来或者表现分析的其他形式。但是什么时间...
  • Matlab时间序列分析

    万次阅读 多人点赞 2018-11-13 18:53:46
    在引入时间序列前,先介绍几个matlab函数 matlab中的gallery函数简析 Matlab 中的 gallery 函数是一个测试矩阵生成函数。当我们需要对某些算法进行测试的时候,可以利用gallery函数来生成各种性质的测试矩阵。其用法...
  • 使用R语言进行时间序列分析

    万次阅读 多人点赞 2018-04-08 10:50:32
    一、时间序列的定义 时间序列是将统一统计值按照时间发生的先后顺序来进行排列,时间序列分析的主要目的是根据已有数据对未来进行预测。一个稳定的时间序列中常常包含两个部分,那么就是:有规律的时间序列+噪声。...
  • 时间序列分析.pdf

    热门讨论 2009-06-22 05:11:30
    本书从应用的角度出发,试图借助计算机的存贮功能和计算功能来抽象掉其深奥的数学理论和复杂的运算,从而使只具一般数学知识的读者便可掌握和运用时间序列分析方法。在阐述中,尽可能回避严格的数学推导和证明,而从...
  • 数据挖掘之时间序列分析

    万次阅读 多人点赞 2018-08-12 23:45:16
    时间序列分析的目的是给定一个已被观测了的时间序列,预测该序列的未来值。 表1 常用的时间序列模型 模型名称 描述 平滑法 常用于趋势分析和预测,利用修匀技术,削弱短期随机波动对序列的影响,使...
  • 本书的目的在于为学生、研究者和预测者提供关于动态系统、经济计量学和时间序列分析方面的概览。从第一个原理开始,汉密尔顿的明析介绍使得新旧进展皆适合于大学一年级学生和非专业人员。另外,时间序列分析从内容...
  • python时间序列分析

    千次阅读 多人点赞 2018-03-05 22:45:49
    本文转载自博客园大神“大熊猫淘沙”的一篇文章——python时间序列分析。 文章写的生动有趣干货满满,特此收藏转载一下。原文地址:https://www.cnblogs.com/foley/p/5582358.html 1. 什么是时间序列 1.1 环境...
  • 时间序列分析及应用:R语言 原书第2版 》以易于理解的方式讲述了时间序列模型及其应用 主要内容包括:趋势 平稳时间序列模型 非平稳时间序列模型 模型识别 参数估计 模型诊断 预测 季节模型 时间序列回归模型 异...
  • R语言实现时间序列分析

    千次阅读 2019-11-11 20:11:45
    一、时间序列分析导论图: 处理方式: 1.对于原始数据进行季节性处理和差分,以形成平稳序列;期间如果遇到了随机序列,则停止时间序列建模 2.对于给定的序列进行自相关函数和偏自相关函数分析(在不同的滞后...
  • 第十三章 时间序列分析和预测

    万次阅读 2015-09-01 21:11:32
    时间序列分析就其发展的历史阶段和所使用的统计分析方法来看,有传统的时间序列分析和现代时间序列分析。下文主要介绍传统的时间序列的分析方法,内容包括时间序列数据的统计和预测方法。1 时间序列及其分解时间序列...
  • [python] 时间序列分析之ARIMA

    万次阅读 多人点赞 2015-11-03 21:37:23
    时间序列建模基本步骤 ...要对平稳时间序列分别求得其**自相关系数ACF** 和**偏自相关系数PACF** ,通过对自相关图和偏自相关图的分析,得到最佳的**阶层 p **和**阶数 q** 4. 由以上得到的$d、q、
  • 时间序列分析及应用(R语言)(原书第2版)》以易于理解的方式讲述了时间序列模型及其应用,内容包括趋势、平稳时间序列模型、非平稳时间序列模型、模型识别、参数估计、模型诊断、预测、季节模型、时间序列回归...
  • 时间序列分析与matlab实现,matlab实现的时间序列分析
  • 第一章 时间序列分析简介按照时间的顺序把随机事件变化发展的过程记录下来就构成了一个时间序列。对时间序列进行观察、研究、找寻它变化发展的规律,预测它将来的走势就是时间序列分析。描述型时序分析:通过直观的...
  • 【Python】时间序列分析完整过程

    万次阅读 多人点赞 2019-05-20 10:48:21
    1. 导言 1.1 基本定义   根据维基百科上对时间序列的定义,我们简单将其理解为: 时间序列:一系列以时间顺序作为索引的数据点...  咱们先来看看,对时间序列数据分析,需要用到哪些库吧 ~ import numpy as np ...
  • 学习混沌时间序列的不错参考! 目录 第一章 引言 混沌的起源 混沌的本质 混沌时间序列 第二章 混沌动力学 几个典型的例子 动力系统的基本概念 特征量 混沌时间序列的判别方法 第三章 时间序列的重构相空间 重构相...
  • 时间序列分析--ARIMA模型

    万次阅读 多人点赞 2016-10-15 14:08:57
    指数平滑法对时间序列上连续的值之间的相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间, 那么预测误差必须是不相关的, 且必须是服从零均值、 方差不变的正态分布。即使指数平滑法对时间序列连续数值...
  • 数学建模常用模型24:时间序列分析

    万次阅读 多人点赞 2018-08-21 19:18:54
    2019-03-22补充了spss结果分析(案例)...对时间序列进行观察、研究,找寻它变化发展的规律,预测它将来的走势就是时间序列分析 AR(p)模型 具有上述结构的模型称为p阶自回归模型,记为AR(p) MA(q)模型 ...
  • 1. 前言金融时间序列分析:1. 基础知识 金融时间序列分析:2. 数学分析模型前面2篇文章讲了金融时间序列分析的基础知识,本文简单介绍下怎么实战。 网上有很多用R语言进行金融时间序列分析的资料,但是用Python的...
  • 包含了用分析时间序列是常用的程序源代码,及程序的请详细说明

空空如也

1 2 3 4 5 ... 20
收藏数 808,639
精华内容 323,455
关键字:

时间序列