如何用matlab进行AR模型预测数据
本人现在要用AR模型预测数据。现在有之前366天的数据。现在准备用230天的数据作为测试数据。剩下的136天数据用来检验预测的准确性。本来只知道用Aryule(x,order)得到y。但是却不知道怎么用。刚才在论坛中搜索了一下才知道原来要用ar来建模进行预测。
可是具体应该如何应用还是有些不明白。希望大家可以帮我解释一下。
如果我想用230天的数据来预测后136天的数据。例如我要用4阶AR。x 是那230个数据.
是不是要先用aryule(x,4)求出Y. 然后 z = idpoly (,[])...这个是把多项式转换成模型? m = iddata(,[])..这个iddata是干什么的阿?
然后是不是就用n = ar(x,4,'yw')就算把AR模型建好了?
然后要怎么进行预测呢?我搜索的是说用predict命令和compare命令。但是不知道怎么用..有人能指点一下么。
太感谢了
另外我一开始是用aryule(x,order)得到y。但是不知道应该如何才能求出自回归模式的系数。也就是y = a0y+a1y+a2y+.......apy + Et 里面的a0,a1,a2.
只有这些数求出来了才能对数据进行据测啊。
谁能告诉我到底应该是怎么才能用那230个以前的数据预测那136个数据呢?
[ 本帖最后由 eight 于 2008-2-19 09:27 编辑 ] 用aryule(x,4)求出的是预测系数a,有了预测系数后就可以按模型做数据预测了,但要注意前向预测和后向预测,从楼主的介绍来看要做后向预测。
[ 本帖最后由 songzy41 于 2008-2-19 09:08 编辑 ] 哦.那意思就是说我用aryule(x,4)求出来的Y就是?
例如我求出的y = 1.0000 -1.0011 0.0029 -0.0015 0.0041
我直接用y = 1 - 1.0011y + 0.0029y-0.0015y+0.0041y
但是这样我得到的结果不对啊。差的很多阿。这是为什么啊?
假设n = 4. yn = 1.9666 yn-1 = 1.9676 yn-2 = 1.9666 yn-3 = 1.9595yn+1 = 1.9666 你是做前向预测,则计算方法如下图。不知楼主为什么取阶数为4阶,很低,是否数据非常平坦? 哦,我是想从4阶到10阶都试一下。然后选择效率最好的那个。 另外还请问一下。每次我用y = aryule(x,n)之后总会得到n+1个Y值。
Y的第一个值都是1。这个1是不是没用阿?如果我用后面的n个数当成a0-an.
可以算出比较接近的答案。那这个1是不是就没用了?
不好意思,新人问题可能比较多 这个1就在用在y(n)上,不是没有用。 但是如果1用在y上了。那最后还多出来一个数是干什么用的?
而且如果这样的话,那么用我上面给出的数据。预测结果会差很多的阿? 哦。刚才又搜索了一番有了进一步的了解。
是不是表达式应该是y = a1y + a2y + .....+ap
这样的话那个1就是y的系数。然后后面的就等于a1,a2,...ap了?
太感谢songzy41兄弟了....感激不尽阿...:victory: 还得注意有个负号:
y = -{a1y + a2y + .....+apy} 怎么还是没有说怎么用compare 和predict 进行ARmodel的 预测啊有人能说一下吗? 原來如此 要加上負號啊
能否把程序贴出来或者发份到邮箱里看看
能否把程序贴出来或者发份到邮箱里看看?:lol :handshake 不错,,, 高手!你的这个公式我查了好多书都没见到,我见到的公式都是X(n)=a(1)*X(n-1)+a(2)*X(n-2)+a(3)*X(n-3)+a(4)*X(n-4)这一类型的!希望你能给说明一下!好使我豁然开朗
页:
[1]
2