一文速学-时间序列分析算法之加权移动平均法详解+Python代码实现
目录
前言
一、加权移动平均法
1.计算公式
2.示例运用
3.误差修正
点关注,防走丢,如有纰漏之处,请留言指教,非常感谢
前言
时间序列法并不属于机器学习而是统计分析法,供预测用的历史数据资料有的变化表现出比较强的规律性,由于它过去的变动趋势将会连续到未来,这样就可以直接利用过去的变动趋势预测未来。但多数的历史数据由于受偶然性因素的影响,其变化不太规则。利用这些资料时,要消除偶然性因素的影响,把时间序列作为随机变量序列,采用算术平均、加权平均和指数平均等来减少偶然因素,提高预测的准确性。
在上篇文章已经具体介绍了一次移动平均法和二次移动平均法详解+实例代码
一文速学-时间序列分析算法之一次移动平均法和二次移动平均法详解+实例代码
接下来也是紧接着平滑法的第三中算法,加权移动平均法。
一、加权移动平均法
在简单移动平均公式中,每期数据在求平均时的作用是等同的。但是,每期数据所包含的信息量不一样,近期数据包含着更多关于未来情况的信心。因此,把各期数据等同看待是不尽合理的,应考虑各期数据的重要性,对近期数据给予较大的权重,这就 是加权移动平均法的基本思想。
根据我的上篇文章我们明白移动平均法基本上是在平均值的基础上进行预测。一般来说若经济变量在某一值上下波动情况以及升降缓慢预测效果比较好,反之误差比较大。
1.计算公式
设时间序列为加权移动平均公式为:
,
公式中为t期加权移动平均数:
为
的权数,它体现了相应的
在加权平均数的重要性。
利用加权移动平均数来做预测,其预测公式为:
即以第t期加权平均数作为t+1期的预测值
那么我们以实际案例来使用运算:
2.示例运用
以在某化学反应里,测得生成物浓度y(%)与时间t(min)的数据为例子:
我们取时间窗口为5,则权重我们设置为.按照预测公式为:
代码:
#输入x为预测集、n为时间窗口、w为设置权重,m为预测时间
def weighting_shift(x,n,w,m):num=0sum=0for i in range(n):num=w[i]+numsum=w[i]*x[m-i-2]+sumy=sum/numreturn y
输入预测下一个值,也就是为:8.17。这个预测值偏低但是我们可以使用相对误差进行修正:
例如:我们要预测
#输入x为预测集、n为时间窗口、w为设置权重,m为预测时间
def weighting_shift(x,n,w,m):num=0sum=0for i in range(n):num=w[i]+numsum=w[i]*x[m-i-2]+sumy=sum/numreturn y
w=[5,4,3,2,1]
weighting_shift(y,5,w,16)
3.误差修正
的相对误差为:
我们将所有的误差放到一张表上面:
#输入时间窗口
def get_error(x,n,w):y_error=[]for i in range(x.size-n):y=weighting_shift(x,n,w,n+i+1)y_error.append((x[n+i]-y)/x[n-1+i])return y_error
那么我们再计算总的平均相对误差:
list_y=[]
#输入x为预测集、n为时间窗口、w为设置权重,m为预测时间
def weighting_shifts(x,n,w,m):num=0sum=0for i in range(n):num=w[i]+numsum=w[i]*x[m-i-2]+sumy=sum/numreturn y
for i in range(6,16):list_y.append(weighting_shifts(y,5,w,i))
y=y[5:15]
def mean_shift(list_y,y):sum1=0sum2=0y=list(y)for i in range(len(list_y)):sum1=sum1+list_y[i]sum2=sum2+y[i]error_mean=(1-sum1/sum2)return error_mean
mean_shift(list_y,y)
之后将我们求得的 :
,还是得按照趋势来加权,否则就像这样就算平滑相对误差也得不到相对准确的值。
在加权移动平均法中, 的选择,同样具有一定的经验性。一般的原则是:近期数据的权数大,远期数据的权数小。至于大到什么程度和小到什么程度,则需要按照预 测者对序列的了解和分析来确定。
点关注,防走丢,如有纰漏之处,请留言指教,非常感谢
以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。
一文速学-时间序列分析算法之加权移动平均法详解+Python代码实现相关推荐
- 一文速学-时间序列分析算法之移动平均模型(MA)详解+Python实例代码
目录 前言 一.移动平均模型(MA) 模型原理 自回归 移动平均模型 自相关系数 常用的 MA 模型的自相关系数 通用: MA(1)模型: MA(2)模型: 自协方差函数 二.Python案例实现 平 ...
- 一文速学数模-分类模型(一)SVM(Support Vector Machines)支持向量机算法原理以及应用详解+Python代码实现
目录 前言 一.引论 二.理论铺垫 线性可分性(linear separability) 超平面 决策边界
- 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现
目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...
- 数学建模——主成分分析算法详解Python代码
数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...
- Pyecharts一文速学-绘制桑基图详解+Python代码
目录 前言 一.桑基图 二.Pyecharts绘制 1.数据处理 2.桑基图参数 1.class Sankey() 2.class SankeyLevelsOpts() 三.add()方法参数 1.s ...
- covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践
这是关于时间序列的第N篇文章,本文将介绍ARIMAX模型,简单来说就是在ARIMA的基础上增加一个外生变量.ARIMAX和ARIMA相比在理论上没有太多新的内容,所以本文直接介绍在R里怎么一步一步跑A ...
- 一文速学数模-聚类模型(一)K-means聚类算法详解+Python代码实例
目录 前言 一.聚类分析 二.K-means原理 1.距离度量算法 欧几里得距离(欧氏距离)
- 一文速学数模-时序预测模型(五)指数平滑法详解+Python代码实现
目录 前言 一.指数平滑法 1.简介 2.特点 3.基本原理 4.优缺点 优点 缺点</
- 一文讲懂页面置换算法,带例题详解
目录 什么是页面置换算法? 缺页中断次数和页面置换次数 啥子是缺页? 啥子是中断? 啥子是缺页中断? 缺页中断次数 最佳置换算法OPT和先进先出置换算法FIFO 最佳置换算法OPT ...
- python快速排序算法详细图解_详解python实现快速排序算法
人来人往,蜚短流长,不求此生匆匆过,但求每日在成长 快速排序严重依赖分区,分区部分完成就代表排序成功了一半 1.详细思路见代码注释部分: def quick_sort(l,low,high): ''' ...
最新文章
- Proteus原理图元器件库详细说明
- 天翼云从业认证(4.8)高性能计算解决方案
- 公司项目拓扑的演变过程
- 《MySQL——count()逻辑》
- Bad Hair Day(POJ-3250)
- 360移动技术开放日 聚焦移动前沿技术(有福利)
- Matlab修改显示数值格式/精度/小数位数
- awk入门-保护SSHD
- [渝粤教育] 西南科技大学 政治经济学 在线考试复习资料
- sqlserver 多表连接查询
- 视频教程-第03章-二进制、八进制、十进制、十六进制之间的转换-网络技术
- uva 10098	Generating Fast
- win7空文件夹删不掉的原因及解决方法
- 443端口拦截原理浅析
- Mov文件格式对mdat和moov的分析
- 智慧消防物联网落地案例(云南、福建、陕西) java 物联网智慧消防
- Python软件的下载安装教程
- 宜家app android,IKEA宜家家居下载
- 做一个简单网页(做一个简单网页多少钱)
- 基于NS模型+久期衡量利率风险(Julia)
热门文章
- 小米手机图标应用图标不改变的问题
- 代码对比/归并/两个代码对比,对比代码
- python 查询ip工具
- 十六进制的字符对照表
- linux .otf文件,如何在Linux上将OTF或是TTF字库案转成WOFF或是WOFF2网页字库案?
- [openwrt]:斐讯K3C OPCC+中大H3C校园网认证配置指南(一)
- 【求职】360 C++反向面经
- 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow第2版》-学习笔记(1)
- 平面设计中的网格系统pdf_一本好书 | 排版圣经:设计中的网格系统
- 用注册机破解navicat12