大数据分析 - 时间序列分析

  • 简述

    时间序列是由日期或时间戳索引的分类或数字变量的观察序列。时间序列数据的一个明显例子是股票价格的时间序列。在下表中,我们可以看到时间序列数据的基本结构。在这种情况下,观察记录每小时记录一次。
    时间戳 股票价格
    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
    通常,时间序列分析的第一步是绘制序列,这通常使用折线图完成。
    时间序列分析最常见的应用是使用数据的时间结构预测数值的未来值。这意味着,可用的观察结果用于预测未来的值。
    数据的时间顺序意味着传统的回归方法没有用。为了建立稳健的预测,我们需要考虑数据时间顺序的模型。
    时间序列分析中使用最广泛的模型称为Autoregressive Moving Average(ARMA)。该模型由两部分组成,一个autoregressive(AR) 部分和一个moving average(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的期望值,而 ε t , ε 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 <- ts(data, frequency = 12, start = c(1987,1)) 
    ts_data  
    plot.ts(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