精华内容
下载资源
问答
  • 基于小波分析技术,将原始非平稳时间序列分解为一层近似系数和多层细节系数,对其分别采用自回归滑动平均模型以及BP神经网络...而小波-BP神经网络的预测方法无论是精度还是计算复杂度方面都要明显优于小波-ARMA方法。
  • 提出了一种基于经验模式分解和支持向量回归的非线性、非平稳时间序列预测建模方法。首先,针对时间序列的非平稳特征,通过经验模式分解将其分解为若干个本征模式分量,使其中每个分量均成为平稳序列;其次,对每个...
  • 平稳时间序列预测

    千次阅读 2017-06-24 09:43:47
    所谓预测,就是要利用序列已知的样本值对序列在未来的某个时刻的取值进行估计。目前对平稳序列最常用的预测方法是线性最小方差预测。线性是指预测值为观察值序列的线性函数,最小方差是指预测方差达到最小。

    所谓预测,就是要利用序列已知的样本值对序列在未来的某个时刻的取值进行估计。目前对平稳序列最常用的预测方法是线性最小方差预测。线性是指预测值为观察值序列的线性函数,最小方差是指预测方差达到最小。

    AR(p)序列预测

    下载并调用forecast()
    -object:拟合信息文件名。
    -h:预测期数。
    -level:置信区间的置信水平,不特殊指定的话,系统会自动给出置信水平的分别为80%和95%的置信区间。

    根据1950-2008年的观察值序列预测2009-2013年的新增加里程数:

     library(forecast)
    > a<-read.table("D:/R-TT/book4/4R/data/file8.csv",sep=",",header = T)
    > x<-ts(a$kilometer,start=1950)
    > x.fit<-arima(x,order = c(2,0,0))
    > x.fore<-forecast(x.fit,h=5)
    > x.fore
         Point Forecast     Lo 80    Hi 80     Lo 95    Hi 95
    2009       9.465515 -15.02434 33.95537 -27.98848 46.91951
    2010       6.215194 -23.94089 36.37128 -39.90456 52.33495
    2011       8.392736 -21.76507 38.55054 -37.72964 54.51512
    2012      11.678108 -19.95476 43.31098 -36.70019 60.05640
    2013      12.885903 -19.44653 45.21833 -36.56228 `
    2.33409

    系统默认输出预测图
    plot(x.fore)
    预测区间

    MA(q)序列预测

    方法同上,更改ARIMAl中的order参数.

    ARMA(p,q)序列预测

    方法同上,更改ARIMAl中的order参数.

    展开全文
  • 提出一种基于二进正交小波变换和AR-LSSVM方法的非平稳时间序列预测方案.首先利用Mallat 算法对非平稳时间序列进行分解和重构,分离出非平稳时间序列中的低频信息和高频信息;然后对高频信息构建自回归模型,对低频信息...
  • 时间序列预测方法最全总结!

    千次阅读 多人点赞 2021-03-12 00:15:38
    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。需要明确一点的是,与回归分析预测模型...

    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。

    需要明确一点的是,与回归分析预测模型不同,时间序列模型依赖于数值在时间上的先后顺序,同样大小的值改变顺序后输入模型产生的结果是不同的。如之前的文章所介绍,时间序列可以分为平稳序列,即存在某种周期,季节性及趋势的方差和均值不随时间而变化的序列,和非平稳序列。如何对各种场景的时序数据做准确地预测,是一个非常值得研究的问题。

    本文为大家总结时间序列预测的有关方法,浅析这些技术并探索如何可以提高这些方法的预测效果。

    01

    基本规则法

    要预测一个时间序列,我们首先需要发现其变化的规律。最基本的方法,就是通过人工经验,挖掘时序数据的演化特征,找到时序变化的周期,从而预估时间序列的未来走势。具体的观察一个时间序列,当序列存在周期性时,提取时间序列的周期性特征进行预测。

    图 | 抽取时序的周期进行拟合

    02

    传统参数法

    之前我们介绍了时间序列的统计分析方法,该方法可以将时间序列的演化变为数学参数,天然的,我们可以通过拟合好的模型,进行时间序列的预测。

    传统的参数预测方法可以分为两种,一种拟合标准时间序列的餐顺方法,包括移动平均,指数平均等;另一种是考虑多因素组合的参数方法,即AR,MA,ARMA等模型。这类方法比较适用于小规模,单变量的预测,比如某门店的销量预测等。总的来说,基于此类方法的建模步骤是:

    首先需要对观测值序列进行平稳性检测,如果不平稳,则对其进行差分运算直到差分后的数据平稳;
    在数据平稳后则对其进行白噪声检验,白噪声是指零均值常方差的随机平稳序列;
    如果是平稳非白噪声序列就计算ACF(自相关系数)、PACF(偏自相关系数),进行ARMA等模型识别,
    对已识别好的模型,确定模型参数,最后应用预测并进行误差分析。
    

    这类方法一般是统计或者金融出身的人用的比较多,对统计学或者随机过程知识的要求比较高。而在数据挖掘的场景中比较难适用,因为需要大量的参数化建模。比如有一个连锁门店的销售数据,要预测每个门店的未来销量,用这类方法的话就需要对每个门店都建立模型, 这样就很难操作了。

    03

    时间序列分解

    时间序列分解法是数年来一直非常有用的方法,一个时间序列往往是一下几类变化形式的叠加或耦合:

    长期趋势(Secular trend, T):长期趋势指现象在较长时期内持续发展变化的一种趋向或状态。
    季节变动(Seasonal Variation, S):季节波动是由于季节的变化引起的现象发展水平的规则变动
    循环波动(Cyclical Variation, C):循环波动指以若干年为期限,不具严格规则的周期性连续变动
    不规则波动(Irregular Variation, I): 不规则波动指由于众多偶然因素对时间序列造成的影响
    

    图 | 原始时间序列

    时间序列分解模型

    /加法模型

    加法模型的形式如下:

    加法模型中的四种成分之间是相互独立的,某种成分的变动并不影响其他成分的变动。各个成分都用绝对量表示,并且具有相同的量纲。

    /乘法模型

    乘法模型的形式如下:

    乘法模型中四种成分之间保持着相互依存的关系,一般而言,长期趋势用绝对量表示,具有和时间序列本身相同的量纲,其他成分则用相对量表示。

    /加乘混合模型

    以上两种方式的混合

    时间序列的长期趋势分析

    图 | 拟合的时序趋势

    /移动平均法

    在原时间序列内依次求连续若干期的平均数作为其某一期的趋势值,如此逐项递移求得一系列的移动平均数,形成一个平均数时间序列。

    /时间回归法

    使用回归分析中的最小二乘法,以时间t或t的函数为自变量拟合趋势方程。常用的趋势方程如下:

    一阶线性方程
    二次(多次)方程曲线
    指数曲线
    

    时间序列季节变动分析

    时间序列短期会受季节等短期因素影响,从而存在一些周期性


    图 | 拟合的季节变动

    /乘法模型-季节指数

    乘法模型中的季节成分通过季节指数来反映。常用的方法称为移动平均趋势剔除法。步骤如下:

    1. 计算一动平均值

    2. 从序列中剔除移动平均值

    时间序列循环变动分析

    时序长期来看会存在一个循环往复,通常通过剩余法来计算循环变动成分C:

    如果有季节成分,计算季节指数,得到季节调整后的数据TCI
    根据趋势方程从季节调整后的数据中消除长期趋势,得到序列CI
    对消去季节成分和趋势值的序列CI进行移动平均以消除不规则波动,得到循环变动成分C
    

    图 | 拟合的长期循环变动

    时间序列不规则变动分析

    除了以上三种变动信息,剩下的为不规律的时序变动信息。如有需要,可以进一步分解出不规则变动成分:

    对于一个时间序列,剔除长期趋势,季节性,循环变动因素之后,剩下的就是不规则变动因素

    图 | 拟合的不规则变动

                 Prophet

    这里特别提一个Facebook 所服务化的时间序列预测工具,Prophet,具体可以参考官网说明。该方法类似于STL时序分解的思路,增加考虑节假日等信息对时序变化的影响。

    04

    机器学习

    近年来时间序列预测方法,多采用机器学习方式。机器学习的方法,主要是构建样本数据集,采用“时间特征”到“样本值”的方式,通过有监督学习,学习特征与标签之前的关联关系,从而实现时间序列预测。常用的场景有:

    /单步预测

    在时间序列预测中的标准做法是使用滞后的观测值,作为输入变量来预测当前的时间的观测值。这被称为单步单变量预测。

    /多步预测

    另一种预测问题类型是使用过去的观测序列 来预测未来的观测序列。这就是多步预测或序列预测。

    /多变量预测

    另一个重要的时间序列称为多元时间序列,即每个时间有多个观测值:

    这意味着我们通过不同的测量手段得到了多种观测值,并且希望预测其中的一个或几个值。例如,我们可能有两组时间序列观测值,我们希望分析这组多元时间序列来预测 

    基于以上场景,许多监督学习的方法可以应用在时间序列的预测中,比如svm/xgboost/逻辑回归/回归树/...

    05

    深度学习

    深度学习方法近年来逐渐替代机器学习方法,成为人工智能与数据分析的主流,对于时间序列的分析,有许多方法可以进行处理,包括:循环神经网络-LSTM模型/卷积神经网络/基于注意力机制的模型(seq2seq)/...

    /循环神经网络

    神经网络(RNN)框架及其变种(LSTM/GRU/...)是为处理序列型而生的模型,天生的循环自回归的结构是对时间序列的很好的表示。所采用的方式也是监督学习,不过不需要人为的构建时序特征,可以通过深度学习网络拟合时序曲线,捕捉时间先后顺序关系,长期依赖,进行特征学习与预测。

    /卷积神经网络

    传统的卷积神经网络(CNN)一般认为不太适合时序问题的建模,这主要由于其卷积核大小的限制,不能很好的抓取长时的依赖信息。但是最近也有很多的工作显示,特定的卷积神经网络结构也可以达到很好的效果,通常将时间序列转化为图像,再应用基于卷积神经网络的模型做分析。

    Gramian Angular Field (格拉姆角场GAF)

    将笛卡尔坐标系下的一维时间序列,转化为极坐标系表示,再使用三角函数生成GAF矩阵。计算过程:

    数值缩放:将笛卡尔坐标系下的时间序列缩放到[0,1]或[-1,1]区间
    极坐标转换:使用坐标变换公式,将笛卡尔坐标系序列转化为极坐标系时间序列
    角度和/差的三角函数变换:若使用两角和的cos函数则得到GASF,若使用两角差的cos函数则得到GADF
    

    Short Time Fourier Transform (短时傅里叶变换STFT)

    在语音信号处理场景使用很广泛,其目标主要将时间序列转为时频图像,进而采用卷积网络进行特征分析。


    /时间卷积网络

    时间卷积网络(TCN)是一种特殊的卷积神经网络,针对一维空间做卷积,迭代多层捕捉长期关系。具体的,对于上一层t时刻的值,只依赖于下一层t时刻及其之前的值。和传统的卷积神经网络的不同之处在于,TCN不能看到未来的数据,它是单向的结构,不是双向的。也就是说只有有了前面的因才有后面的果,是一种严格的时间约束模型,因此又被称为因果卷积。

    /基于注意力机制的模型

    在RNN中分析时间序列需要我们一步步的顺序处理从 t-n 到 t 的所有信息,而当它们相距较远(n非常大)时RNN的效果常常较差,且由于其顺序性处理效率也较低。基于注意力机制(Attention)的模型,采用跳步的方式计算每个数值之间的两两关联,然后组合这些关联分数得到一个加权的表示。该表示通过前馈神经网络的学习,可以更好的考虑到时序的上下文的信息。

    以上步骤如下动图所示:

    /结合CNN+RNN+Attention,作用各不相同互相配合

    主要设计思想:

    • CNN捕捉短期局部依赖关系

    • RNN捕捉长期宏观依赖关系

    • Attention为重要时间段或变量加权

    06

    一些需要注意的难点

    • 理解时间序列预测问题是要用历史数据预测未来数据

    • 时间序列问题的训练集、测试集划分

    • 特征工程方法及过程

    • 如何转化为监督学习数据集

    • LSTM计算过程理解,包括输入输出维度、参数数量等

    • seq2seq过程的理解,decoder实现

    • attention注意力机制的原理及实现,包括encoder-decoder attention, self attention, multi-head attention等

    • 时间卷积网络的含义,dilated-convolution 和 causal-convolution

    • prophet预测原理,各参数对模型拟合效果、泛化效果的影响

    • 时间序列基本规则法中周期因子得计算过程

    • 传统方法如周期因子、线性回归、ARMA等的预测结果表现为,预测趋势大致正确,但对波动预测不理想,体现在波动的幅度差异、相位偏移。

    • 时间序列分解方法。理解加法模型和乘法模型,判断分解模型的选取及分解技巧。

    /工具

    • tslearn:开源的时间序列机器学习python工具包

    • tsfresh:开源的时间序列特征提取python工具包

    • pyts:开源的时间序列分类Python工具包。提供预处理工具及若干种时间序列分类算法

    “整理不易,三连

    展开全文
  • 时间序列预测方法 时间序列预测 (Time Series Forecasting) 背景 (Background) We learned various data preparation techniques and also set up a robust evaluation framework in my previous articles. Now, we...

    时间序列预测方法

    时间序列预测 (Time Series Forecasting)

    背景 (Background)

    We learned various data preparation techniques and also set up a robust evaluation framework in my previous articles. Now, we are ready to explore different forecasting techniques.

    在之前的文章中,我们学习了各种数据准备技术,还建立了一个强大的评估框架。 现在,我们准备探索不同的预测技术。

    With the availability of many machine learning models, often we forget the power of our classical algorithms. It is a good idea to start with classical approaches. Even though the classical approaches are focused on the linear relationship, they perform well on a wide range of problems assuming the data is suitably prepared.

    有了许多机器学习模型,我们常常会忘记经典算法的强大功能。 从经典方法开始是个好主意。 即使经典方法着重于线性关系,但如果适当准备了数据,它们在各种问题上也能表现良好。

    Here is the list of techniques that are going to be discussed in the current article. We will also discuss their Python implementation.

    这是本文中将要讨论的技术列表。 我们还将讨论它们的Python实现。

    1. Univariate Time Series Forecasting1.1. Autoregression1.2. Moving Average1.3. Autoregressive Moving Average1.4. Autoregressive Integrated Moving Average1.5. Seasonal Autoregressive Integrated Moving Average2. Multivariate Time Series Forecasting2.1. Vector Auto-Regression2.2. Vector Moving Average2.3. Vector Auto Regression Moving Average3. Time Series Forecasting with Exogenous Variables3.1. SARIMA with Exogenous Variables3.2. Vector Autoregression Moving-Average with Exogenous Regressors 4. Time Series Forecasting with Smoothing Techniques4.1. Moving Average Smoothing4.2. Single Exponential Smoothing4.3. Double Exponential Smoothing4.4. Triple Exponential Smoothing

    1.单变量时间序列预测 1.1。 自回归1.2。 移动平均线1.3。 自回归移动平均线1.4。 自回归综合移动平均线1.5。 季节性自回归综合移动平均线2。多元时间序列预测 2.1。 向量自回归2。 向量移动平均线2.3。 向量自回归移动平均线3.具有外生变量的时间序列预测 3.1。 具有外生变量的SARIMA 3.2。 向量自回归移动平均与外生回归4。时间序列预测与平滑技术 4.1。 移动平均平滑4.2。 单指数平滑4.3。 双指数平滑4.4。 三重指数平滑

    单变量时间序列预测 (Univariate Time Series Forecasting)

    These are datasets where only a single variable is observed at each time, such as temperature each hour. The univariate time series is modeled as a linear combination of its lags. That is, the past values of the series are used to forecast the current and future.

    这些数据集每次只能观察到一个变量,例如每小时的温度。 单变量时间序列建模为其滞后的线性组合。 也就是说,该系列的过去值用于预测当前和将来。

    自回归(AR) (Autoregression (AR))

    Autoregression models an output (value at the next step) based on the linear combination of input variables (values at prior time steps). For example, in linear regression y-hat is the prediction, β₀ and β₁ are coefficients calculated by the model on training data, and X is an input value.

    自回归基于输入变量(先前时间步长的值)的线性组合为输出(下一步的值)建模。 例如,线性回归的y帽子是预测,β₀β₁是通过对训练数据的模型计算出的系数,且X为一个输入值。

    Image for post

    Similarly, in time series we can predict the value at the next time step given the observations at current and previous time steps.

    同样,在时间序列中,鉴于当前和先前时间步长的观测值,我们可以预测下一时间步长的值。

    Image for post

    ‘p’ is the auto-regressive trend parameter, the ideal value for p can be determined from an autocorrelation plot.

    “ p”是自回归趋势参数,可以从自相关图确定p的理想值。

    The method is suitable for time series without trend and seasonal components.

    该方法适用于没有趋势和季节成分的时间序列。

    Python Implementation — AR

    Python实现— AR

    # Import libraries
    from statsmodels.tsa.ar_model import AutoReg
    from random import random
    # Generate a sample dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = AutoReg(data, lags=1)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)

    移动平均线(MA) (Moving Average (MA))

    The difference between observed and predicted values is called the residual error. These errors from forecasts on a time series provide another source of information that we can model. It is calculated as:

    观测值和预测值之间的差异称为残差。 时间序列预测中的这些错误提供了我们可以建模的另一信息来源。 计算公式为:

    residual error = observed — predicted

    Therefore, the moving average method is also called the model of residual error, this method models the next step in the sequence as a linear function of the residual errors. You can observe this difference in the following equation.

    因此,移动平均法也称为残差模型,该方法将序列中的下一步建模为残差的线性函数。 您可以在以下方程式中观察到这种差异。

    Image for post

    ‘q’ is the moving-average trend parameter, ideal value for q can be determined from the partial auto-correlation plot.

    “ q”是移动平均趋势参数,可以从局部自相关图确定q的理想值。

    The method is suitable for time series without trend and seasonal components.

    该方法适用于没有趋势和季节成分的时间序列。

    Python Implementation — MA

    Python实现— MA

    # Import libraries
    from statsmodels.tsa.arima_model import ARMA
    from random import random
    # Generate a sample dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = ARMA(data, order=(0, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)

    自回归移动平均线(ARMA) (Autoregressive Moving Average (ARMA))

    The Autoregressive Moving Average (ARMA) method uses both the above information (original observations and residual errors) for forecasting, it as an advancement over individual AR and MA models.

    自回归移动平均(ARMA)方法将上述信息(原始观测值和残差)用于预测,这是对单个AR和MA模型的改进。

    Therefore, this method models the next step in the sequence as a linear function of the observations and residual errors at prior time steps.

    因此,该方法将序列的下一步建模为观测值和先前时间步长的残差的线性函数。

    Modelers have to specify both the parameters p and q for both components of the model, i.e., autoregressive (AR) and moving average (MA).

    建模人员必须为模型的两个组件指定参数p和q,即自回归(AR)和移动平均值(MA)。

    The method is suitable for time series without trend and seasonal components.

    该方法适用于没有趋势和季节成分的时间序列。

    Python Implementation — ARMA

    Python实现— ARMA

    # Import libraries
    from statsmodels.tsa.arima_model import ARMA
    from random import random
    # Generate a sample dataset
    data = [random() for x in range(1, 100)]
    # fit model
    model = ARMA(data, order=(2, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)

    自回归综合移动平均线(ARIMA) (Autoregressive Integrated Moving Average (ARIMA))

    The statistical models we have discussed so far assume the time series to be stationary, but in reality, most of the time series is not stationary, i.e the statistical properties of a series like mean, variance changes over time.

    到目前为止,我们已经讨论过的统计模型假设时间序列是固定的,但实际上,大多数时间序列都不是固定的,即,诸如均值,方差之类的序列的统计属性会随时间变化。

    Therefore, we can add one more step as a pre-processing step, i.e., differencing (‘d’) the time series to make it stationary.

    因此,我们可以再增加一个步骤作为预处理步骤,即对时间序列求差('d')以使其稳定。

    Now, we have a method that combines both Autoregression (AR) and Moving Average (MA) models as well as a differencing pre-processing step of the sequence to make the sequence stationary, called integration (I).

    现在,我们有了一种将自回归(AR)模型和移动平均(MA)模型以及序列的差分预处理步骤组合在一起以使序列平稳的方法,称为积分(I)。

    Therefore, we need to find out whether the time series we are dealing with is stationary or not. We can diagnose stationarity by looking at seasonality and trend in time series plots, checking the difference in mean and variance for various periods, and the Augmented Dickey-Fuller (ADF) test. You can find these techniques in detail in my previous article ‘Build Foundation for Time Series Forecasting’.

    因此,我们需要找出我们要处理的时间序列是否固定。 我们可以通过查看时序图中的季节性和趋势,检查各个时期的均值和方差以及增强Dickey-Fuller(ADF)检验来诊断平稳性。 您可以在我之前的文章“ 为时间序列预测建立基础 ”中找到这些技术的详细信息。

    The method is suitable for time series with trend and without seasonal components.

    该方法适用于具有趋势且没有季节性成分的时间序列。

    Python Implementation — ARIMA

    Python实现— ARIMA

    # Import libraries
    from statsmodels.tsa.arima_model import ARIMA
    from random import random
    # Generate a sample dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = ARIMA(data, order=(1, 1, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.predict(len(data), len(data), typ='levels')
    print(yhat)

    季节性自回归综合移动平均线(SARIMA) (Seasonal Autoregressive Integrated Moving Average (SARIMA))

    This method is an extension of the ARIMA model to deal with seasonal data. It models seasonal and non-seasonal components of the series separately.

    此方法是ARIMA模型的扩展,可以处理季节性数据。 它分别为该系列的季节和非季节组件建模。

    There are four other seasonal parameters added to this approach in addition to three trend related parameters used in the ARIMA approach.

    除了ARIMA方法中使用的三个与趋势相关的参数外,该方法还添加了四个其他季节性参数。

    Non-seasonal parameters same as ARIMA

    非季节参数与ARIMA相同

    p: Autoregressive orderd: Differencing orderq: Moving average order

    p:自回归阶:差分阶q:移动平均阶

    Seasonal parameters

    季节参数

    P: Seasonal autoregressive orderD: Seasonal differencing orderQ: Seasonal moving average orderm: Number of time steps for a single seasonal period

    P:季节性自回归阶数D:季节性微分阶数Q:季节性移动平均阶数:单个季节性周期的时间步数

    The method is suitable for time series with trend and/or seasonal components.

    该方法适用于具有趋势和/或季节成分的时间序列。

    Python Implementation — SARIMA

    Python实现— SARIMA

    # Import libraries
    from statsmodels.tsa.statespace.sarimax import SARIMAX
    from random import random
    # Generate a sample dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = SARIMAX(data, order=(1, 1, 1), seasonal_order=(1, 1, 1, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)

    多元时间序列预测 (Multivariate Time Series Forecasting)

    These are datasets where two or more variables are observed at each time. In multivariate time series, each variable is modeled as a linear combination of past values of itself and the past values of other variables in the system.

    这些是每次都观察到两个或更多变量的数据集。 在多元时间序列中,将每个变量建模为自身的过去值与系统中其他变量的过去值的线性组合

    向量自回归(VAR) (Vector Auto-Regression (VAR))

    It is a generalized version of the autoregression model to forecast multiple parallel stationary time series. It comprises one equation per variable in the system. The right-hand side of each equation includes a constant and lags of all of the variables in the system.

    它是自回归模型的广义版本,可以预测多个并行的平稳时间序列。 它在系统中每个变量包含一个方程。 每个方程的右侧包括一个常数和系统中所有变量的滞后。

    There are two decisions we have to make when using a VAR to forecast, namely how many variables (K) and how many lags (p) should be included in the system.

    使用VAR进行预测时,我们必须做出两个决定,即系统中应包含多少变量(K)和多少滞后(p)。

    The number of coefficients to be estimated in a VAR is equal to K+pK² (or 1+pK per equation). For example, for a VAR with K=5 variables and p=2 lags, there are 11 coefficients per equation, giving a total of 55 coefficients to be estimated. The more coefficients that need to be estimated, the larger the estimation error.

    VAR中要估计的系数数等于K +pK²(或每个等式1 + pK)。 例如,对于具有K = 5个变量和p = 2滞后的VAR,每个方程式有11个系数,总共有55个系数要估计。 需要估计的系数越多,估计误差越大。

    Therefore, it is advisable to keep K small and include only variables that are correlated with each other, and therefore useful in forecasting each other. Information criteria are commonly used to select the number of lags (p) to be included.

    因此,建议将K保持较小并仅包含彼此相关的变量,因此在相互预测中很有用。 信息标准通常用于选择要包括的滞后次数(p)。

    Python Implementation — VAR

    Python实现— VAR

    # Import libraries
    from statsmodels.tsa.vector_ar.var_model import VAR
    from random import random
    # Generate a sample dataset with correlated variables
    data = list()
    for i in range(100):
    v1 = i + random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
    # fit model
    model = VAR(data)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.forecast(model_fit.y, steps=1)
    print(yhat)

    The VAR can also be implemented using VARMAX function in Statsmodels which allows estimation of VAR, VMA, VARMA, and VARMAX models through the order argument.

    也可以使用Statsmodels中的VARMAX函数来实现VAR,该函数允许通过order参数估计VAR,VMA,VARMA和VARMAX模型。

    向量移动平均线(VMA) (Vector Moving Average (VMA))

    It is a generalized version of the moving average model to forecast multiple parallel stationary time series.

    它是移动平均模型的广义版本,可以预测多个并行的固定时间序列。

    Python Implementation — VMA

    Python实现— VMA

    # Import libraries
    from statsmodels.tsa.statespace.varmax import VARMAX
    from random import random
    # Generate a sample dataset with correlated variables
    data = list()
    for i in range(100):
    v1 = i+ random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
    # fit VMA model by setting the ‘p’ parameter as 0.
    model = VARMAX(data, order=(0, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.forecast()
    print(yhat)

    向量自回归移动平均值(VARMA) (Vector Auto Regression Moving Average (VARMA))

    It is the combination of VAR and VMA and a generalized version of the ARMA model to forecast multiple parallel stationary time series.

    它是VAR和VMA的组合以及ARMA模型的通用版本,可以预测多个并行的平稳时间序列。

    This method requires ‘p’ and ‘q’ parameters and is also capable of acting like a VAR model by setting the ‘q’ parameter as 0 and as a VMA model by setting the ‘p’ parameter as 0.

    此方法需要'p'和'q'参数,并且还可以通过将'q'参数设置为0来充当VAR模型,并通过将'p'参数设置为0来充当VMA模型。

    Python Implementation — VARMA

    Python实现— VARMA

    # Import libraries
    from statsmodels.tsa.statespace.varmax import VARMAX
    from random import random
    # Generate a sample dataset with correlated variables
    data = list()
    for i in range(100):
    v1 = random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
    # fit model
    model = VARMAX(data, order=(1, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.forecast()
    print(yhat)

    外生变量的时间序列预测 (Time Series Forecasting with Exogenous Variables)

    具有外生变量的SARIMA(SARIMAX) (SARIMA with Exogenous Variables (SARIMAX))

    The Seasonal Autoregressive Integrated Moving-Average with Exogenous Regressors (SARIMAX) is an extension of the SARIMA model that also includes the modeling of exogenous variables.

    具有外生回归变量的季节性自回归综合移动平均值(SARIMAX)是SARIMA模型的扩展,该模型还包括外生变量的建模。

    Before moving ahead let’s understand endogenous and exogenous variables.

    在继续之前,我们先了解一下内生变量和外生变量。

    An exogenous variable is one whose value is determined outside the model and is imposed on the model. Here, X is an exogenous variable

    外生变量是其值在模型外部确定并施加在模型上的变量 。 这里,X是一个外生变量

    An endogenous variable is a variable whose value is determined by the model. Here, main series to be forecasted is an endogenous variable.

    内生变量是其值由模型确定的变量。 在此,要预测的主要序列是一个内生变量。

    In time series, the exogenous variable is a parallel time series that are not modeled directly but is used as a weighted input to the model.

    在时间序列中,外生变量是并行时间序列,不直接建模,而是用作模型的加权输入。

    The method is suitable for univariate time series with trend and/or seasonal components and exogenous variables.

    该方法适用于具有趋势和/或季节成分以及外生变量的单变量时间序列。

    Python Implementation — SARIMAX

    Python实现— SARIMAX

    # Import libraries
    from statsmodels.tsa.statespace.sarimax import SARIMAX
    from random import random
    # Generate a sample dataset with independent exogenous variable
    data1 = [x + random() for x in range(1, 100)]
    data2 = [x + random() for x in range(101, 200)]
    # fit model
    model = SARIMAX(data1, exog=data2, order=(1, 1, 1), seasonal_order=(0, 0, 0, 0))
    model_fit = model.fit(disp=False)
    # make prediction
    exog2 = [200 + random()]
    yhat = model_fit.predict(len(data1), len(data1), exog=[exog2])
    print(yhat)

    The SARIMAX method can also be used to model the other variations with exogenous variables, such as ARX, MAX, ARMAX, and ARIMAX by including an exogenous variable.

    SARIMAX方法还可用于通过包含外生变量来建模具有外生变量(例如ARX,MAX,ARMAX和ARIMAX)的其他变量。

    向量自回归移动平均与外生回归变量(VARMAX) (Vector Autoregression Moving-Average with Exogenous Regressors (VARMAX))

    This method is an extension of the VARMA model that also includes the modeling of exogenous variables. It is a multivariate version of the ARMAX method.

    此方法是VARMA模型的扩展,该模型还包括外生变量的建模。 它是ARMAX方法的多元版本。

    The method is suitable for multivariate time series without trend and seasonal components with exogenous variables.

    该方法适用于没有趋势和具有外生变量的季节性成分的多元时间序列。

    Python Implementation — VARMAX

    Python实现— VARMAX

    # Import libraries
    from statsmodels.tsa.statespace.varmax import VARMAX
    from random import random
    # Generate a sample dataset with correlated multiple time series and an independent exogenous variable
    data = list()
    for i in range(100):
    v1 = random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
    data_exog = [x + random() for x in range(100)]
    # fit model
    model = VARMAX(data, exog=data_exog, order=(1, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    data_exog2 = [[100]]
    yhat = model_fit.forecast(exog=data_exog2)
    print(yhat)

    移动平均平滑的时间序列预测 (Time Series Forecasting with Moving Average Smoothing)

    Moving average smoothing is a simple and effective technique in time series forecasting. The same name but very different from the moving average model which we discussed in the beginning. The earlier version of the moving average (MA) is a model of residual errors, whereas this smoothing technique consists of averaging values across a window of consecutive periods.

    移动平均平滑是时间序列预测中的一种简单有效的技术。 名称相同,但与我们在开始时讨论的移动平均模型非常不同。 移动平均值(MA)的早期版本是残差模型,而这种平滑技术则包括对连续周期窗口内的值进行平均。

    In general, there are two types of moving averages are used:

    通常,使用两种类型的移动平均值:

    中心移动平均线 (Centered Moving Average)

    The value at the time (t) is calculated as the average value of current, before and after the time (t). For example, a centered moving average with window width 3:

    将时间(t)之前和之后的时间(t)的值计算为电流的平均值。 例如,窗口宽度为3的居中移动平均值:

    centered_ma(t) = mean(obs(t+1), obs(t), obs(t-1))

    Centered moving average requires the availability of future values, often we find this method impractical to use for forecasting.

    居中移动平均线需要将来值的可用性,通常我们发现此方法不适合用于预测。

    尾随移动平均线 (Trailing Moving Average)

    The value at the time (t) is calculated as the average value of current and before the time (t). For example, a trailing moving average with window width 3:

    将时间(t)处的值计算为电流的平均值,并且该时间之前(t)。 例如,窗口宽度为3的尾随移动平均线:

    trail_ma(t) = mean(obs(t), obs(t-1), obs(t-2))

    Trailing moving averages uses only current and historical observations to predict the future.

    追踪移动平均线仅使用当前和历史观察来预测未来。

    This method mainly used in feature engineering, it can also be used in making predictions. We can use the newly created series of ‘moving average values’ to forecast the next step using a naive model. Before forecasting, we assume that the trend and seasonality components of the time series have already been removed or adjusted for.

    该方法主要用于特征工程中,也可以用于进行预测。 我们可以使用新创建的一系列“移动平均值”,通过朴素的模型来预测下一步。 在进行预测之前,我们假设时间序列的趋势和季节性组成部分已被删除或调整。

    There is no python function available for this approach, instead, we can create a custom function, you can refer naive model implementation in my previous article.

    此方法没有可用的python函数,相反,我们可以创建一个自定义函数,您可以在上一篇文章中引用朴素的模型实现。

    指数平滑的时间序列预测 (Time Series Forecasting with Exponential Smoothing)

    Exponential smoothing is a time series forecasting method for univariate data. It is a close alternative to the popular Box-Jenkins ARIMA class of methods.

    指数平滑是单变量数据的时间序列预测方法。 它是流行的Box-Jenkins ARIMA类方法的替代方案。

    Both approaches predict a weighted sum of past observations, here is the important difference to be noted.

    两种方法都可以预测过去观测值的加权总和,这是需要注意的重要区别。

    ARIMA family develops a model where the prediction is a weighted linear sum of recent past observations or lags, whereas exponential smoothing explicitly uses an exponentially decreasing weight for past observations.

    ARIMA系列开发了一个模型,其中的预测是最近的过去观测值或滞后值的加权线性和,而指数平滑显式地对过去观测值使用了指数递减的权重。

    单指数平滑 (Single Exponential Smoothing)

    This method is also called Simple Exponential Smoothing, suitable for forecasting data with no clear trend or seasonal pattern. Mathematically,

    此方法也称为简单指数平滑,适用于没有明显趋势或季节性模式的预测数据。 数学上

    Image for post

    where, alpha, a smoothing parameter falls between 0 and 1. A large value means the model pays importance to the most recent observation, whereas smaller value means the oldest observations are more significant.

    其中,α(平滑参数)介于0到1之间。较大的值表示模型对最近的观测值很重要,而较小的值表示最早的观测值更重要。

    Python Implementation — SES

    Python实现— SES

    # Import libraries
    from statsmodels.tsa.holtwinters import SimpleExpSmoothing
    from random import random
    # Generate a sample dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = SimpleExpSmoothing(data)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)

    双指数平滑 (Double Exponential Smoothing)

    Double exponential smoothing is an extension to the above approach (SES), this method allows the forecasting of data with a trend. Mathematically,

    双指数平滑是上述方法(SES)的扩展,该方法允许对具有趋势的数据进行预测。 数学上

    Image for post

    In addition to the alpha, a smoothing factor for the level, an additional smoothing factor is added to control the decay of the influence of the change in a trend called beta.

    除了Alpha外, 该水平的平滑因子,添加了一个附加的平滑因子,以控制称为β的趋势变化的影响的衰减

    These methods tend to over-forecast, especially for longer forecast horizons. Motivated by this observation, Gardner & McKenzie (1985) introduced a parameter that “dampens” the trend to a flat line sometime in the future.

    这些方法倾向于过度预测,特别是对于较长的预测范围。 受此观察的启发,Gardner&McKenzie(1985)引入了一个参数,该参数在将来的某个时候将趋势“抑制”到一条平坦的线。

    Therefore, in conjunction with the smoothing parameters α and β (with values between 0 and 1), this method also includes a damping parameter ϕ which also ranges between 0 and 1.

    因此,结合平滑参数α和β(值在0和1之间),此方法还包括一个阻尼参数ϕ,其范围也在0和1之间。

    Python Implementation — Double Exponential Smoothing

    Python实现—双指数平滑

    # Import libraries
    from statsmodels.tsa.holtwinters import ExponentialSmoothing
    from random import random
    # Generate a sample dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = ExponentialSmoothing(data,trend='add', seasonal=None, damped=True)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)

    三重指数平滑 (Triple Exponential Smoothing)

    Triple Exponential Smoothing is the most advanced variation in the family, this method is also known as Holt-Winters Exponential Smoothing, named for two contributors to the method: Charles Holt and Peter Winters.

    三重指数平滑是该系列中最先进的变体,该方法也称为Holt-Winters指数平滑,以该方法的两个贡献者命名:Charles Holt和Peter Winters。

    Image for post

    In addition to the alpha and beta smoothing factors, a new parameter is added called gamma (g) that controls the influence on the seasonal component.

    除了alpha和beta平滑因子之外,还添加了一个称为gamma ( g )的新参数,用于控制对季节性分量的影响。

    Damping is possible with both additive and multiplicative Holt-Winters’ methods. A method that often provides accurate and robust forecasts for seasonal data.

    加性和乘性Holt-Winters方法都可能造成阻尼。 这种方法通常可以为季节数据提供准确而可靠的预测。

    Python Implementation — Holt-Winters Exponential Smoothing

    Python实现— Holt-Winters指数平滑

    # Import libraries
    from statsmodels.tsa.holtwinters import ExponentialSmoothing
    from random import random
    # Generate a sample dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = ExponentialSmoothing(data,trend="add", seasonal="add", seasonal_periods=12, damped=True)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)

    摘要 (Summary)

    In this article, you discovered all the important classical forecasting techniques that can help you in getting started with your forecasting problems. You can deep dive into the suitable techniques and tune it further as per your need. To build a robust forecasting model, you must start by performing the right data transformation, set up an evaluation strategy, and have ready with a persistence (benchmark) model.

    在本文中,您发现了所有重要的经典预测技术,这些技术可以帮助您入门预测问题。 您可以深入研究合适的技术,并根据需要进行进一步调整。 要构建可靠的预测模型,您必须首先执行正确的数据转换,设置评估策略并准备好持久性(基准)模型。

    Thanks for reading! Please feel free to share any comments or feedback.

    谢谢阅读! 请随时分享任何评论或反馈。

    Hope you found this article informative, in the next few articles I will discuss some of the commonly used techniques in detail.

    希望您对本文有所了解,在接下来的几篇文章中,我将详细讨论一些常用的技术。

    翻译自: https://towardsdatascience.com/lets-forecast-your-time-series-using-classical-approaches-f84eb982212c

    时间序列预测方法

    展开全文
  • Stationary Series 平稳序列 平稳序列有三个基本标准: 1、序列的均值(mean)不应该是时间的函数(意思是不应该随时间变化),而应该是一个常数。下面的左图满足这个条件,而右图的均值受时间的变化影响。 2、序列的...

    上篇文章简单提到了应该用平稳时间序列做预测,本文将介绍具体概念和原因。

    Stationary Series 平稳序列

    平稳序列有三个基本标准:

    1、序列的均值(mean)不应该是时间的函数(意思是不应该随时间变化),而应该是一个常数。下面的左图满足这个条件,而右图的均值受时间的变化影响。

    2、序列的方差(variance)不应该是时间的函数。这种特性称为homoscedasticity(同方差性)。下图描绘了平稳序列和非平稳序列,注意右图分布的不同变化范围。

    3、t时间段的序列和前一个时间段的序列的协方差(协方差,衡量的是两个变量在一段时间内同向变化的程度)应该只和时间间隔有关,而与时间t无关,在时间序列中,因为是同一个变量在不同时间段的值序列,所以这里的协方差称为自协方差。右图随着时间的增加,有一段变得越来越紧密了。所以右图的序列的协方差不是常数。

    带有趋势和季节性成分的时间序列都是非平稳的,下图给出了更多的区分平稳性的例子:

    为什么要关注序列的平稳性?

    大多数的统计预测方法都是以平稳时间序列为假设前提来设计的。
    比如,对于时间序列自回归预测来说,我们的假设是变量的历史和现状呈现出的基本特性,在未来阶段的一个长时期里会维持不变,而这里的基本特性一般就是用上面提到的均值、方差、自协方差来表示。
    更具体的说,自回归预测模型本质是'利用序列的滞后阶数(lags)作为自变量'的线性回归模型,比如lags=2表示使用变量的t-1和t-2时刻的值作为自变量来预测t时刻的值。那么通过在历史序列上训练模型后,得到的这个线性回归模型的各自变量的系数就代表了各滞后时刻的值与下一时刻值的相关性,如果时间序列接近平稳,这些相关性在未来一段时间内都不会有大的变化,那么预测未来就成为了可能。
    所以,相对非平稳序列的预测,平稳序列的预测更简单和可靠。

    非平稳序列如何做预测?

    对于非平稳时间序列的预测,我们需要先将其转换为平稳时间序列,方法包括:

    • 差分(一阶或n阶)
    • 取log
    • 开根号
    • 时间序列分解
    • 综合使用上面的方法

    一般来说,做个一阶差分,就可以得到接近平稳的时间序列了,如果方差随时间变化较大,那么先取log再做一阶差分就可以了。

    什么是差分?

    比如有一个序列:[1,5,2,12,20]
    一阶差分,得到:[5-1, 2-5, 12-2, 20-12] = [4, -3, 10, 8]
    二阶差分(即在一阶差分之后,再做一次差分),得到:[-3-4, -10-3, 8-10] = [-7, -13, -2]

    如何测试序列的平稳性?

    对于判断时间序列是否平稳,可以通过肉眼观测时间序列图,就类似上面提到的平稳性的3个基本标准,或者
    将时间序列分成多个连续的部分,计算各部分的均值、方差和自相关性(或协方差),如果结果相差很大,那么序列就不平稳。但是这些方法都不能量化平稳性,也就是用一个数值来表示出时间序列的平稳性。为此,我们可以使用‘Unit Root Tests’即单位根检验,该方法的思想是如果时间序列有单位根,则就是非平稳的。

    以下是常用的两个基于单位根检验思想的实现:

    • Augmented Dickey Fuller test (ADF Test)
      零假设为序列有单位根,是非平稳的,P-Value如果小于显著级别(0.05),则可以拒绝零假设。
    • Kwiatkowski-Phillips-Schmidt-Shin – KPSS test (trend stationary)
      与ADF正好相反,零假设为序列是平稳的。另外,在python中,可以通过指定regression='ct'参数来让kps把“确定性趋势(deterministic trend)”的序列认为是平稳的。所谓确定性趋势的序列就是斜率始终保持不变的序列,比如下面这样的:

    下面是对应的python代码:

    from statsmodels.tsa.stattools import adfuller, kpss
    df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv', parse_dates=['date'])
    
    # ADF Test
    result = adfuller(df.value.values, autolag='AIC')
    print(f'ADF Statistic: {result[0]}')
    print(f'p-value: {result[1]}')
    for key, value in result[4].items():
        print('Critial Values:')
        print(f'   {key}, {value}')
    
    # KPSS Test
    result = kpss(df.value.values, regression='c')
    print('\nKPSS Statistic: %f' % result[0])
    print('p-value: %f' % result[1])
    for key, value in result[3].items():
        print('Critial Values:')
        print(f'   {key}, {value}')
    

    输出:

    ADF Statistic: 3.14518568930674
    p-value: 1.0
    Critial Values:
       1%, -3.465620397124192
       Critial Values:
       5%, -2.8770397560752436
       Critial Values:
       10%, -2.5750324547306476
    
    KPSS Statistic: 1.313675
    p-value: 0.010000
    Critial Values:
       10%, 0.347
       Critial Values:
       5%, 0.463
       Critial Values:
       2.5%, 0.574
       Critial Values:
       1%, 0.739
    

    白噪声和平稳序列的区别

    白噪声的遵循均值为0的随机分布,没有丝毫的模式可言。用python制造一个白噪声序列,并可视化如下:

    randvals = np.random.randn(1000)
    pd.Series(randvals).plot(title='Random White Noise', color='k')
    

    去除趋势

    • 减去最佳拟合线
    • 减去均值线,或者移动平均线
    • 减去/除以 利用时间序列分解出的趋势序列

    去除季节性

    • 季节性窗口内的移动平均法,平滑季节性
    • 季节性差分,就是用当前值减去一个季节窗口之前对应的时刻的值
    • 减去/除以 利用时间序列分解出的季节性序列

    如何判断序列是否有季节性?

    • 通过肉眼看图
    • 通过自相关函数判断
    from pandas.plotting import autocorrelation_plot
    df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv')
    
    # Draw Plot
    plt.rcParams.update({'figure.figsize':(9,5), 'figure.dpi':120})
    autocorrelation_plot(df.value.tolist())
    

    • 通过时间序列分解出的季节性序列来计算,其思想是越没有季节性,那么Rt的方差和Rt+St的方差越应该区别不大,反之,这个方差的比值越应该小于1,公式如下:

      Fs越接近0,越没有季节性,越接近1,季节性越强。

    ok,本篇就这么多内容啦~,感谢阅读O(∩_∩)O。

    展开全文
  • 基于Huang变换和ARIMA模型的时间序列预测方法,马亮亮,田富鹏,文中首先通过Huang变换将非平稳时间序列分解为有限个固有模态函数和一个残余函数之和,然后应用ARIMA模型对各个固有模态函数和残余�
  • 平稳序列预测

    2017-08-17 00:25:00
    通过对时间序列逐期递移得平均数作为预测值的一种预测方法,其方法有简单移动平均法( simple moving average)和加权移动平均法(weighted moving average) 简单移动平均是将最近的 k 期数据加以平均,作为下...
  • 针对现有基于时间序列的瓦斯浓度预测方法存在算法复杂、预测步长较短等问题,根据瓦斯浓度历史监测数据的随机性与时序性,提出了一种基于ARIMA+GARCH组合模型的综采工作面瓦斯数据时间序列预测方法。首先建立ARIMA...
  • 提出一种基于二进正交小波变换和AR-LSSVM方法的非平稳时间序列预测方案。首先利用Mallat算法对非平稳时间序列进行分解和重构,分离出非平稳时间序列中的低频信息和高频信息;然后对高频信息构建自回归模型,对低频...
  • 提出了一种基于时空密度聚类的隐马尔科夫模型对时空序列进行预测方法。时空序列与一般的时间序列相比,最主要的特征是其时空依赖性以及时空非平稳性。针对如何有效地预测不同尺度分布的时空序列的问题,本文采用...
  • 基于支持向量机的多要素非平稳时间序列预测研究,穆进超,陈晓云,当前,在非平稳数据的时序预测中,通常只采用单要素数据进行支持向量机回归预测,从而导致泛化能力较差,为了改善这一状况,文章
  • 论文研究-基于小波分解和残差GM(1, 1)-AR的非平稳时间序列预测.pdf, 提出基于二进正交小波...实验结果表明,这种方法比传统的非平稳时间序列预测方法具有更高的预测精度.
  • 1. 平稳简介“平稳”是处理时间序列数据时遇到的最重要的概念之一:平稳序列是指其特性-均值、方差和协方差不随时间而变化的序列。让我们用一个直观的例子来理解这一点。考虑以下三个图形: 在第一幅图中,我们可以...
  • 提出了一种基于Hilbert-Huang变换和ARMA模型的时间序列预测方法。采用Hilbert-Huang变换将原时间序列分解成若干个平稳的固有模态函数分量,求出每一个固有模态函数分量的瞬时频率和瞬时幅值,然后对每一个固有模态...
  • 时间序列预测模型方法

    万次阅读 2016-04-21 13:46:36
    时间序列预测法是一种历史资料延伸预测,也称历史引伸预测法。是以时间数列所能反映的社会经济现象的发展过程和规律性,进行引伸外推,预测其发展趋势的方法。 时间序列,也叫时间数列、历史复数或动态数列。它是将...
  • 平稳序列

    千次阅读 2017-12-02 12:39:08
    平稳序列的性质与应用。是时间序列分析课程的第一章。
  • 利用Oracle数据库中的数据挖掘选件(Oracle Data Mining,ODM),并使用存储在Oracle数据库中的时间...与传统时间序列预测模型相比,SVM预测模型能够揭示时间序列的非线性、非平稳性和随机性,从而得到较高的预测精度。
  • 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小...
  • 基于支持向量机方法对非平稳时间序列预测!
  • project_ST_OS_ELMK 带有用于非平稳时间序列预测的内核的在线顺序极限学习机的实现。 原始文章
  • 时间序列分析的主要目的是根据已有的历史数据对未来进行预测。如餐饮销售预测可以看做是基于时间序列的短期数据预测预测的对象时具体菜品的销售...2. 对于平稳非白噪声序列, 它的均值和方差是常数。ARMA 模型是...
  • 这是我之前工作做的一个项目import data_history import data_history #...原始时间序列图平稳性检测与平稳化处理ARMA模型要求输入的时间序列类型数据具有平稳性,所以在进行时间序列预测之前,要对时间序列数据进行...
  • 第四章 平稳序列的拟合与预测 4.1 建模步骤 当我们拿到一组数据,想要通过这组数据来探究过去发生的规律,研究现在发生的强度并预测未来事情的发展走向,就需要从这些数据中挖掘出事物发生的特征,比如频率、强度、...
  • 时间序列预测,非季节性ARIMA及季节性SARIMA

    万次阅读 多人点赞 2019-03-24 21:55:00
    我们将首先介绍和讨论自相关,平稳性和季节性的概念,并继续应用最常用的时间序列预测方法之一,称为ARIMA。 介绍 时间序列提供了预测未来价值的机会。基于以前的价值观,可以使用时间序列来预测经济,天气和...
  • 机器学习和深度学习方法可以在具有挑战性的时间序列预测问题上取得令人印象...因此,在探索更先进的方法之前,既要了解经典时间序列预测方法的工作原理,又要对其进行评估。本文介绍了时间序列预测的原始和经典方法。
  • 一、统计术语时间序列法是一种统计分析方法,根据时间的数据序列预测未来发展趋势。时间序列分为平稳序列和非平稳序列两大类。平稳序列是不存在趋势只存在随机性的序列,非平稳序列则是包含趋势、季节性和随机性的...
  • 时间序列预测算法总结

    万次阅读 多人点赞 2018-10-18 10:30:48
    time series data mining 主要包括decompose(分析数据的各个成分,例如趋势,周期性),prediction(预测未来的值),classification(对有序数据序列的feature提取与分类),clustering(相似数列聚类)等。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,242
精华内容 2,496
关键字:

平稳序列预测方法