我如何预测时间序列?-FinTechExplained

2020-06-05 17:36:44

预测、建模和预测时间序列在许多领域正变得越来越流行。时间序列预测就是对未来的预测。每秒都有大量数据存储在世界各地的服务器中。这些数据是无价的,可以帮助我们预测未来。

预测时间序列并不总是一个直截了当的过程。有许多技术可以构建可以估计和预测未来时间点的模型。随后,这些模型可以帮助我们做出可计算的决策,从而降低风险,增加收益。此外,在预测市场走势行为时,建立可靠和稳健的预测模型是必不可少的。

了解时间序列是如何工作的对我们来说是至关重要的,这样我们才能准确地预测未来。

准确预测未来需要对我们目标变量的当前状态有深刻的理解。我的目标是在本文中构建所需的知识。它涵盖了时间序列的基础知识。

时间序列是在一段连续的时间内收集的大量观测数据。要强调的是,如果我们观察一个变量一组时间点,并记录它的行为,那么这个变量就会形成一个随时间变化的趋势。这种趋势被称为时间序列。

时间序列分析本质上是复杂的。这主要是因为需要进行分析以发现隐藏因素和噪音。

有时,模型过于简单化,并不总是明显地说明彼此之间具有内在联系的因素。

大多数时间序列数据依赖于其过去的值。最近的过去值是变量行为的良好指标。诸如汇率之类的变量的滞后值通过其自身的一个或多个滞后值进行回归,以预测变量的当前值和未来值。缺失的数据通常由过去的数据填充。它也可以从过去的数据中计算出来,比如取平均值。

然后计算数据之间的相互关系。然后,这些关系被表示成模型,用于预测未来的时间点。有时,现在和过去的价值的加权总和被用来预测未来的价值。

在处理过去数据以预测未来数据时,重要的是要了解使用滞后运算符。滞后运算符使模型能够量化过去、现在和将来的值如何相互关联。滞后算子使用有限阶多项式,是对时间序列建模的重要工具。

例如,让我们假设我们正在记录伦敦的每日温度,并且想要构建一个预测温度的模型。明天的气温与今天相似的可能性更大。如果今天热得融化,明天不太可能下雪。

还假设我们每年都在记录世界人口。我们注意到人口每年以1%的速度增长。明年人口增长率100%的可能性不大。这是预测时间序列数据的基本概念。

大多数变量(如利率)的当前值取决于它们的过去值。股票价格、公司收入等金融序列通常呈现指数级增长/下降。可以使用回归分析技术对它们进行建模:

Intercept:如果我们绘制数据,其中x轴是时间,y轴是Y的实际值,那么Intercept是时间为0时的值。

一旦我们在散点图上画出变量的值与时间的关系,我们就可以观察图形的形状来确定它是线性的还是非线性的。简单地说,线性时间序列趋势是直线,而非线性时间序列趋势是曲线。

线性趋势更容易预测,它们为数据提供了更好的比特。非线性趋势可以是指数的,有时也可以是二次的。线性函数有一个恒定的梯度,称为增长/衰减率。负梯度表示负相关,正梯度表示时间与变量值的正相关。

非线性时间序列也可以通过在两侧取一个对数来从非线性序列转换为对数线性序列:

时间序列在本质上可以是确定性的,也可以是非确定性的。确定性时间序列总是以预期的方式表现,而非确定性时间序列本质上是随机的或随机的。

一旦观察到时间序列,就可以计算一系列指标来了解其行为。这些指标包括期望值(均值)、方差、协方差、相关性等等。

为了能够预测时间序列模型,重要的是要确保它是协方差平稳的。

如果具有过去和将来值的时间序列的均值、方差和协方差不随时间变化,则已知该模型是协方差平稳的。

协方差平稳时间序列模型是可靠的,可以更好地估计数据。如果一个模型不是协方差平稳的,那么它就会使预测趋势的过程变得困难,从而使得预测几乎是不可能的。因此,我们认为这种模型是不稳定的。

为了实现更好的预测,时间序列需要是协方差平稳的。这意味着时间序列在不同的时间点之间没有任何隐藏的关系,并且行为是稳定的。

例如,如果我们要测量一个地区一年的房屋销售量,并建立一个依赖于就业和通货膨胀率来预测房价的模型,那么我们需要确保所选择的两个因素是独立的,即就业和通货膨胀率不相互关联。此外,我们需要确保滞后的时间点不相互关联。最后,均值和方差是恒定的。否则,我们最终将构建一个不可靠的模型。

Wold表示定理将协方差平稳作为时间序列建模的前提条件。白噪声是指时间序列过程在数据点之间具有零均值、常方差、无序列相关性的过程。

假设我们观察了180天内的一系列汇率,并绘制了随时间变化的汇率图。一旦绘制出来,我们注意到曲线的均值和分布不随时间变化,也没有明显的上升或下降趋势。因此,这样的时间序列很可能是平稳的时间序列。

连续时间段上的时间序列的平均值或期望值需要是常数,才能将时间序列视为协方差平稳。这意味着期望值不应该依赖于时间。

要检查时间序列的平均值是否恒定,请将时间序列划分为相等的集合(可能为2个集合),并通过将时间序列的所有值相加,然后将计算的总和除以值的总数来计算每个集合的期望值。

如果时间序列的平均值与时间相关,则在时间序列中经历如下所示的递增趋势:

时间序列的方差或标准差需要随时间保持不变,而不应依赖于时间。这是时间序列协方差平稳的第二个标准。

要检查方差是否发生变化,请将时间序列划分为相等的集合(可能为2个集合),并通过将集合中的所有值相加,然后将计算出的总和除以集合中的值总数来计算每个集合的期望值。然后,通过首先取每个值与平均值之间的差值,最后求差值之和,然后将差值总数除以集合中的值的总数来计算方差。对所有必需的集合重复计算,并检查所有集合的差异值是否为常量。

每个趋势的价差和高度的变化表示变化的方差,如下所示

相关性衡量变量间关系的协动性强弱。它是两种资产的标准化差异。相关性始终在-1和1之间。-1表示变量负相关,+1表示变量正相关。0表示目标变量之间没有相关性。

时间点T的协方差(X,Y)=每个时间点T的(X,Y)的期望值-((X的期望值)x(Y的期望值)X,Y是两个目标变量。

要检查协方差是否在变化,请计算时间序列中两个连续点的协方差值,并检查它是否与时间无关。因此,协方差是根据当前和滞后的时间点计算的。

如果时间序列中的协方差不是常数,则该时间序列表现出随机性。此外,时间序列的分布变化没有任何明显的模式。这表明时间序列中的时间点具有变化的相关性。这种行为也被称为异方差。

Dickey-Fuller检验也可以用来确定时间序列是否是平稳的。有关假设分析的更多内容,请参见我的博客“假设分析解释”。

一旦我们将时间序列数据绘制在散点图上,如果我们观察到重复出现的模式,那么它就表明存在季节性效应。季节性影响可能是由于特定日历日(如假期)造成的。例如,如果我们在一段时间内观察购物中心的销售情况,那么它很可能会在假日期间经历销售额的增长。

为了进一步解释,让我们假设我们要预测明年的住宅燃气账单。我们收集过去4年的每月煤气费,然后画成折线图。我们很可能会注意到冬季煤气费的增加。此模式是季节性影响的典型示例,如下所示。

有时不适合针对季节性调整时间序列,特别是在捕捉时间序列中的所有趋势和变化非常重要的情况下。然而,如果分析的唯一目的是只测量时间序列中的非季节性变化,那么可以对时间序列进行季节性调整。它可以采取多种形式,从插值以降低季节性,到取平均点数,再到完全排除季节性。

如果时间序列是非平稳的,则可以对观测应用差分,以消除季节性。一种常用的方法是在经历季节性时找到时间点的观测值,然后消除季节性差异。例如,如果我们预测利率,并在每个周一经历一个持续的利息点上升,那么我们可以找到上周一的利率值,然后从周一的现值中减去它,以消除季节性影响。

引入了许多变量来表示时间中的特定时隙。例如,如果我们每天都在捕捉股价的变化,如果每个周五,我们都会经历市场的大幅波动,那么周五就可以被表示为季节性虚拟变量。伪变量取值0到1,其中0表示忽略星期五的影响。这就好比我们在告诉模型要忘掉那些季节性的、虚拟的、可预测的变量。

季节性虚拟变量可以用来说明特定的节假日。仔细考虑季节性虚拟变量是很重要的。

理解时间序列分析至关重要,因为它几乎应用于所有领域;从金融到人工智能再到数据科学。本文介绍了时间序列的基础知识,并解释了协方差、平稳时间序列和季节性。ARIMA模型可以用来预测时间序列,这是我在文章中已经解释过的。

在我的文章“从Python安装到ARIMA汇率预测”中,我解释了如何使用Python通过ARIMA模型预测观测值。