自回归模型示例

自动回归模型将根据先前的值来预测时间序列的未来值。更具体地说,用户指定的 lag 决定了该模型在计算过程中要考虑多少个先前的时间段,且预测值为每个 lag 的线性组合。

使用自回归模型进行训练和预测时使用以下函数。请注意,这些函数需要具有一致时间步长的数据集。

要标准化时间步长不一致的数据集,请参阅空白填充和插值 (GFI)

示例

  1. Machine-Learning-Examples 存储库加载数据集。

    此示例使用 daily-min-temperatures 数据集,其中包含 1981 年至 1990 年澳大利亚墨尔本每天的最低气温数据:

    => SELECT * FROM temp_data;
            time         | Temperature
    ---------------------+-------------
     1981-01-01 00:00:00 |        20.7
     1981-01-02 00:00:00 |        17.9
     1981-01-03 00:00:00 |        18.8
     1981-01-04 00:00:00 |        14.6
     1981-01-05 00:00:00 |        15.8
    ...
     1990-12-27 00:00:00 |          14
     1990-12-28 00:00:00 |        13.6
     1990-12-29 00:00:00 |        13.5
     1990-12-30 00:00:00 |        15.7
     1990-12-31 00:00:00 |          13
    (3650 rows)
    
  2. 使用 AUTOREGRESSORtemp_data 数据集创建自回归模型 AR_temperature。在本例中,模型以 p=3 的滞后进行训练,每次估计都要考虑前 3 个条目:

    => SELECT AUTOREGRESSOR('AR_temperature', 'temp_data', 'Temperature', 'time' USING PARAMETERS p=3);
                        AUTOREGRESSOR
    ---------------------------------------------------------
     Finished. 3650 elements accepted, 0 elements rejected.
    (1 row)
    

    您可以使用 GET_MODEL_SUMMARY 查看模型的摘要:

    
    => SELECT GET_MODEL_SUMMARY(USING PARAMETERS model_name='AR_temperature');
    
     GET_MODEL_SUMMARY
    -------------------
    
    ============
    coefficients
    ============
    parameter| value
    ---------+--------
      alpha  | 1.88817
    phi_(t-1)| 0.70004
    phi_(t-2)|-0.05940
    phi_(t-3)| 0.19018
    
    
    ==================
    mean_squared_error
    ==================
    not evaluated
    
    ===========
    call_string
    ===========
    autoregressor('public.AR_temperature', 'temp_data', 'temperature', 'time'
    USING PARAMETERS p=3, missing=linear_interpolation, regularization='none', lambda=1, compute_mse=false);
    
    ===============
    Additional Info
    ===============
           Name       |Value
    ------------------+-----
        lag_order     |  3
    rejected_row_count|  0
    accepted_row_count|3650
    (1 row)
    
  3. 使用 PREDICT_AUTOREGRESSOR 预测未来温度。以下查询在数据集末尾start预测,并返回 10 个预测。

    => SELECT PREDICT_AUTOREGRESSOR(Temperature USING PARAMETERS model_name='AR_temperature', npredictions=10) OVER(ORDER BY time) FROM temp_data;
    
        prediction
    ------------------
     12.6235419917807
     12.9387860506032
     12.6683380680058
     12.3886937385419
     12.2689506237424
     12.1503023330142
     12.0211734746741
     11.9150531529328
     11.825870404008
     11.7451846722395
    (10 rows)