时间序列预测之差分指数平滑法及有季节性特点的序列预测

Posted Icy Hunter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间序列预测之差分指数平滑法及有季节性特点的序列预测相关的知识,希望对你有一定的参考价值。

差分指数平滑法

差分就是后一个数据减去前一个数据得到的差值,为什么说如果有直线趋势便改变了趋势呢?因为例如y = a * x + b,那么每个差分的值就相当于a了,当然因为误差存在,肯定是围绕a上下波动的,因此便转换为一种围绕a变化的趋势而不是直线趋势了,便改变了数据的趋势。即我们先对数据的趋势作预测,预测完了之后再在原来数据的基础上加上这个趋势值就能够较好地预测出需要的值了。

一阶差分指数平滑法


例题:

clear, clc
yt = [24 26 27 30 32 33 36 40 41 44]';
n = length(yt);
alpha = 0.4;
dyt = diff(yt); % 向前求一阶差分,即后面的数-前面数
dyt = [0 ; dyt]; % 第一个数没得求,用0补
dyhat(2) = dyt(2); % 指数平滑的初始值
for i = 2:n
    dyhat(i + 1) = alpha * dyt(i) + (1 - alpha) * dyhat(i);
end
for i = 1:n
    yhat(i + 1) = dyhat(i + 1) + yt(i);
end
yt
dyt
yhat' % 预测值

具有季节性特点的时间序列预测
季节可以指自然季节,也可以指销售季节等等。例如羽绒服肯定是冬季销量夏季的。下面介绍一种季节系数法,计算步骤如下:

例题:

clc,clear
format long g
data = [137920 186742 274561 175433
    142814 198423 265419 183521
    131002 193987 247556 169847
    157436 200144 283002 194319
    149827 214301 276333 185204];
[m, n] = size(data);
a_mean = mean(mean(data)); % 计算所有数据的算术平均值
aj_mean = mean(data); % 计算同季节的算术平均值
bj = aj_mean/a_mean % 计算季节系数
w = 1:m;
yhat = w * sum(data,2)/sum(w) % 预测下一年的年加权平均值,这里是求行和
yjmean = yhat/n % 计算预测年份的季节平均值
yjhat = yjmean * bj % 预测年份的季节预测值
format

本文参考的是司守奎,孙兆亮主编的数学建模算法与应用(第二版)

以上是关于时间序列预测之差分指数平滑法及有季节性特点的序列预测的主要内容,如果未能解决你的问题,请参考以下文章

时间序列平滑法如何预测产品产量?

Python 时间序列建模:用指数平滑法预测股价走势

对时间序列数据作出指数平滑预测后,如何用excel计算数据的均方误差(MSE)?

时间序列预测之指数平滑法(ES)

一文速学-时间序列分析算法之指数平滑法详解+Python代码实现

时间序列预测之ARMAARIMA序列及季节性序列matlab实现