如何使用NARX预测未来使用有效的输入数据
2视图(30天)
显示旧的评论
2016我用Matlab在64位Windows 7专业机器。我有132的输入数据:[61.17,341.5600][65.4800,328.2080][64.8800,355.4050]和........和120年输出数据为:62352 95856 89124 .......我生成了一个闭环NARX预测输出数据为输入向量X1 (121:128)。然而,我只能模拟120输出120输入,我不能预测未来输出使用有效的输入X1 (121:128)。我用下面的代码来模拟输出:
u1 = X1 (1:90);% X1是输入数据
y1 = (1:90);%日元是输出数据
[p1,₁, Ai1, t1) = preparets (net_closed, u1, {}, y1);
yp1 = net_closed (p1,₁, Ai1);
TS =大小(t1, 2);
阴谋(1:TS, cell2mat (t1),“b”1:TS, cell2mat (yp1),“r”)
结果图:我如何改变我的代码来预测的输出输入120:128吗?提前谢谢你。
2的评论
阿明Niaki
2017年1月6日
编辑:阿明Niaki
2017年1月6日
我是PK处理同一问题。目标是获得12个月的预测响应Y1(目标)基于X1目前拥有9变量有显著相关性的响应(7)。只有128步伐的响应。过去12个月已经留出作为性能指标和12个月预测网络的这些值。请参阅附加数据发现X (t)和Y (t) (https://docs.google.com/spreadsheets/d/1PU4yiEkoJ9z4635jXAOMpC2_8I0y2ylPcGUmWV-s3u8/edit?usp=sharing)。
这就是我们现在在:鉴于X1(9输入变量- 1 x116细胞),和日元(a系列作为目标1 x116),如所提供的文件,网络训练(根据我的观察,网络提供了更好的结果与贝叶斯学习算法' trainbr ']。令人满意的模型已经训练/培训后,我们试图修改的值Xc, Xic,但没有混乱与Aic和运行以下的命令栏:
ycforecast1 = netc (Xc、Xic Aic)
X = X1;
T = y₁;
trainFcn =“trainlm”;
inputDelays = 1:2;
feedbackDelays = 1:2;
hiddenLayerSize = 10;
网= narxnet (inputDelays feedbackDelays hiddenLayerSize,“开放”,trainFcn);
[x, xi,人工智能,t] = preparets(净,x, {}, t);
net.divideParam。trainRatio = 70/100;net.divideParam。valRatio = 15/100;net.divideParam。testRatio = 15/100;(净,tr) =火车(净,x, t, xi, ai);净(y = x, xi, ai);e = gsubtract (t、y);性能=执行(净、t、y)视图(净)netc = closeloop(净); netc.name = [net.name ' - Closed Loop']; view(netc) [xc,xic,aic,tc] = preparets(netc,X,{},T); yc = netc(xc,xic,aic); closedLoopPerformance = perform(net,tc,yc) nets = removedelay(net); nets.name = [net.name ' - Predict One Step Ahead']; view(nets) [xs,xis,ais,ts] = preparets(nets,X,{},T); ys = nets(xs,xis,ais); TS = size(ts,2); plot(1:TS,cell2mat(ts),'b',1:TS,cell2mat(ys),'r') stepAheadPerformance = perform(nets,ts,ys)
Xic的值被设置为1 x2细胞(115和116的值9变量X (t)和Xc的值设置为1 x12细胞由过去12个月X (t)的最初我们预留。
经过我所提到的,ycforecast1 12值返回给我们解释为给定的训练网络的预测过去12 X (t)的年代我们喂它,然而,似乎很值了,我甚至不考虑计算模型的日军的预测。有什么建议吗?
接受的答案
顾磊杰(Rajat Kathuria
2017年1月5日
编辑:顾磊杰(Rajat Kathuria
2017年1月5日
尽管如此,它仍然是不清楚你打算从你的脚本实现,我假定你想预测时间序列(T)没有一个外生变量(X)。在这种情况下,你不需要使用narnet和narXnet。下面的脚本(从原始脚本)会给你一步预测变量y
u1 = num2cell (1:90);
feedbackDelays = 1:2;
hiddenLayerSize = 10;
网= narnet (feedbackDelays hiddenLayerSize);%注意,我使用narnet(不是narXnet)
[X, Xi,人工智能,T] = preparets(网,{},{},u1);
(净,tr) =火车(净,X, T, Xi, Ai);
%的预测
网= removedelay(净);
X2 = num2cell (120:128);%输入系列的长度是9
[x,切除酶,ais, ts) = preparets(网,{},{},X2);
切除酶,y =网(xs ais)
%注意,因为有两个预测变量(“feedbackDelays”), % 8对应的预测将会有一个输入一系列长度9。%。第一次输入,120年和121年收益率第一输出,~ 122。最后输入输出129 ~ 127年和128年收益率最终%。结果可能略取决于你的训练,但网络似乎%学到这个简单的线性趋势。