subplot(3,1,1)
plot(A)
hold on
plot(B)
x=1:1:50;
C=B-y1;
y2=a0+a1*cos(w*x)+b1*sin(w*x);
y3=C-y2;
subplot(3,1,2)
plot(y2)
subplot(3,1,3)
plot(y3)
Data=A; %共50个数据
SourceData=Data(1:40,1); %前47个训练集
step=10; %后3个测试,2个预测
TempData=SourceData;
TempData=detrend(TempData); %去趋势线
TrendData=SourceData-TempData; %趋势函数
%--------差分,平稳化时间序列---------
H=adftest(TempData)%平稳性检验,H=1为平稳序列,H=0为非平稳序列
difftime=0;
SaveDiffData=[];
while~H %如果H为假
SaveDiffData=[SaveDiffData,TempData(1,1)];
TempData=diff(TempData);%差分,平稳化时间序列
difftime=difftime+1; %差分次数
H=adftest(TempData); %adf检验,判断时间序列是否平稳化
fprintf('H=%d\n',H);
end
%---------模型定阶或识别--------------
u = iddata(TempData); %转换到频域即数据转换为armax模型可识别类
test = [];
for p = 1:5 %自回归对应PACF,给定滞后长度上限p和q,一般取为T/10、ln(T)或T^(1/2),这里取T/10=12
for q = 1:5 %移动平均对应ACF
m = armax(u,[p q]);
AIC = aic(m); %armax(p,q),计算AIC,返回模型m对应的AIC
test = [test;p q AIC];
fprintf('AIC=%f,p=%d,q=%d\n',AIC,p,q);
end
end
for k = 1:size(test,1)
if test(k,3) == min(test(:,3)) %选择AIC值最小的模型
p_test = test(k,1);
q_test = test(k,2);
break;
end
end
%------1阶预测-----------------
TempData=[TempData;zeros(step,1)];
n=iddata(TempData); %转换为频域
m = armax(u,[p_test q_test]); %m = armax(u(1:ls),[p_test q_test]);
%armax(p,q),[p_test q_test]对应AIC值最小,自动回归滑动平均模型
P1=predict(m,n,1);%预测函数,m为模型,n为数据,一般为1
PreR=P1.OutputData;
PreR=PreR';
%----------还原差分-----------------
if size(SaveDiffData,2)~=0
for index=size(SaveDiffData,2):-1:1
PreR=cumsum([SaveDiffData(index),PreR]);
end
end
%-------------------预测趋势并返回结果----------------
mp1=polyfit([1:size(TrendData',2)],TrendData',1);
xt=[];
for j=1:step
xt=[xt,size(TrendData',2)+j];
end
TrendResult=polyval(mp1,xt)%TrendResult为需要预测的结果
PreData=TrendResult+PreR(size(SourceData',2)+1:size(PreR,2));
tempx=[TrendData',TrendResult]+PreR; % tempx为预测结果
plot(tempx,'r');%红色的为全程预测结果图
hold on
plot(Data,'b');%蓝色的为实际数据图
title('逐年2月平均气温对比图:红线为拟合预测图,蓝线为实测数据')
mn=mean(tempx);
sd=std(tempx);
up=mn+1.96*sd;
low=mn-1.96*sd;
r=mn+sd*randn(1,37);
y4=tempx+r;
y5=tempx-r;
plot(y4)
plot(y5)
没有合适的资源?快使用搜索试试~ 我知道了~
Time Series.rar_1TSM_time series_时间序列
共1个文件
txt:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 123 浏览量
2022-07-15
00:00:44
上传
评论
收藏 1KB RAR 举报
温馨提示
此程序系统的细致的用于解决时间序列的预测
资源推荐
资源详情
资源评论
收起资源包目录
Time Series.rar (1个子文件)
Time Series.txt 2KB
共 1 条
- 1
资源评论
JaniceLu
- 粉丝: 79
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功