python构建指数平滑预测模型_指数平滑预测法python实现

本文详细介绍了Python中构建指数平滑预测模型的方法,包括一次、二次和三次指数平滑,并提供了相应的代码实现。通过误差分析和图表展示,帮助理解模型效果。
摘要由CSDN通过智能技术生成

说明:基于python的指数平滑预测平滑系数确定、计算、误差分析、结果输出与可视化。

指数平滑法

指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测方法中,指数平滑是用得最多的一种。简单的全期平均法是对时间数列的过去数据一个不漏地全部加以同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期资料更大的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。

也就是说指数平滑法是在移动平均法基础上发展起来的一种时间序列分析预测法,它是通过计算指数平滑值,配合一定的时间序列预测模型对现象的未来进行预测。其原理是任一期的指数平滑值都是本期实际观察值与前一期指数平滑值的加权平均。

代码实现

一次指数平滑

def exponential_smoothing_1(alpha, data):

'''

一次指数平滑

:param alpha: 平滑系数

:param data: 数据序列:list

:return: 返回一次指数平滑值:list

'''

s_single=[]

s_single.append(data[0])

for i in range(1, len(data)):

s_single.append(alpha * data[i] + (1 - alpha) * s_single[i-1])

return s_single

二次指数平滑

def exponential_smoothing_2(alpha, data):

'''

二次指数平滑

:param alpha: 平滑系数

:param data: 数据序列:list

:return: 返回二次指数平滑值,参数a, b:list

'''

s_single = exponential_smoothing_1(alpha, data)

s_double = exponential_smoothing_1(alpha, s_single)

a_double = [0 for i in range(len(data))]

b_double = [0 for i in range(len(data))]

F_double = [0 for i in range(len(data))]

for i in range(len(data)):

a = 2 * s_single[i] - s_double[i]

b = (alpha / (1 - alpha)) * (s_single[i] - s_double[i])

F = a + b

a_double[i] = a

b_double[i] = b

F_double[i] = F

return a_double,b_double,F_double

三次指数平滑

def exponential_smoothing_3(alpha, data):

'''

三次指数平滑

:param alpha: 平滑系数

:param data: 数据序列:list

:return: 返回二次指数平滑值,参数a, b, c,预测值Ft+1:list

'''

s_single = exponential_smoothing_1(alpha, data)

s_double = exponential_smoothing_1(alpha, s_single)

s_triple = ex

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值