基础定义
1、方差:在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。为避免出现离均差总和为零,离均差平方和受样本含量的影响,统计学采用平均离均差平方和来描述变量的变异程度。
2、标准差:又称均方差,方差的算数平方根,反应数据集的离散程度
3、数学中常用的误差计算方法 均方根值(RMS)+ 均方根误差(RMSE)+标准差(Standard Deviation)
3.1、均方根值,也称作为效值,它的计算方法是先平方、再平均、然后开方。
3.2、均方根误差,它是观测值与真值偏差的平方和观测次数n比值的平方根,在实际测量中,观测次数n总是有限的,真值只能用最可信赖(最佳)值来代替.方根误差对一组测量中的特大或特小误差反映非常敏感,所以,均方根误差能够很好地反映出测量的精密度。均方根误差,当对某一量进行甚多次的测量时,取这一测量列真误差的均方根差(真误差平方的算术平均值再开方),称为标准偏差,以σ表示。σ反映了测量数据偏离真实值的程度,σ越小,表示测量精度越高,因此可用σ作为评定这一测量过程精度的标准。
3.3、标准差(Standard Deviation),标准差是方差的算术平方根,也称均方差(mean square error),是各数据偏离平均数的距离的平均数,它是离均差平方和平均后的方根,用σ表示,标准差能反映一个数据集的离散程度。
时间序列分析--指数平滑法
一. 基础知识:
1. 概念:时间序列是指一个数据序列,特别是之由一段时间内采集的信号组成的序列,序列前面的信号表示采集的时间较早。
2. 前提假设:时间序列分析一般假设我们获得的数据在时域上具有一定的相互依赖关系,例如股票价格在t时刻很高,那么在t+1时刻价格也会比较高(跌停才10%);如果股票价格在一段时间内获得稳定的上升,那么在接下来的一段时间内延续上升趋势的概率也会比较大。
3. 目标:(1)发现这种隐含的依赖关系,并增加我们对此类时间序列的理解;(2)对未观测到的或者尚未发生的时间序列进行预测。
我们认为时间序列由两部分组成:有规律的时间序列(即有依赖关系)+噪声(无规律,无依赖)。所以,,接下来要做的就是过滤噪声—最简单的过滤噪声的方法是 取平均。
二.简单滑动平均(rolling mean)
当窗口取得越长,噪声被去除的就越多,我们得到的信号就越平稳;但同时,信号的有用部分丢失原有特性的可能性就越大,而我们希望发现的规律丢失的可能性就越大。
2. 缺点:(1)我们要等到至少获得T个信号才能进行平均,那么得到的新的信号要比原始信号短;(2)在得到S_t的时候,我们只有到了距离t最近的T个原始信号。但在原始信号中,可能信号之间的相互依赖关系会跨越非常长的时间长度,比如X_1可能会对X_100会产生影响,这样滑动平均就会削弱甚至隐藏这种依赖关系。
三.指数平均(EXPMA)
接下来我们介绍一种稍微复杂但能克服以上缺点并且在现实中应用也更加广泛的方法:指数平均 (exponential smoothing,也叫exponential weighted moving average ),这种平均方法的一个重要特征就是,S_t与之前产生的所有信号有关,并且距离越近的信号所占权重越大。
(一)一阶指数平滑
一阶指数平滑实际就是对历史数据的加权平均,它可以用于任何一种没有明显函数规律但确实存在某种前后关联的时间序列的短期预测。
其预测公式为:yt+1’=ayt+(1-a)yt’ 式中,yt+1’–为t+1期的预测值,即本期(t期)的平滑值S_t ;
yt–为t期的实际值; yt’–为t期的预测值,即上期的平滑值S_t-1 。 该公式又可以写作:yt+1’=yt’+a(yt-
yt’)。 可见,下期预测值又是本期预测值与以a为折扣的本期实际值与预测值误差之和。
它最突出的优点是方法非常简单,甚至只要样本末期的平滑值,就可以得到预测结果。
一次指数平滑的特点是:能够跟踪数据变化。这一特点所有指数都具有。预测过程中添加最新的样本数据后,新数据应取代老数据的地位,老数据会逐渐居于次要的地位,直至被淘汰。这样,预测值总是反映最新的数据结构。
一次指数平滑有局限性。第一,预测值不能反映趋势变动、季节波动等有规律的变动;第二,这种方法多适用于短期预测,而不适合作中长期的预测;第三,由于预测值是历史数据的均值,因此与实际序列的变化相比有滞后现象。
平滑系数,指数平滑预测是否理想,很大程度上取决于平滑系数。EViews提供两种确定指数平滑系数的方法:自动给定和人工确定。选择自动给定,系统将按照预测误差平方和最小原则自动确定系数。如果系数接近1,说明该序列近似纯随机序列,这时最新的观测值就是最理想的预测值。出于预测的考虑,有时系统给定的系数不是很理想,用户需要自己指定平滑系数值。一般来说,如果序列变化比较平缓,平滑系数值应该比较小,比如小于0.l;如果序列变化比较剧烈,平滑系数值可以取得大一些,如0.3~0.5。若平滑系数值大于0.5才能跟上序列的变化,表明序列有很强的趋势,不能采用一次指数平滑进行预测。
(二)二次指数平滑
二次指数平滑是对一次指数平滑的再平滑。它适用于具线性趋势的时间数列。
我们可以看到,虽然一次指数平均在产生新的数列的时候考虑了所有的历史数据,但是仅仅考虑其静态值,即没有考虑时间序列当前的变化趋势。如果当前的股票处于上升趋势,那么当我们对明天的股票进行预测的时候,好的预测值不仅仅是对历史数据进行”平均“,而且要考虑到当前数据变化的上升趋势。同时考虑历史平均和变化趋势,这边是二阶指数平均:
公式:yt+m=(2+am/(1-a))yt’-(1+am/(1-a))yt=(2yt’-yt)+m(yt’-yt)
a/(1-a)式中,yt= ayt-1’+(1-a)yt-1
显然,二次指数平滑是一直线方程,其截距为:(2yt’-yt),斜率为:(yt’-yt) a/(1-a),自变量为预测天数。
二次指数平滑基本公式 St=αSt+(1-α)St-1 Yt+T=at+btT at=2St-St bt=(α/1-α)(St-St)
式中 St–第t期的一次指数平滑值 St–第t期的二次指数平滑值 α–平滑系数 Yt+T–第t+T期预测值,T–由t期向后推移期数。
(三)三次指数平滑预测
1. 与前两种相比,我们多考虑一个因素:季节性效应(
Seasonality)这种平均模型考虑的季节性效应在股票或者期货价格中都会比较常见,比如在过年前A股市场通常会交易比较频繁,在小麦成熟的时候小麦期货价格也会有比较明显的波动。但是,模型本身的复杂度也增加了其使用难度,我们需要一定的经验才能比较合理地设置其中复杂的参数。
2. 三次指数平滑预测是二次平滑基础上的再平滑。
其预测公式是:yt+m=(3yt’-3yt+yt)+[(6-5a)yt’-(10-8a)yt+(4-3a)yt]*am/2(1-a)2+
(yt’-2yt+yt’)*a2m2/2(1-a)2 式中,yt=ayt-1+(1-a)yt-1
它们的基本思想都是:预测值是以前观测值的加权和,且对不同的数据给予不同的权,新数据给较大的权,旧数据给较小的权。
原文:https://blog.csdn.net/u013527419/article/details/52822622
时间序列分析--ARIMA模型
指数平滑法对时间序列上连续的值之间的相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间, 那么预测误差必须是不相关的, 且必须是服从零均值、 方差不变的正态分布。即使指数平滑法对时间序列连续数值之间相关性没有要求,在某种情况下, 我们可以通过考虑数据之间的相关性来创建更好的预测模型。
自回归移动平均模型( ARIMA)是最常用的时间序列预测模型。
注意:时间序列模型通常适用于做短期预测,即统计序列过去的变化模式还未发生根本性变化。
一.时间序列的预处理
拿到一个观察值序列,首先要对它的平稳性和纯随机性进行检验,这两个重要检验称为序列的预处理。
1. 平稳:就是围绕着一个常数上下波动且波动范围有限,即有常数均值和常数方差。如果有明显的趋势或周期性,那它通常不是平稳序列。一般有三种方法:
(1)直接画出时间序列的趋势图,看趋势判断。
(2)画自相关和偏自相关图:平稳的序列的自相关图(Autocorrelation)和偏相关图(Partial Correlation)要么拖尾,要么是截尾。
(3)单位根检验:检验序列中是否存在单位根,如果存在单位根就是非平稳时间序列。
不平稳序列可以通过差分转换为平稳序列。k阶差分就是相距k期的两个序列值之间相减。如果一个时间序列经过差分运算后具有平稳性,则该序列为差分平稳序列,可以使用ARIMA模型进行分析。
2.纯随机性检验:对于纯随机序列,又称白噪声序列,序列的各项数值之间没有任何相关关系,序列在进行完全无序的随机波动,可以终止对该序列的分析。白噪声序列是没有信息可提取的平稳序列。
3.对于平稳非白噪声序列,它的均值和方差是常数。通常是建立一个线性模型来拟合该序列的发展,借此提取该序列的有用信息。ARMA模型是最常用的平稳序列拟合模型。
二、平稳时间序列建模
某个时间序列经过预处理,被判定为平稳非白噪声序列,就可以进行时间序列建模。
1. ARIMA模型
全称为 自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model, 简记ARIMA),ARIMA(p,d,q)模型是针对非平稳时间序列所建立的模型。
根据时间序列是否平稳以及回归中所含部分的不同,可分为:
移动平均过程(MA(q))
自回归过程(AR(p))
自回归移动平均过程( ARMA(p,q) )
自回归积分滑动平均过程 ( ARIMA(p,d,q) )
1.1 补充:
稳定性的确定标准是非常严格的。我们可以通过一下方法判断:
(1). 如果时间序列随着时间产生恒定的统计特征,根据实际目的我们可以假设该序列是稳定的。如下:
1)恒定的平均数
2)恒定的方差
3)不随时间变化的自协方差
(2)DF检测(Dickey-Fuller):这是一种检查数据稳定性的统计测试。无效假设:时间序列是不稳定的。测试结果由测试统计量和一些置信区间的临界值组成。如果“测试统计量”少于“临界值”,我们可以拒绝无效假设,并认为序列是稳定的。
例如:
若DF检测结果如上图所示,因为检验统计量比1%的临界值小,所以我们在99%的置信区间认为它是稳定序列。
2. 时间序列建模基本步骤
(Box-Jenkins的建模思想)
(1). 获取被观测系统时间序列数据;
(2). 对数据绘图,观测是否为平稳时间序列。若为非平稳时间序列要先进行d阶差分运算后化为平稳时间序列,此处的d即为ARIMA(p,d,q)模型中的d;若为平稳序列,则用ARMA(p,q)模型。所以ARIMA(p,d,q) 模型区别于ARMA(p,q)之处就在于前者的自回归部分的特征多项式含有d个单位根。
(3). 对得到的平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q。由以上得到的d、q、p ,得到ARIMA模型。
(4). 模型诊断,进行诊断分析,以证实所得模型确实与所观察到的数据特征相符。若不相符,重新回到第(3)步。
3. 对于2建模中的细节补充
(1). 分析得到的自相关图和偏自相关图,确定用AR(p)模型还是MA(q)模型亦或是ARMA(p,q)模型依据:
(2)若都拖尾,得到ARMA(p,q)模型,自相关图有几个在两倍标准差之外就能确定p,偏自相关图突出两倍标准差的确定q。可用AIC和SBC准则判断得到的p和q参数值的好坏,这两个指标越小越好,其中
AIC=-2*ln(模型的极大似然函数值)+2*(模型中的未知参数的个数)。
1
SBC是对AIC的修正
SBC=-2*ln(模型中的极大似然函数值)+ln(n)(模型中的未知参数的个数)
1
python中有函数可以直接求AIC,BIC,HQIC值。
4. 最终可以用得到的拟合模型预测将来走势
原文:https://blog.csdn.net/u013527419/article/details/52822666
应用
使用python进行时间序列预测的7种方法: https://www.codercto.com/a/35980.html
python时间日期函数与利用pandas进行时间序列处理详解: https://www.codercto.com/a/14470.html
使用ARIMA进行时间序列预测(Python): https://www.codercto.com/a/37851.html