3.1 基础 - 时间序列建模
我们从基础开始吧。 这包括平稳序列,随机散步,Rho系数,Dickey Fuller Test of Stationarity。 如果这些术语已经吓到你了,别担心 - 他们会变得清楚一点,我敢打赌,你会开始享受这个话题,我会解释一下。
3.1.1 平稳序列
一系列为平稳序列的三个基本标准:
-
系列的平均值不应该是时间的一个函数,而应该是一个常数。 下面的图像具有满足条件的左手图,而红色的图具有时间依赖平均值。
-
序列的方差不应该是时间的函数。 这个属性被称为同方差。 以下图表描述了什么是什么,什么不是固定系列。 (注意右侧图中分布的变化差异)
-
第i项和第(i + m)项的协方差不应该是时间的函数。 在下图中,您将注意到随着时间的增加,这种差距越来越近。 因此,“红色系列”的协方差与时间不一致。
3.1.2 为什么我关心时间序列的“平稳性”?
我首先介绍这个部分的原因是,除非你的时间序列是静止的,否则你不能建立一个时间序列模型。 在违反固定标准的情况下,首先必须对时间序列进行平化,然后尝试随机模型来预测该时间序列。 有多种方式使这种稳定性。
3.1.3 随机走
这是时间序列中最基本的概念。 你可能会很了解这个概念。 但是,我发现很多业内人士将随机游走解释为一个固定的过程。 在这部分借助于一些数学,我将使这个概念永远清晰。 我们来举个例子。
示例:想象一个女孩随意移动到一个巨型棋盘上。 在这种情况下,女孩的下一个位置只取决于最后的位置。
现在想象,你坐在另一个房间里,看不到那个女孩。 你想预测一下女孩的位置。 你会有多准确? 当然,随着女孩的位置变化,你会变得越来越不准确。 在t = 0,你确切知道女孩在哪里。 下一次,她只能移动到8个正方形,因此你的概率会下降到1/8而不是1,而且会持续下降。 现在我们来试一下这个系列:
X(t)= X(t-1)+ Er(t)
其中Er(t)是时间点t处的误差。 这是女孩在每个时间点带来的随机性。
现在,如果我们递归地适应所有的X,我们将终于得到以下等式:
X(t)= X(0)+ Sum(Er(1),Er(2),Er(3)..... Er(t))
现在,让我们尝试验证我们对这个随机游走公式的固定系列的假设:
平均值是常数吗?
E [X(t)] = E [X(0)] + Sum(E [Er(1)],E [Er(2)],E [Er(3t))])
我们知道任何错误的期望将为零,因为它是随机的
因此,我们得到E [X(t)] = E [X(0)] =常数。
方差是否恒定?
Var [Er(2)],Var [Er(3)] ... Var [X(t)] = Var [X(0)] + Sum(Var [Er(t))])
Var [X(t)] = t * Var(Error)=时间依赖。
因此,我们推断随机游走不是一个固定的过程,因为它具有时变方差。 另外,如果我们检查协方差,我们也看到这也取决于时间
3.2 引入系数
我们已经知道随机游走是一个非平稳的过程。 让我们在方程中引入一个新的系数,看是否可以使方程平稳。
3.2.1 引入系数:Rho
X(t)= Rho * X(t-1)+ Er(t)
现在,我们将
![Uploading image_274132.png . . .]
改变Rho的价值,看看我们能不能使序列稳定下来。 在这里,我们将视觉上解释分散,而不是做任何检查平稳性的测试。
我们从Rho = 0开始一个完全固定的系列。 这是时间序列的情节:
将Rho的值增加到0.5给出如下图:
您可能会注意到我们的周期变得更广泛,但基本上似乎并不是严重违反固定假设。 现在我们来讨论一个更极端的Rho = 0.9的情况
我们仍然看到X在一段时间后从极值返回到零。 这个系列也没有显着地违反非平稳性。 现在,我们来看看rho = 1的随机游走。
这显然是违规的。 什么使rho = 1在一个固定测试中出现的特殊情况? 我们会找到数学原因。
让我们对方程“X(t)= Rho * X(t-1)+ Er(t)”的两边采取期望。
E [X(t)] = Rho * E [X(t-1)]
例如,如果X(t-1)= 1,E [X(t)] = 0.5(Rho = 0.5)。 现在,如果X从0移动到任何方向,则在下一步中将其拉回到零。 唯一可以驱动它的组件是错误的术语。 错误术语同样可能在任何一个方向。 当Rho变为1时会发生什么? 没有力量可以在下一步中拉下X。
3.2.Augmented Dickey–Fuller test 扩展迪基-福勒检验
这是检查平稳度的统计测试之一。 这里的零假设是TS是非平稳的。 测试结果包括测试统计和一些不确定性水平的临界值。 如果“测试统计”小于“临界值”,我们可以拒绝零假设,并说系列是的。可以看出这里的拒绝域是{u<u0},这样代表平稳,是拒绝域。ADF的零假设是有一个单位根,替代方法是没有单位根。 如果p值高于临界尺寸,那么我们不能拒绝存在单位根。
- 测试值高于临界值,那么存在单位根,接受H0,非平稳时间序列
- 测试值小于临界值,那么拒绝H0,接受H1,没有单位根,平稳时间序列
python中可使用现成的工具statsmodels来实现adf检验
dw["ret"] = dw['close'].diff(1)
dw["log"] = np.log(dw['close']).diff(1)
dw.dropna(inplace=True)
result = sts.adfuller(dw["ret"].values, 1)
adf:float
检验统计
p值:float
MacKinnon基于MacKinnon(1994)的近似p值
usedlag:int
使用的滞后数
nobs:int
用于ADF回归和计算的观察数
临界值。
临界值:dict
1%,5%和10%的检验统计量的关键值
水平。 基于MacKinnon(2010)
icbest:float
自动标记不是无最大信息标准。
(-13.348425690372366,
5.7325941497185636e-25,
0,
142,
{'5%': -2.8821181874544233, '1%': -3.4772616240489951, '10%': -2.5777431104939494},
165.84438279201979)
3.3 定阶
简单的理解就是找到时间序列的周期,比如说气温这一项,就有明显的年度周期性,前几年的同期数据对预测当年的气温有极大的参考意义。
从统计学上讲就是寻找是得ACF(样本自相关系数)最大的时间间隔。
常用定阶方法是ACF和PACF。