📅  最后修改于: 2020-12-02 06:46:08             🧑  作者: Mango
时间序列是按日期或时间戳索引的分类或数字变量的观测序列。时间序列数据的一个明显例子是股价的时间序列。在下表中,我们可以看到时间序列数据的基本结构。在这种情况下,每小时记录一次观察结果。
Timestamp | Stock – Price |
---|---|
2015-10-11 09:00:00 | 100 |
2015-10-11 10:00:00 | 110 |
2015-10-11 11:00:00 | 105 |
2015-10-11 12:00:00 | 90 |
2015-10-11 13:00:00 | 120 |
通常,时间序列分析的第一步是绘制序列,通常使用折线图完成。
时间序列分析的最常见应用是使用数据的时间结构来预测数值的未来值。这意味着,可用的观测值可用来预测未来的价值。
数据的时间顺序意味着传统的回归方法没有用。为了建立可靠的预测,我们需要考虑数据时间顺序的模型。
时间序列分析中使用最广泛的模型称为自回归移动平均值(ARMA)。该模型由两部分组成,即自回归(AR)部分和移动平均值(MA)部分。该模型通常称为ARMA(p,q)模型,其中p是自回归部分的阶数, q是移动平均部分的阶数。
将AR(p)读为p阶的自回归模型。数学上它写成-
$$ X_t = c + \ sum_ {i = 1} ^ {P} \ phi_i X_ {t-i} + \ varepsilon_ {t} $$
其中{φ1,…,φp}将被估计的参数,c为常数,εt时的随机变量表示白噪声。参数值需要一些约束,以便模型保持稳定。
符号MA(Q)指的是q阶移动平均模型-
$$ X_t = \ mu + \ varepsilon_t + \ sum_ {i = 1} ^ {q} \ theta_i \ varepsilon_ {t-i} $$
其中θ1,…,θq是该模型的参数,μ是X吨的期望,并且εT,ε吨- 1,…是,白噪声误差项。
ARMA(p,q)模型结合了p个自回归项和q个移动平均项。在数学上,该模型用以下公式表示-
$$ X_t = c + \ varepsilon_t + \ sum_ {i = 1} ^ {P} \ phi_iX_ {t-1} + \ sum_ {i = 1} ^ {q} \ theta_i \ varepsilon_ {ti} $$
我们可以看到ARMA(p,q)模型是AR(p)和MA(q)模型的组合。
为了使模型更直观,请考虑方程的AR部分试图估计X t-i观测值的参数,以预测X t中变量的值。最后,它是过去值的加权平均值。 MA部分使用相同的方法,但存在先前观测值εt − i的误差。因此,最后,模型的结果是加权平均值。
以下代码段演示了如何在R中实现ARMA(p,q) 。
# install.packages("forecast")
library("forecast")
# Read the data
data = scan('fancy.dat')
ts_data
绘制数据通常是找出数据中是否存在时间结构的第一步。从图中可以看出,每年年底都有强劲的峰值。
以下代码使ARMA模型适合该数据。它运行几种模型组合,并选择误差较小的模型。
# Fit the ARMA model
fit = auto.arima(ts_data)
summary(fit)
# Series: ts_data
# ARIMA(1,1,1)(0,1,1)[12]
# Coefficients:
# ar1 ma1 sma1
# 0.2401 -0.9013 0.7499
# s.e. 0.1427 0.0709 0.1790
#
# sigma^2 estimated as 15464184: log likelihood = -693.69
# AIC = 1395.38 AICc = 1395.98 BIC = 1404.43
# Training set error measures:
# ME RMSE MAE MPE MAPE MASE ACF1
# Training set 328.301 3615.374 2171.002 -2.481166 15.97302 0.4905797 -0.02521172