二次指数平滑法(Second exponential smoothing method)

点击打开链接

二次指数平滑法是对一次指数平滑值作再一次指数平滑的方法。它不能单独地进行预测,必须与一次指数平滑法配合,建立预测的数学模型,然后运用数学模型确定预测值。一次移动平均法的两个限制因素在线性二次移动平均法中也才存在,线性二次指数,平滑法只利用三个数据和一个α值就可进行计算;在大多数情况下,一般更喜欢用线性二次指数平滑法作为预测方法。

二次指数平滑法实质上是将历史数据进行加权平均作为 未来时刻的预测结果。它具有计算简单、 样本要求量较少、 适应性较强、 结果较稳定。

应用时间序列平滑法的前提条件是:(1)所预测的客观事物发展属于渐进式,无跳跃性的变化;(2)过去和目前影响客观事物发展的因素也决定着客观事物未来的发展。由于客观事物的发展变动受多种因素的影响,而各种影响因素又可能是不断发展或不断变动的,因此,时间序列平滑法在一般情况下仅适用于短期的与近期的预测。当预测如果需要延伸至较远未来,时间序列平滑法则存在较大的局限性。时间序列平滑法在客观影响因素发生较大变化可能产生较大的预测误差。为降低这些可能的预测误差,必须充分研究客观影响因素可能的发展与变动,将定性分析和定量研究结合起来,这样才能提高预测的精度。

#include <iostream>
#include <vector>using namespace std;double getExpect(vector< vector<double> > vector1 , int month, double modulus )
{double modulusLeft = 1 - modulus;double lastIndex = vector1[0][0];double lastSecIndex = vector1[0][0];for (int i=1;i<=40;i++){   //更新到最后时刻的一次和二次的平滑值lastIndex = modulus * vector1[0][i-1] + modulusLeft * lastIndex;lastSecIndex = modulus * lastIndex + modulusLeft * lastSecIndex;}double At = 2 * lastIndex - lastSecIndex;double Bt = (modulus / modulusLeft) * (lastIndex - lastSecIndex);return At + Bt * month;}int main()
{
//    int a[2][7]={{11,23,32,41,53,62,74},{2,4,7,5,3,6,8}};
//    vector <vector<int >> sequences1(2,vector<int>(7));
//
//    for (int i = 0; i < 2; i++)
//    {
//        for(int j=0;j<7;j++)
//        {
//            sequences1[i][j]=a[i][j];
//           cout<<sequences1[i][j]<<" ";
//        }
//        cout<<endl;
//    }double a[40]={0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,7,1,0};vector< vector<double> > sequences(5);for(int i=0;i<5;i++) {sequences[i].resize(40);}for (int i = 0; i < 40; i++){sequences[0][i]=a[i];//cout<<sequences[0][i]<<endl;}double value=getExpect(sequences,1,0.8);cout<<value<<endl;cout<<"Succeed!";return 0;
}

当预测时间前临近的几天出现大的数据下降时,预测值有可能为负数,根据实际情况处理。

二次指数平滑法 C++相关推荐

  1. matlab 二次指数平滑法预测

    二次指数平滑法预测 clc,clear ://清空命令行,工作区 load pre1.txt %原始数据以列向量的方式存放在纯文本文件中 yt=pre1; n=length(yt); alpha=0. ...

  2. java二次指数平滑法预测未来的值

    转自https://blog.csdn.net/qq_35673617/article/details/86244873 指数平滑法是一种特殊的加权平均法,加权的特点是对离预测值较近的历史数据给予较大 ...

  3. 二次指数平滑法python程序

    根据历史年份的数据来进行未来年份数据的负荷预测,主要可以用于近中期的负荷预测,具体原理有很多帖子都讲过了,直接贴代码 三个参数分别为 历史年份 历史年份负荷量 要预测的数据数量 def double_ ...

  4. 二次指数平滑法 php,二次指数平滑法摘抄_二次指数平滑法算例

    二次指数平滑法摘抄_二次指数平滑法算例 指数平滑法是一种特殊的加权平均法,加权的特点是对离预测值较近的历史数据给予较大的权数,对离预测期较远的历史数据给予较小的权数,权数由近到远按指数规律递减,所以, ...

  5. 二次指数平滑法matlab程序_二次指数平滑法程序

    二次指数平滑法程序 线性指数平滑法 Matlab 程序,代码如下: 注: Data- 原始数据 s- 一次和二次平滑结果 at- 预测式中的 a 参数 bt- 预测式中的 b 参数 y1- 预测结果 ...

  6. Python 二次指数平滑法 预测

    1.先上代码: import numpy as npdef secondaryExponentialSmoothingMethod(list,n_average,alpha,day): # 参数lis ...

  7. 指数平滑法,二次指数平滑法(Holt’s linear trend method),季节性预测算法(Holt-Winters’ seasonal method)

    指数平滑法 概念:对过去的观察值得加权平均值进行预测的一种方法,适用于水平历史数据 一次指数平滑法:Ft+1 =aYt+(1-a)Ft Ft表示t时预测值,Yt表示t时观察值.t取1时,F1=Y1.a ...

  8. 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现

    目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...

  9. java 数据周期预测_预测算法 | Holt Winter季节性指数平滑法 附JAVA代码

    import java.util.ArrayList; import java.util.List; /** * 三次指数平滑预测,最多外推一个周期 * @author Administrator * ...

最新文章

  1. 基于libsvm的中文文本分类原型
  2. pandas布尔索引
  3. 普华基础软件笔试_普华“2018上海市软件和集成电路产业发展专项资金项目”成功验收...
  4. 仅使用HTML和CSS实现的标签云效果
  5. MySQL 事务 | ACID、四种隔离级别、并发带来的隔离问题、事务的使用与实现
  6. 修改小程序radio组件的默认样式
  7. 多模块顺序_国考要上岸,每个模块要对多少题?
  8. Ubuntu下配置Window CIFS共享
  9. 幼儿使用计算机亮度,使用夜灯会影响孩子的视力?真相究竟是什么
  10. 这算抄百度?Google为信息流告别简洁搜索框,也押注短视频
  11. 【Spring-tx】事务逻辑
  12. C语言用什么 IDE 好 - 除了 Visual Studio、VSCode、CLion 还有什么其他选择?
  13. 北斗/RTK高精度定位系统的优势及适用场景
  14. python rgb565_RGB565的转换
  15. ubuntu企业微信解决无法查看、发送图片
  16. 在线编码工具_每个新编码员都需要25种工具
  17. RMAN下CROSSCHECK命令详解
  18. js-PhotoSwipe相册功能
  19. 欧盟人工智能立法提案的核心思想 及未来影响分析
  20. php内容管理系统 admini,网站内容管理系统 BageCms

热门文章

  1. 台大郭彦甫教授Matlab讲解笔记(一)
  2. 读《Google软件测试之道》笔记---SWE,SET,TE职责
  3. 10M/s,保姆级教程,制作自己的网盘不限速工具!
  4. 性能测试的价值、全链路压测了解
  5. 如何为Github Pages设置动态的背景图片?
  6. 公司想注册电子邮箱账号,需要注意些什么?
  7. python(第九天)
  8. 企业信息化建设规划大纲
  9. 国外长高书籍内有详细锻炼方法
  10. 百度搜素推出细雨算法