移动平均模型示例
移动平均值模型使用早期预测误差进行未来预测。更具体地说,用户指定的 lag 决定了它在计算过程中要考虑多少先前的预测和错误。
使用移动平均模型进行训练和预测时使用以下函数。请注意,这些函数需要具有一致时间步长的数据集。
-
MOVING_AVERAGE
:训练移动平均模型 -
PREDICT_MOVING_AVERAGE
:将模型应用于数据集以进行预测
要标准化时间步长不一致的数据集,请参阅空白填充和插值 (GFI)。
示例
-
从 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)
-
使用
MOVING_AVERAGE
从temp_data
数据集创建移动平均模型MA_temperature
。在本例中,模型以p
=3 的滞后进行训练,每次估计都要考虑 3 个以前预测的错误:=> SELECT MOVING_AVERAGE('MA_temperature', 'temp_data', 'temperature', 'time' USING PARAMETERS q=3, missing='linear_interpolation', regularization='none', lambda=1); MOVING_AVERAGE --------------------------------------------------------- Finished. 3650 elements accepted, 0 elements rejected. (1 row)
您可以使用
GET_MODEL_SUMMARY
查看模型的摘要:=> SELECT GET_MODEL_SUMMARY(USING PARAMETERS model_name='MA_temperature'); GET_MODEL_SUMMARY ------------------- ============ coefficients ============ parameter| value ---------+-------- phi_(t-0)|-0.90051 phi_(t-1)|-0.10621 phi_(t-2)| 0.07173 =============== timeseries_name =============== temperature ============== timestamp_name ============== time =========== call_string =========== moving_average('public.MA_temperature', 'temp_data', 'temperature', 'time' USING PARAMETERS q=3, missing=linear_interpolation, regularization='none', lambda=1); =============== Additional Info =============== Name | Value ------------------+-------- mean |11.17780 lag_order | 3 lambda | 1.00000 rejected_row_count| 0 accepted_row_count| 3650 (1 row)
-
使用
PREDICT_MOVING_AVERAGE
预测未来温度。以下查询在数据集末尾start
预测,并返回 10 个预测。=> SELECT PREDICT_MOVING_AVERAGE(Temperature USING PARAMETERS model_name='MA_temperature', npredictions=10) OVER(ORDER BY time) FROM temp_data; prediction ------------------ 13.1324365636272 12.8071086272833 12.7218966671721 12.6011086656032 12.506624729879 12.4148247026733 12.3307873804812 12.2521385975133 12.1789741993396 12.1107640076638 (10 rows)