一文速学-时间序列分析算法之加权移动平均法详解+python代码实现(代码片段)

fanstuck fanstuck     2022-10-22     582

关键词:

目录

前言

一、加权移动平均法

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=0
    sum=0
    for i in range(n):
        num=w[i]+num
        sum=w[i]*x[m-i-2]+sum
    y=sum/num
    return y

 输入预测下一个值,也就是为:8.17。这个预测值偏低但是我们可以使用相对误差进行修正:

例如:我们要预测

#输入x为预测集、n为时间窗口、w为设置权重,m为预测时间
def weighting_shift(x,n,w,m):
    num=0
    sum=0
    for i in range(n):
        num=w[i]+num
        sum=w[i]*x[m-i-2]+sum
    y=sum/num
    return 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=0
    sum=0
    for i in range(n):
        num=w[i]+num
        sum=w[i]*x[m-i-2]+sum
    y=sum/num
    return 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=0
    sum2=0
    y=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 ,有问题大家随时留言讨论 ,我们下期见。

一文速学-时间序列分析算法之一次移动平均法和二次移动平均法详解+实例代码(代码片段)

...谢参阅:前言最近打算研究通彻将机器学习所有有关时间序列分析算法预测模型都讲明白清楚ÿ 查看详情

一文速学-时间序列分析算法之移动平均模型(ma)详解+python实例代码(代码片段)

...xff1a; MA(2)模型:自协方差函数二、Python案例实现平稳时间序列建模步骤平稳性检验输出内容解析:补充说明:MA预测模型 消除趋势和季节性变化差分Differencing分解DecompositionACF自协方差和PACF偏自相关函数模型建立​... 查看详情

一文速学-时间序列分析算法之移动平均模型(ma)详解+python实例代码(代码片段)

...xff1a; MA(2)模型:自协方差函数二、Python案例实现平稳时间序列建模步骤平稳性检验输出内容解析:补充说明:MA预测模型 消除趋势和季节性变化差分Differencing分解DecompositionACF自协方差和PACF偏自相关函数模型建立​... 查看详情

优化算法之指数加权平均详解

本文的内容来自deeplearning.ai一、什么是指数加权平均指数加权平均(exponentiallyweightedaverges)也叫指数加权移动平均,通过它可以来计算局部的平均值,来描述数值的变化趋势,下面通过一个温度的例子来详细介绍一下。... 查看详情

一文速学-最小二乘法曲线拟合算法详解+项目代码

目录前言一、曲线拟合策略二、最小二乘法理论基础1.残差原理特征< 查看详情

一文速学-pandas处理dataframe稀疏数据及维度不匹配数据详解(代码片段)

...我之前的博客详细介绍这两种数据结构的处理方法:一文速学-数据分析之Pandas数据结构和基本操作代码一文速学-Pandas实现数值替换、排序、排名、插入和区间切片一些Pandas基础函数的使用方法:DataFrame行列表查询操作详... 查看详情

非正常情况下的移动加权平均算法

非正常情况下的移动加权平均算法什么叫移动加权平均法?百度上的解释:移动加权平均法是指以每次进货的成本加上原有库存存货的成本,除以每次进货数量与原有库存存货的数量之和,据以计算加权平均单位成本,以此为基... 查看详情

一文速学-hivesql解析json数据详解+代码实战(代码片段)

目录前言一、JSON数据二、Hive解析函数1.get_json_object2.json_tuple3.explode4.regexp_replace三、Hive解析JSON数组第一步: 第二步: 第三步: 第四步:第五步:点关注,防走丢,如有纰漏之处,请留言指教... 查看详情

一文速学-pyspark数据分析基础:spark本地环境部署搭建(代码片段)

目录前言:sparkPySpark一、安装JDK二、安装anaconda三、安装spark 四、安装Hadoop五、安装Scala六、配置在JupyterLab中运行PySpark七、配置pyspark 八、配置winutils九、安装findspark九、检验是否存在错误点关注,防走丢,如有纰漏... 查看详情

docker常用指令和镜像操作详解一文速学+实例代码(代码片段)

目录前言一、Docker基础命令1.启动docker 2.查看状态 3.关闭docker 4.开机自启 5.查看版本信息 6.查看帮助二、Docker镜像命令1.查看docker镜像 2.搜索镜像搜索不小于10000星的busybox的镜像 format格式化输出 限制搜索输出个数 禁止截... 查看详情

移动平均法详解

 什么是移动平均法?  移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节... 查看详情

深入详解二次移动平均法python(代码片段)

...,也称为指数加权移动平均法,是一种用于平滑时间序列数据的算法。文章目录二次移动平均法逻辑Python代码实现第二种实现二次移动平均法的方式第三种卷积实现二次移动平均法二次移动平均法的应用场景二次移动平... 查看详情

一文速学-pandas中dataframe转换为时间格式数据与处理(代码片段)

前言由于在Pandas中经常要处理到时间序列数据,需要把一些object或者是字符、整型等某列进行转换为pandas可识别的datetime时间类型数据,方便时间的运算等操作。正好原来有篇文章特别是讲述一文速学-Pandas处理时间序列... 查看详情

计算时间加权移动平均线

...间】:2012-04-2619:18:23【问题描述】:我有一个股票价格的时间序列,并希望计算十分钟窗口内的移动平均线(见下图)。由于价格变动是零星发生的(即它们不是周期性的),因此似乎是最公平的。图中有四个价格变化:A、B、C... 查看详情

实验5-excel时间序列分析-移动平均

  EXCEL时间序列分析-移动平均   另一种预测方法是根据时间发展进行预测,简单来说就是时间序列预测。时间预测法的基本特点:   (1)假设事物发展趋势会延伸到未来;   (2)预测所依据的... 查看详情

猿创征文|时间序列分析算法之二次指数平滑法和三次指数平滑法详解+python代码实现(代码片段)

目录前言二次指数平滑法(Holt’slineartrendmethod)1.定义2.公式二次指数平滑值:二次指数平滑数学模型: 3.案例实现三次指数平滑法(Holt-Winters’seasonalmethod)1.定义2.公式 3.案例实现加权系数a的选择点关注,防走丢,... 查看详情

使用 pandas Rolling 方法计算加权移动平均值

】使用pandasRolling方法计算加权移动平均值【英文标题】:CalculatingweightedmovingaverageusingpandasRollingmethod【发布时间】:2017-02-0603:44:33【问题描述】:我计算简单移动平均线:defsma(data_frame,length=15):#TODO:Besureaboutdefaultvaluesoflength.smas=da... 查看详情

简单移动平均线加权移动平均线指数平滑移动平均

...平均线的种类移动平均线可分为“算术移动平均线”、“加权移动平均线”、“指数平滑移动平均线”三种。1.算术移动平均线(MA)算术移动平均线是简单而普遍的移动平均线。平均线是指算术平均数,计算方法为一组数字相... 查看详情