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

本文通过一次、二次和三次指数平滑法的实例演示了如何进行时间序列预测,并使用MATLAB代码展示了不同平滑参数对预测结果的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指数平滑法,就可以理解成一种变种的加权移动平均法吧
α越大,表明最近的数据所占的权重就越大
在这里插入图片描述
一次指数平滑法
在这里插入图片描述
例题
在这里插入图片描述

clc,clear
yt = [50 52 47 51 49 48 51 40 48 52 51 59]'; % 列向量
n = length(yt);
alpha = [0.2 0.5 0.8];
m = length(alpha);
yhat(1, [1:m]) = (yt(1) + yt(2))/2;
for i = 2:n
    yhat(i, :) = alpha * yt(i - 1) + (1 - alpha) .* yhat(i-1, :);
end
yhat
err = sqrt(mean((repmat(yt, 1, m) - yhat).^2)) % 误差
yhat1998 = alpha * yt(n) + (1 - alpha).*yhat(n, :) % 预测值

分析:
在这里插入图片描述
二次指数平滑法
在这里插入图片描述
例题如下
在这里插入图片描述

clc,clear
format long g
yt = [676 825 774 716 940 1159 1384 1524 1668 1688 1958 2031 2234 2566 2820 3006 3093 3277 3514 3770 4107]';
n = length(yt);
alpha = 0.3;
st1(1) = yt(1);
st2(1) = yt(1);
for i = 2:n
    st1(i) = alpha * yt(i) + (1 - alpha) * st1(i - 1);
    st2(i) = alpha * st1(i) + (1 - alpha) * st2(i - 1);
end
st1'
st2'
at = 2 * st1 - st2;
at';
bt = alpha/(1 - alpha) * (st1 - st2);
bt';
yhat = at + bt;
yhat'
yhat(end) % 1986年预测值
pre  = at + 2 * bt;
pre(end) % 1987年预测值

三次指数平滑法
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述

clc,clear
format long g
yt = [20.04 20.06 25.72 34.61 51.77 55.92 80.65 131.11 148.58 162.67 232.26]';
n = length(yt);
alpha = 0.3;
st0 = mean(yt(1:3));
st1(1) = alpha * yt(1) + (1 - alpha) * st0;
st2(1) = alpha * st1(1) + (1 - alpha) * st0;
st3(1) = alpha * st2(1) + (1 - alpha) * st0; 
for i = 2:n
    st1(i) = alpha * yt(i) + (1 - alpha) * st1(i - 1);
    st2(i) = alpha * st1(i) + (1 - alpha) * st2(i - 1);
    st3(i) = alpha * st2(i) + (1 - alpha) * st3(i - 1);
end
st1'
st2'
st3'
at = 3 * st1 - 3 * st2 + st3;
bt = 0.5 * alpha/(1 - alpha)^2 * ((6 - 5 * alpha) * st1 - 2 * (5 - 4 * alpha) * st2 + (4 - 3 * alpha) * st3);
ct = 0.5 * alpha^2 / (1 - alpha)^2 * (st1 - 2 * st2 + st3);
yhat = at + bt + ct;
yhat'
plot(1:n, yt, 'D', 2:n, yhat(1: end-1), '*')
legend('实际值', '预测值', 'Location', 'northwest')
xishu = [ct(end), bt(end), at(end)];
yhat1990 = polyval(xishu, 2)

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Icy Hunter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值