当前位置: 首页 > news >正文

bagging和时间序列预测_时间序列预测与指数平滑法

时间序列预测是将过去一段时间的数据和趋势作为基础,去预估未来一段时间内的数据值。应用场景比较多,例如商场根据过去的销量数据对未来的销量进行预测,以便备货;股民根据过去的股票走势来预测未来股票的涨跌情况,以便做出有利的决策。

对时间序列的预测主要有两种方法:长短记忆LSTM指数平滑法。长短记忆LSTM非常适合处理时间间隔比较长的任务,不过它适用于数据量比较大的场景。而本文介绍的指数平滑法在较小的数据场景也能预测比较准确,它是通过对整个时间序列分别给予不同的权重进行加权平均的一种方法。

一次指数平滑法

对于一组时间序列x1,x2,...,xi来说,可以将连续的n个时期的观测值的平均值作为下一时期的预测值,公式如下

fbd397a19407bbd23647553cc821a6a6.png

这种方法叫做移动平均法,但这个方法缺点也明显,所有观测值的权重都一样。一次指数平滑法可以看成是由移动平均法演变而来的,根据上述公式,有

127f34db4da505abc03acc71212092ec.png

从近似意义角度来说,序列中的任何一个数都可以用平均数来表示,若将x_{i-n}替换为s_{i-1},并设α=1/n,那么得到

a83c8d49e07121f0a0cb23a64325c82b.png

这就是一次指数平滑法,那么为什么叫指数平滑呢? 先看如下推导

3920d363c77ef8f8cee63a634a7229d9.png

可以看出x_i的系数都是指数形式的,并且所有权值之和为1。

很遗憾,一次指数平滑法只适用于水平型历史数据预测,而不适用于斜坡型线性历史数据预测的任务。因为对于斜坡型历史数据,即使α再大,也仍然会产生较大的系统误差。

二次指数平滑法

二次指数平滑法可以预测斜坡型数据,通过添加一个新的变量t来表示平滑后的趋势,递推公式如下

59108771bc99a9bd35a1b9994cda1947.png

其最终预测值表示如下

32cb45228ec87585147b41b33d4fdae9.png

一般初始化条件为

84f7adfffbfecdfbf041fdd96500af4d.png

二次指数平滑法相对一次指数平滑法解决了两个重要的问题

  1. 解决了不能用于有明显趋势的时间序列
  2. 解决了只能向未来预测一期的不足问题

三次指数平滑法

三次指数平滑在二次指数平滑的基础上增加了周期性信息,使其可以预测带有周期性的时间序列。三次指数平滑新增了新的参数p来表示平滑后的趋势,有累加和累乘两种方法,公式如下

1.累加

26f39bd7968558571cc19adf7eee6913.png

2.累乘

96ab1483ad287bcebdc2a0703e7e875e.png

上述变量中,s_i,t_i,p_i分别表示水平趋势斜率趋势周期信息

R语言实战

在R语言中HoltWinters()函数就是用来做时间序列预测的,句法如下

HoltWinters(x, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c("additive

相关文章:

  • python领域驱动_浅谈“领域驱动设计”
  • http status 404 – 未找到_[SEO名词]网站404页面是什么?
  • pythonsqlite锁定_python – 可以在NFS文件系统上锁定sqlite文件吗?
  • python如何调用matlab_[Python-MATLAB] 在Python中调用MATLAB的API
  • 语料库与python应用_语料库与Python应用/语料库翻译学文库
  • 多个id如何用js_将多个MSA连超级高铁网络,如何用最少的轨道连接所有MSA?
  • python上传excel文件_利用django如何解析用户上传的excel文件
  • js悬浮二级菜单代码_纯CSS实现简单二级导航下拉效果
  • microbit python扩展_【micro:bit扩展】如何用慧编程扩展设计器为 micro:bit 编写扩展...
  • boost原理与sklearn源码_从sklearn源码简析GBDT
  • 信息隐藏将txt文件合并到jpg文件中_GIS工作中让你事半功倍,在数据处理中常用的小技巧...
  • android欢迎界面引导页_uni-app: 引导页功能如何实现?
  • 六位小数的字符串怎么转化成double类型而不损失精度?_C# 一次数据类型强转失败的翻车原因分析...
  • 互动整合营销_企业做整合营销,有什么实际的意义
  • vue+bootstrap响应式布局_实现 Vue 的响应式系统
  • 【EOS】Cleos基础
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Java 多线程编程之:notify 和 wait 用法
  • Linux gpio口使用方法
  • Next.js之基础概念(二)
  • node 版本过低
  • Vue2 SSR 的优化之旅
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 巧用 TypeScript (一)
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 微服务入门【系列视频课程】
  • 浅谈sql中的in与not in,exists与not exists的区别
  • #Spring-boot高级
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $(function(){})与(function($){....})(jQuery)的区别
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (三)终结任务
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .“空心村”成因分析及解决对策122344
  • .jks文件(JAVA KeyStore)
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .netcore如何运行环境安装到Linux服务器
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @在php中起什么作用?
  • [ C++ ] STL---string类的使用指南
  • [2010-8-30]
  • [AIGC] Redis基础命令集详细介绍
  • [Android 数据通信] android cmwap接入点
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [git] windows系统安装git教程和配置
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [json]定义、读写
  • [leetcode] Balanced Binary Tree
  • [Leetcode] 寻找数组的中心索引