sunhm1986
2009-09-22, 20:06
最近在研究基于ARMA模型的预测问题,对于在这个模型下的预测原理我始终搞不明白,以下是我编的程序
load data.txt
B=data;
C=B(1:200);
F=B(201:300);
nar=arorder(C); %AR的阶数
nma=maorder(C);
py=armax(C,[nar,nma]); %MA的阶数
E=predict(py,F,k); %k为预测步长
plot(F)
hold on
plot(E,'r')
我的想法是通过C来预测后一百个数据再跟F作比较,我看matlab的帮助里的例子好像跟我编的意思也差不多,这样做到是能出图像,就是不明白既然predict中用到了函数F,那这还算预测么?matlab帮助里的例子里用的是函数y,它的y也是1:400的数据,最后做出来用y里的后200个和预测出来的后200个作比较而已。既然是预测的话就应该是只知道C就能出跟F很相近的序列吧?我试过把predict里的F换成C,不过这样出的图和F相比误差就很大,我现在的理解就是它是用一个真实的F值预测的下一点,再用下一点的真实的F预测的再下一点,这样滚动的,不知道我这样理解对不对~如果真是这样的话,能不能不用到F,只用C就预测后好几个F呢?另外对于ARMA这个模型来说A(q)y(t)=C(q)et,我的前200个数据序列C应该是对应的y(t)里面的项吧?具体取几个应该是nar决定的,那et是多少啊?et的值难道是predict这个函数自己设的?nma个et呢~~~~总之ARMA这个模型是怎么用predict实现预测的呀?我最近看的脑袋都快炸了~~请达人帮忙指点指点吧~~~~~~~
load data.txt
B=data;
C=B(1:200);
F=B(201:300);
nar=arorder(C); %AR的阶数
nma=maorder(C);
py=armax(C,[nar,nma]); %MA的阶数
E=predict(py,F,k); %k为预测步长
plot(F)
hold on
plot(E,'r')
我的想法是通过C来预测后一百个数据再跟F作比较,我看matlab的帮助里的例子好像跟我编的意思也差不多,这样做到是能出图像,就是不明白既然predict中用到了函数F,那这还算预测么?matlab帮助里的例子里用的是函数y,它的y也是1:400的数据,最后做出来用y里的后200个和预测出来的后200个作比较而已。既然是预测的话就应该是只知道C就能出跟F很相近的序列吧?我试过把predict里的F换成C,不过这样出的图和F相比误差就很大,我现在的理解就是它是用一个真实的F值预测的下一点,再用下一点的真实的F预测的再下一点,这样滚动的,不知道我这样理解对不对~如果真是这样的话,能不能不用到F,只用C就预测后好几个F呢?另外对于ARMA这个模型来说A(q)y(t)=C(q)et,我的前200个数据序列C应该是对应的y(t)里面的项吧?具体取几个应该是nar决定的,那et是多少啊?et的值难道是predict这个函数自己设的?nma个et呢~~~~总之ARMA这个模型是怎么用predict实现预测的呀?我最近看的脑袋都快炸了~~请达人帮忙指点指点吧~~~~~~~