在这篇文章中,将探讨如何使用ARIMA模型来进行时间序列分析。时间序列分析是一种统计技术,用于分析按时间顺序排列的数据点。将使用R语言来实现这一分析过程。以下是数据集的下载链接,该数据集包含了通过服务器连接到互联网的用户数量,数据以每分钟为时间间隔收集,共有100个观测值。
在时间序列分析中,平稳性是一个重要的概念。平稳时间序列是指其统计特性(如均值和方差)不随时间变化的序列。将介绍最常用的平稳线性时间序列模型——自回归积分滑动平均(ARIMA)模型。这些模型在模拟现实世界过程中扮演了重要角色。
ARIMA
模型是自回归滑动平均(ARMA
)模型的推广。这两种模型都用于预测时间序列数据中的未来点。ARIMA是一种回归分析形式,它表明了因变量相对于其他变化变量的强度。
模型的最终目标是通过检查序列中值之间的差异而不是实际值来预测未来的时间序列运动。ARIMA模型适用于数据显示非平稳性的情况。在时间序列分析中,非平稳数据总是被转换为平稳数据。
非平稳时间序列数据的常见原因包括趋势和季节性成分。将非平稳数据转换为平稳数据的方法是应用差分步骤。可以应用一次或多次差分步骤来消除数据中的趋势成分。同样,为了去除数据中的季节性成分,可以应用季节性差分。
根据名称,可以将模型分解为以下较小的组成部分:
AR
:自回归模型,表示一种随机过程。模型的输出线性依赖于其自身的先前值,即一些滞后的数据点或过去的观测值数量。MA
:滑动平均模型,其输出线性依赖于当前和过去的随机项观测值。I
:积分在这里意味着差分步骤,以生成平稳的时间序列数据,即去除季节性和趋势成分。ARIMA模型通常表示为ARIMA(p, d, q)
,其中参数p
、d
、q
定义如下:
p
:滞后阶数或自回归模型AR(p)
的时间滞后数。d
:差分的度数或数据与过去值相减的次数。q
:滑动平均模型MA(q)
的阶数。wwwusage = scan("wwwusage.txt", skip=1)
时间序列图:
plot(1:100, wwwusage, xlim = c(0, 120), ylim=c(80, 250))
lines(1:100, wwwusage, type="l")
图1:系列使用情况
ACF:自相关系数函数,定义时间序列中的数据点如何与前面的数据点相关。
PACF:偏自相关系数函数,像自相关函数一样,传达有关平稳过程依赖结构的重要信息。
现在让解释如何根据ACF和PACF图选择模型。给定时间序列的观测值,一种拟合模型到数据的方法是将数据的样本ACF和样本PACF与模型的ACF和PACF相匹配。可以使用样本ACF图来查看特定时间序列数据是否平稳。
对于平稳时间序列数据,样本ACF会迅速衰减甚至截断。否则,时间序列不是平稳的。这里的截断意味着ACF值小于指示的置信区间或在蓝色虚线内。
如果确认数据是平稳的,可以根据样本ACF和PACF值的截断时间来决定模型应该使用的参数q
和p
。在这种情况下,参数p
将由样本PACF的截断时间决定,参数q
将由样本ACF的截断时间决定。如果知道时间序列不是平稳的,将尝试执行更高阶的差分以确保数据是平稳的。
acf(wwwusage, lag.max=100)
pacf(wwwusage, lag.max=100)
图2:系列wwwusage的样本ACF和PACF图
从时间序列和样本ACF图中,得出结论,原始数据不是平稳的。样本ACF有周期性模式,很可能包含季节性成分。如果数据包含趋势和季节性成分,它被认为是非平稳的。
样本PACF在滞后2后截断,但不能使用它来决定使用什么模型,因为数据不是平稳的。
zt = wwwusaget – wwwusaget-1 = (1-B) wwwusaget
z = diff(wwwusage, 1, 1)
图3:系列z(对系列wwwusage执行一阶差分)
acf(z, lag.max=100)
pacf(z, lag.max=100)
图4:系列z的样本ACF和PACF图
从样本ACF图中,仍然可以看到一些周期性模式,因此决定对原始数据执行更高阶的差分,即二阶差分。目的是检查更高阶的差分是否可以获得更好的结果。
zt = wwwusaget – 2wwwusaget-1 + wwwusaget-2 = (1-2B+B2) wwwusaget
z = diff(wwwusage, 1, 2)
图5:系列z(对系列wwwusage执行二阶差分)
acf(z, lag.max=100)
pacf(z, lag.max=100)
图6:系列z的样本ACF和PACF图
可以看到样本ACF迅速衰减,因此数据是平稳的。可以接受有5%的时间滞后位于虚线蓝界之外。因此,可以忽略大约5个时间滞后(5% x 100)在滞后8、23、26、44和52。
由于样本ACF在滞后2后截断,可以使用ARIMA(0,2,2)对wwwusage进行建模。同样,对于样本PACF,它在滞后2后截断,可以使用ARIMA(2,2,0)对wwwusage进行建模。
fit1 = arima(wwwusage, order = c(0,2,2))
tsdiag(fit1)
图7:模型1的残差ACF
因此,模型1是合适的,即残差中没有自相关性。
fit2 = arima(wwwusage, order = c(2,2,0))
tsdiag(fit2)
图8:模型2的残差ACF
因此,模型2是合适的,即残差中没有自相关性。
library(forecast)
fit3 = auto.arima(wwwusage)
tsdiag(fit3)
图9:模型3的残差ACF
因此,模型3是合适的,即残差中没有自相关性。
从诊断检查中,所有3个模型都是合适的。AIC标准允许在模型合适的情况下比较不同模型的拟合度。AIC标准越小,模型越好。因此,最终选择的wwwusage数据的拟合模型是ARIMA(2,2,0),它在上表中的所有模型中给出了最低的AIC(511.46)。
最终拟合的模型ARIMA(2,2,0),带有拟合值和向前10步的预测。
plot(1:100, wwwusage, xlim = c(0, 120), ylim=c(80, 330))
lines(1:100, wwwusage, type="l")
lines(1:100, wwwusage-fit2$residuals, type="l", col="red")
forecast = predict(fit2, n.ahead=10)
lines(101:110, forecast$pred, type="o", col="red")
lines(101:110, forecast$pred-1.96*forecast$se, col="blue")
lines(101:110, forecast$pred+1.96*forecast$se, col="blue")
图10:黑点是观测值,红点是预测值。
[1] 自回归积分滑动平均 - Wikipedia
[2] 自回归模型 - Wikipedia