1 最基本的方法

这些方法将作为这个系列的benchmark

有时,这些简单方法中的一种将是可用的最佳预测方法; 但在许多情况下,这些方法将作为基准而不是选择方法。 也就是说,我们开发的任何预测方法都将与这些简单的方法进行比较,以确保新方法优于这些简单的替代方法。 如果没有,新方法不值得考虑。

1.1 平均法

所有未来值的预测都等于历史数据的平均值(或“平均值”)。

1.1.1 R语言实现

library(forecast)y<-ts(c(5,3,3.1,3.2,3.3,3.4,3.5,3.3,3.2,4,4.1,4.2,6,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,10,9,8,8.5,8.4,8.5,8.6,8.7,8.8,8.9,9,9.5),start = 2020,frequency = 12)meanf(y,5)
         Point Forecast    Lo 80    Hi 80     Lo 95    Hi 95
Jan 2023       5.686111 2.571311 8.800911 0.8451045 10.52712
Feb 2023       5.686111 2.571311 8.800911 0.8451045 10.52712
Mar 2023       5.686111 2.571311 8.800911 0.8451045 10.52712
Apr 2023       5.686111 2.571311 8.800911 0.8451045 10.52712
May 2023       5.686111 2.571311 8.800911 0.8451045 10.52712

1.2 简单复制

对于简单的预测,我们只需将所有预测设置为最后一次观察的值。

naive(y,5)Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Jan 2023            9.5 8.135627 10.86437 7.413371 11.58663
Feb 2023            9.5 7.570485 11.42952 6.549061 12.45094
Mar 2023            9.5 7.136836 11.86316 5.885853 13.11415
Apr 2023            9.5 6.771254 12.22875 5.326743 13.67326
May 2023            9.5 6.449169 12.55083 4.834156 14.16584

1.3 季节性复制

类似的方法对于高度季节性的数据很有用。

在这种情况下,我们将每个预测设置为同一季节(例如,上一年的同一个月)的最后一个观测值。 形式上,时间 T+h 的预测写为

其中m表示周期,k是的整数部分(即,时间 T+h 之前预测期内的完整周期数)。

1.3.1 R语言实现

snaive(y,15)Point Forecast    Lo 80    Hi 80      Lo 95    Hi 95
Jan 2023           10.0 6.071882 13.92812  3.9924626 16.00754
Feb 2023            9.0 5.071882 12.92812  2.9924626 15.00754
Mar 2023            8.0 4.071882 11.92812  1.9924626 14.00754
Apr 2023            8.5 4.571882 12.42812  2.4924626 14.50754
May 2023            8.4 4.471882 12.32812  2.3924626 14.40754
Jun 2023            8.5 4.571882 12.42812  2.4924626 14.50754
Jul 2023            8.6 4.671882 12.52812  2.5924626 14.60754
Aug 2023            8.7 4.771882 12.62812  2.6924626 14.70754
Sep 2023            8.8 4.871882 12.72812  2.7924626 14.80754
Oct 2023            8.9 4.971882 12.82812  2.8924626 14.90754
Nov 2023            9.0 5.071882 12.92812  2.9924626 15.00754
Dec 2023            9.5 5.571882 13.42812  3.4924626 15.50754
Jan 2024           10.0 4.444803 15.55520  1.5040591 18.49594
Feb 2024            9.0 3.444803 14.55520  0.5040591 17.49594
Mar 2024            8.0 2.444803 13.55520 -0.4959409 16.49594

·        我们在创建时间序列的时候,声明了周期为12(frequency),所以我们这里也是令m=12

1.4  Drift method 漂移法

另一种变体是允许预测随时间增加或减少,其中随时间的变化量(称为漂移)设置为历史数据中看到的平均变化。

因此,时间 T + h 的预测为

1.4.1 R语言实现

rwf(y,5,drift=TRUE)Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Jan 2023       9.628571 8.254411 11.00273 7.526975 11.73017
Feb 2023       9.757143 7.786220 11.72807 6.742876 12.77141
Mar 2023       9.885714 7.438540 12.33289 6.143084 13.62834
Apr 2023      10.014286 7.150601 12.87797 5.634658 14.39391
May 2023      10.142857 6.899307 13.38641 5.182275 15.10344

如果不加’drift=TRUE‘的话,rwf(y,5)和naive(y,5)效果是一样的

1.5 四者对比(可视化)

library(forecast)
library(ggplot2)y<-ts(c(5,3,3.1,3.2,3.3,3.4,3.5,3.3,3.2,4,4.1,4.2,6,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,10,9,8,8.5,8.4,8.5,8.6,8.7,8.8,8.9,9,9.5),start = 2020,frequency = 12)y_pre=window(y,start=2020,end=c(2022,2))
y_pre
#      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug
#2020  5.0  3.0  3.1  3.2  3.3  3.4  3.5  3.3
#2021  6.0  4.0  4.1  4.2  4.3  4.4  4.5  4.6
#2022 10.0  9.0
#      Sep  Oct  Nov  Dec
#2020  3.2  4.0  4.1  4.2
#2021  4.7  4.8  4.9  5.0
#2022            y_naive=naive(y_pre,h=10)
y_mean=meanf(y_pre,h=10)
y_snaive=snaive(y_pre,h=10)
y_drift=rwf(y_pre,h=10,drift=TRUE)       autoplot(y)+autolayer(y_mean,series='mean',PI=FALSE)+autolayer(y_naive,series='naive',PI=FALSE)+autolayer(y_snaive,series='snaive',PI=FALSE)+autolayer(y_drift,series'drift',PI=FALSE)

1.5.1 不同评价函数下的对比

accuracy(y_mean,y_test)
#                       ME     RMSE      MAE
#Training set 1.025822e-16 1.608336 1.017160
#Test set     4.159231e+00 4.176614 4.159231
#                   MPE     MAPE      MASE
#Training set -8.620051 21.37827 0.6717093
#Test set     47.763243 47.76324 2.7466618
#                  ACF1 Theil's U
#Training set 0.5666206        NA
#Test set     0.4126294  16.59598

机器学习笔记 时间序列预测(最基本的方法【benchmark】)相关推荐

  1. 机器学习笔记 时间序列预测(基本数据处理,Box-Cox)

    数据调整 调整历史数据通常会导致更简单的预测任务. 在这里,我们处理四种调整:日历调整.人口调整.通货膨胀调整和数学变换. 这些调整和转换的目的是通过消除已知的变化源或通过使整个数据集的模式更加一致来 ...

  2. 机器学习与时间序列预测

    机器学习与时间序列预测  爱斯翠摩鸡 关注 2018.03.15 14:02* 字数 2186 阅读 2711评论 8喜欢 9 前言 在所有的预测问题里面,时间序列预测最让我头疼. 做时间序列预测,传 ...

  3. 时间序列预测02:经典方法综述 自回归ARIMA/SRIMA 指数平滑法等

    机器学习和深度学习方法可以在具有挑战性的时间序列预测问题上取得不俗的表现.然而,在许多预测问题中,经典的方法,如SARIMA和指数平滑法(exponential smoothing ),容易优于更复杂 ...

  4. 机器学习笔记 - 时间序列使用机器学习进行预测

    一.概述 在最基本的情况下,我们将预测视为一个简单的回归问题,所有特征都来自单个输入,即时间索引. 只需生成想要的趋势和季节性特征,我们就可以轻松地创建未来任何时间的预测. 然后,当我们添加滞后功能时 ...

  5. 机器学习笔记-时间序列基础知识

    前言   本章不会对时间序列所有的内容进行一个全方位的介绍,只会简单的整理部分时间序列的基础知识点. 时间序列的成分 时间序列:按时间顺序记录的一组数据,称为时间序列   而一条时间序列通常可以分解为 ...

  6. 时间序列预测的7种方法

    import pandas as pd#取数 #df=pd.read_csv('jetrail.csv') #print(df.head()) '''ID Datetime Count 0 0 25- ...

  7. 【学习笔记-时间序列预测】prophet-使用.3节日与特殊事件

    1.简介 如果数据中囊括的时间段包括了假期或其他有重复性的特殊事件,必须为它们创建一个数据框(datadraft). 该数据框需要包括有两列:holiday .ds,每出现一个节假日或特殊事件有一行. ...

  8. 【机器学习】时间序列预测:三次指数平滑(Holt-Winters)

    statsmodels是一个Python模块,它提供对许多不同统计模型估计的类和函数,并且可以进行统计测试和统计数据的探索. # -*- encoding:utf-8 -*-import pandas ...

  9. 时间序列预测方法最全总结!

    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值. 需要明确一点的是,与回归分析预测模型不同,时间 ...

最新文章

  1. 64 位来临:微软 Visual Studio 2022 预览版今夏发布,更多功能一览
  2. SAP Spartacus PageMetaService 的单元测试
  3. 程序员过关斩将--数据库的乐观锁和悲观锁并非真实的锁
  4. Linux编程(11)_信号
  5. Mac上emacs使用ggtags
  6. MooseFS源代码分析(三)
  7. fluent 对电机油冷分析_如何避免发电机过热引起的能源损耗?
  8. 禁用联想笔记本电脑自带的键盘
  9. 《美国职业橄榄球大联盟》:NFL·橄榄1号位
  10. 摄像头码流怎么设置_监控交换机怎么选?千兆/百兆/核心/PoE/光纤交换机选型指南...
  11. excel制作特殊图表记录
  12. 强世功:中美“关键十年” ——“新罗马帝国”与“新的伟大斗争”
  13. Apache Shiro 集成-Cas
  14. 如何在VeryCD中下载资源
  15. c++基础温习之指针分配空间
  16. 微信小程序 - 页面跳转传参 JSON.parse 解析失败报错(SyntaxError: Unexpected end of JSON input)解决方案
  17. 论文阅读笔记——Multi-Label Learning with Global and Local Label Correlation(具有全局和局部标签相关性的多标签学习)
  18. CET-4 week 6th -- 后缀
  19. N个数里面找出最大的k个数
  20. 并查集解决朋友圈问题

热门文章

  1. Windows环境下搭建React Native
  2. C# asp.net mvc 配置多个route 参数
  3. 串行通信------字符串发送和十六进制发送
  4. 如何防止无线网络被破解
  5. 【英语】英语学习之道
  6. 介绍Windows Server服务器角色、角色服务和功能
  7. 非阻塞connect的实现
  8. 手把手教你安卓入门(一)
  9. jmeter linux安装,Linux下安装Jmeter
  10. linux c 如何编译静态库,Linux C 编程入门之一:gcc 编译动态库和静态库