Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-04-07, 19:27   #1
winewy
初级会员
 
注册日期: 2009-04-27
年龄: 36
帖子: 9
声望力: 0
winewy 正向着好的方向发展
问题 大家帮我看看predict函数的问题

最近接触到了用ARIMA模型进行时间序列预测,其中Xtrain是200个训练数据,Xfor是100个待预测的数据,程序如下:
SourceData=[Xtrain;Xfor];
nfor=size(Xfor,1); %待预测的数据个数
step=1; %1步预测
TempData=SourceData;
%----------差分,平稳化时间序列---------
[H,PValue,TestStat,CriticalValue] = dfARDTest(TempData,[],0.05,'T');
SaveDiffData=[];
while ~H
SaveDiffData=[SaveDiffData;TempData(1,1)];%保存去掉的数
TempData=diff(TempData);%差分,平稳化时间序列
TempData2=TempData;
[H,PValue,TestStat,CriticalValue] = dfARDTest(TempData,[],0.05,'T');%adf检验,判断时间序列是否平稳化
end
%------------模型定阶或识别------------
u = iddata(TempData(1:end-nfor));%训练数据
test = [];
for p = 1:10 %自回归对应PACF,给定滞后长度上限p和q
for q = 1:10 %移动平均对应ACF
m = armax(u,[p q]);
AIC = aic(m); %armax(p,q),计算AIC
test = [test;p q AIC];
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阶预测-----------------
n=iddata(TempData);
m = armax(u,[p_test q_test]); %armax(p,q),[p_test q_test]对应AIC值最小
P1=predict(m,n,step);
PreR=P1.OutputData;

%----------------还原差分-----------------
if size(SaveDiffData,2)~=0
for index=size(SaveDiffData,1):-1:1
PreR=cumsum([SaveDiffData(index);PreR]);
end
end
tempx=PreR(size(SourceData,1)+1:size(PreR,1));
想请教各位大侠predict函数的原理是什么,我看了matlabhelp里的解释,还是不明白,这样编程的话结果是不是每次做一步预测的时候都用到了前一步的真实值?因为如果我把Xfor全部置0的话结果就不一样了,说明predict函数在预报的时候使用到了前一步的真实值,可对于一次性预报后面100个点的情况,这100个点的值都是未知的呀,只能在每次做一步预测的时候使用前一步的预测值,要怎么编呢?matlab有没有实现这一功能的自带函数呢?如果自己编的话,是不是要设一个循环,让数据每次向前滚动一个数,并且每次都要重新用armax函数重新建模,在用predict函数对下一时刻进行预报??我试着这样编了一下,发现效率太低,请问各位大侠这样做对不对,有没有更好的办法?谢谢大家了!!!
__________________
growing up can be so strange,but some things will never change.
winewy 当前离线   回复时引用此帖
旧 2017-07-17, 14:33   #2
zhiyuan12346
初级会员
 
注册日期: 2017-07-17
年龄: 30
帖子: 1
声望力: 0
zhiyuan12346 正向着好的方向发展
微笑 回复: 大家帮我看看predict函数的问题

您好!我也在做ARMA预测,遇到了类似的问题。请问你的问题解决了吗?怎么解决的?感觉你的最后一段话说的很在理,但是我试了很多次也没有解决这个问题!
zhiyuan12346 当前离线   回复时引用此帖
旧 2018-11-16, 17:39   #3
祝梓歆
初级会员
 
注册日期: 2018-11-16
年龄: 31
帖子: 1
声望力: 0
祝梓歆 正向着好的方向发展
默认 回复: 大家帮我看看predict函数的问题

不知道你解决了没有,我最近在看这个,感觉应该是P1=predict(m,n,100)
祝梓歆 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 19:39


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.