Zeng_fh_ 2022-05-21 16:36 采纳率: 89.8%
浏览 44
已结题

这段时间序列代码,怎么修改可以预测多年的呀,这样只能预测未来1年的


clc, clear,clc;
b=[8394 
8122 
13300 
18784 
24173 
32332 
41704 
47269 
43192 
50034 
48523 
46865 
51097 
58129 
66122 
71920 
95538 
96960 
93066 
90171 
90002 


];
a=b';
Rt=tiedrank(a) %求原始时间序列的秩
t0=2001;
n=length(a); t=t0:t0-1+n; 
Qs=1-6/(n*(n^2-1))*sum((t-Rt).^2)   %计算Qs的值
T=Qs*sqrt(n-2)/sqrt(1-Qs^2)   %计算T统计量的值
t_0=tinv(0.975,n-2)     %计算上alpha/2分位数
b=diff(a);   %求原始时间序列的一阶差分
m=ar(b,2,'ls')  %利用最小二乘法估计模型的参数
bhat=predict(m,b')  %求预测值,第二个参数必须为列向量

bhat(end+1)=forecast(m,b',1) %计算1个预测值,第二个参数必须为列向量
ahat=[a(1), a+bhat']  %求原始数据的预测值,并计算t=n+1的预测值
bhat(end+2)=forecast(m,b',1) %计算2个预测值,第二个参数必须为列向量???????????
ahat=[a(1), a+bhat']  %求原始数据的预测值,并计算t=n+2的预测值??????


t2=t0:t0-1+n+1;
plot(t2,ahat)
hold on

delta=abs((ahat(1:end-1)-a)./a)  %计算原始数据预测的相对误差
delta2=delta+a;
plot(t,delta2,'x')
legend('预测值','原始数据');
title('人均水资源量');
ahat(n+1)
%writematrix(ahat, 'anli15_1.xlsx')
%writematrix(delta,'anli15_1.xlsx', 'Sheet', 1, 'Range', 'A3') 

  • 写回答

2条回答 默认 最新

  • 秋刀鱼程序编程 2022-05-21 18:55
    关注

    把b和a做成循环应该就可以!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月28日
  • 赞助了问题酬金10元 5月21日
  • 创建了问题 5月21日

悬赏问题

  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了