论文部分内容阅读
摘要:时间序列分析和时间序列建模是强有力的预测工具。理解时间序列背后的统计学知识对于时间序列建模很有帮助。本文将介绍时间序列的整体流程,包括ARMA 和 ARIMA等重要工具。
时间序列建模,顾名思义,使用基于时间的数据(年,月,日,小时,分钟),然后得出某些预测以帮助决策。时间序列建模在现实生活中有广泛的应用。虽然要保持与时间“同步”并做出“预测”相当困难,但是学术界已经发展出一些强有力的工具,我们可以利用他们来“感知未来”。时间序列分析与建模一直以来都是教学上的难点和重点,我们可以借助相关的例子来对整个流程进行解析,让同学们有更直观的认识,然后再具体研究数学上的细节。
一、ARMA 时间序列模型
ARMA 是最常用的时间序列模型。在 ARMA 模型中,AR 代表自回归 auto-regression,MA 代表移动平均 moving average。需要注意的是,AR 或者 MA 模型都不适用于非平稳序列。
1.AR 模型
这个就是 AR(1) 模型的公式。数值(1)代表下一个时刻的值仅仅取决于当前的时刻。alpha 是需要确定的参数,使得误差项最小。注意到,x(t-1)也取决于 x(t-2),因此,x(t)将随着时间的流逝而渐渐消失。
2.MA 模型
可以注意到,在 MA 模型中,噪声随着时间的消失很快,而在 AR 模型中,突变的影响持续很久。
3.AR 模型与 MA 模型的区别
AR 模型与 MA 模型的最大不同在于时间序列在不同时间点上的相关性。对于 n>阶数的 MA 模型, x(t) 与 x(t-n) 之间的相关系数为 0。相关分析可以得到 MA 模型的阶数。然而,对于 AR 模型,随着 n 变大,x(t) 与 x(t-n)之间的相关性逐渐减少。下面将介绍如何通过ACF/PACF 确定 ARMA 模型的参数。
二、时间序列建模整体流程
第一步:时间序列可视化。在建立任何时间序列模型之前,分析序列的趋势是关键。我们关注的趋势要包括任何类型的趋势,如季节性和某些随机行为。
第二步:时间序列平稳化。因为时间序列的建模过程中有很多结论都是建立在大数定理和中心极限定理的前提条件下的,如果它不满足,得到的许多结论都是不可靠的。序列平稳,一般要求均值为常数,方差为常数,以及自协方差为常数。如果一个序列不是平稳的话,那我们该怎么办呢?有三种常用的方法可以使得时间序列平稳:
1.去除趋势:假设时间序列的公式是:X(t) = (mean + trend*t) + error。我们可以去掉圆括号中的部分,然后对剩余的部分建模。
2.差分:我们可以对两项之间的差值进行建模,而不是原来的项。例如:X(t) – x(t-1) = ARMA(p, q)。差分项d可以叫做AR(I)MA模型中的集成项(Integration part)。现在,我们就有了三个参数ARIMA(p,d,q)
3.季节性:季节性可以很容易地直接融合到 ARIMA 模型中。
一旦我们处理了趋势的模式,周期和季节性等,就可以测试一下序列是否平稳。一个常用的工具是Dickey-Fuller 算法。
第三步:找出最优的阶数。我们可以通过使用ACF 和 PACF画图找出最优的参数ARIMA(p,d,q)。假如 ACF 和 PACF 都下降缓慢,这预示着我们需要通过增加参数 d 的值将序列变平稳。
第四步:建立 ARIMA 模型。我们得到ARIMA 的参数后,就可以开始建立模型了。上一步种我们通过 ACF 和 PACF 得到了参数,但这只是一个大致的估计,我们需要遍历更多的(p,d,q)组合。能得到最低的 BIC值或AIC值的参数组合将是我们的选择。假如在 ACF/PACF 画图中发现季节性成分,我们也可以纳入 ARIMA 的模型中。
第五步:做出预测。一旦我们得到最终的 ARIMA 模型,我们就可以对未来的时间点的值做预测了。如果模型运行良好,我们就可以将趋势可视化进行交叉验证。
三、实际应用的例子
我们可以通过举例说明时间序列模型的应用。我们使用AirPassengers这个已有的数据集[1]。这个数据集是1949-1960年每个月国际航空的乘客数量的数据,如图2(a)所示。
从图中,我们可以观察出:
1.存在趋势成分,随着时间的增加而增加;
2.存在季節性成分,但周期不超过 12 个月;
3.数据的方差随着时间的增长而增大。
在测试平稳性之前,我们需要解决两个问题:1)不稳定的方差。可以通过取序列log 对数的方法解决。2)季节成分。这个可以通过求序列的差分而实现。现在,让我们测试一下处理后的序列。通过求 ADF,得到序列的 p-value=0.01。因此,序列是平稳的,我们可以对它进行建模。
确定参数后,我们可以训练 ARIMA 模型,然后预测未来的 10 年的乘客量,将预测的结果可视化,如图 所示。由于我们是将原始数据求对数以及再一阶差分进行处理,因此我们的预测要有复原的过程。至此,一个完整的ARIMA 时间序列建模预测过程就完成了。
参考文献
[1] https://www.kaggle.com/rakannimer/air-passengers
作者简介:罗晓牧(1980-),性别:男,广东省广州市(籍贯),现职称:副教授,学历:工科博士研究生毕业,研究方向:机器学习,无线传感器网络,生物信息获取.
基金来源:广州中医药大学教学改革项目 A3-0433-181-427-039
时间序列建模,顾名思义,使用基于时间的数据(年,月,日,小时,分钟),然后得出某些预测以帮助决策。时间序列建模在现实生活中有广泛的应用。虽然要保持与时间“同步”并做出“预测”相当困难,但是学术界已经发展出一些强有力的工具,我们可以利用他们来“感知未来”。时间序列分析与建模一直以来都是教学上的难点和重点,我们可以借助相关的例子来对整个流程进行解析,让同学们有更直观的认识,然后再具体研究数学上的细节。
一、ARMA 时间序列模型
ARMA 是最常用的时间序列模型。在 ARMA 模型中,AR 代表自回归 auto-regression,MA 代表移动平均 moving average。需要注意的是,AR 或者 MA 模型都不适用于非平稳序列。
1.AR 模型
这个就是 AR(1) 模型的公式。数值(1)代表下一个时刻的值仅仅取决于当前的时刻。alpha 是需要确定的参数,使得误差项最小。注意到,x(t-1)也取决于 x(t-2),因此,x(t)将随着时间的流逝而渐渐消失。
2.MA 模型
可以注意到,在 MA 模型中,噪声随着时间的消失很快,而在 AR 模型中,突变的影响持续很久。
3.AR 模型与 MA 模型的区别
AR 模型与 MA 模型的最大不同在于时间序列在不同时间点上的相关性。对于 n>阶数的 MA 模型, x(t) 与 x(t-n) 之间的相关系数为 0。相关分析可以得到 MA 模型的阶数。然而,对于 AR 模型,随着 n 变大,x(t) 与 x(t-n)之间的相关性逐渐减少。下面将介绍如何通过ACF/PACF 确定 ARMA 模型的参数。
二、时间序列建模整体流程
第一步:时间序列可视化。在建立任何时间序列模型之前,分析序列的趋势是关键。我们关注的趋势要包括任何类型的趋势,如季节性和某些随机行为。
第二步:时间序列平稳化。因为时间序列的建模过程中有很多结论都是建立在大数定理和中心极限定理的前提条件下的,如果它不满足,得到的许多结论都是不可靠的。序列平稳,一般要求均值为常数,方差为常数,以及自协方差为常数。如果一个序列不是平稳的话,那我们该怎么办呢?有三种常用的方法可以使得时间序列平稳:
1.去除趋势:假设时间序列的公式是:X(t) = (mean + trend*t) + error。我们可以去掉圆括号中的部分,然后对剩余的部分建模。
2.差分:我们可以对两项之间的差值进行建模,而不是原来的项。例如:X(t) – x(t-1) = ARMA(p, q)。差分项d可以叫做AR(I)MA模型中的集成项(Integration part)。现在,我们就有了三个参数ARIMA(p,d,q)
3.季节性:季节性可以很容易地直接融合到 ARIMA 模型中。
一旦我们处理了趋势的模式,周期和季节性等,就可以测试一下序列是否平稳。一个常用的工具是Dickey-Fuller 算法。
第三步:找出最优的阶数。我们可以通过使用ACF 和 PACF画图找出最优的参数ARIMA(p,d,q)。假如 ACF 和 PACF 都下降缓慢,这预示着我们需要通过增加参数 d 的值将序列变平稳。
第四步:建立 ARIMA 模型。我们得到ARIMA 的参数后,就可以开始建立模型了。上一步种我们通过 ACF 和 PACF 得到了参数,但这只是一个大致的估计,我们需要遍历更多的(p,d,q)组合。能得到最低的 BIC值或AIC值的参数组合将是我们的选择。假如在 ACF/PACF 画图中发现季节性成分,我们也可以纳入 ARIMA 的模型中。
第五步:做出预测。一旦我们得到最终的 ARIMA 模型,我们就可以对未来的时间点的值做预测了。如果模型运行良好,我们就可以将趋势可视化进行交叉验证。
三、实际应用的例子
我们可以通过举例说明时间序列模型的应用。我们使用AirPassengers这个已有的数据集[1]。这个数据集是1949-1960年每个月国际航空的乘客数量的数据,如图2(a)所示。
从图中,我们可以观察出:
1.存在趋势成分,随着时间的增加而增加;
2.存在季節性成分,但周期不超过 12 个月;
3.数据的方差随着时间的增长而增大。
在测试平稳性之前,我们需要解决两个问题:1)不稳定的方差。可以通过取序列log 对数的方法解决。2)季节成分。这个可以通过求序列的差分而实现。现在,让我们测试一下处理后的序列。通过求 ADF,得到序列的 p-value=0.01。因此,序列是平稳的,我们可以对它进行建模。
确定参数后,我们可以训练 ARIMA 模型,然后预测未来的 10 年的乘客量,将预测的结果可视化,如图 所示。由于我们是将原始数据求对数以及再一阶差分进行处理,因此我们的预测要有复原的过程。至此,一个完整的ARIMA 时间序列建模预测过程就完成了。
参考文献
[1] https://www.kaggle.com/rakannimer/air-passengers
作者简介:罗晓牧(1980-),性别:男,广东省广州市(籍贯),现职称:副教授,学历:工科博士研究生毕业,研究方向:机器学习,无线传感器网络,生物信息获取.
基金来源:广州中医药大学教学改革项目 A3-0433-181-427-039