Skip to content

Commit 06ddd62

Browse files
committed
Minor modifications.
1 parent 9086555 commit 06ddd62

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

demo.m

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
clc
33

44
rng(100);
5-
num_reps = 2;
5+
num_reps = 10;
66
Models = cell(num_reps,1);
77
Xpredictall = cell(num_reps,1);
88
Err = zeros(num_reps,1);
@@ -29,5 +29,7 @@
2929
for ii = 1:num_reps
3030
Xpredictall{ii} = Models{ii}.predict(Xtrainall{ii},...
3131
size(Xtestall{ii},2), opts);
32-
Err(ii) = sum(sum((Xpredictall{ii}-Xtestall{ii}).^2));
32+
Err(ii) = sum(sum((Xpredictall{ii}-Xtestall{ii}).^2))/size(Xtestall{ii},2);
3333
end
34+
35+
Err

genARMA.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
DEFAULTS.tau = 0.5; % noise level of MA component
99
DEFAULTS.num_reps = 1; % number of time series generated
1010
DEFAULTS.num_trainsamples = 100; % number of training points
11-
DEFAULTS.num_testsamples = 100; % number of test points
11+
DEFAULTS.num_testsamples = 10; % number of test points
1212

1313
if nargin < 1
1414
opts = DEFAULTS;

rarma.m

+9-7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFAULT PARAMETERS STARTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2424
DEFAULTS.optimizer = @(lossfcn, xinit)(RarmaSolvers.fmin_LBFGS(lossfcn, xinit, struct('maxiter', 1000)));
25+
%options = optimoptions(@fminunc,'GradObj','on')
26+
%DEFAULTS.optimizer = @(lossfcn, xinit)(fminunc(lossfcn, xinit, options));
2527
DEFAULTS.ardim = 5;
2628
DEFAULTS.init_stepsize = 10;
2729
DEFAULTS.Loss = @RarmaFcns.euclidean_rarma;
@@ -77,9 +79,9 @@
7779
function [model,obj] = solve_ar()
7880
%% SOLVE_AR
7981
% Solve only for A, since q = 0
80-
[A, obj, iter, msg] = RarmaSolvers.lbfgs(@(Avec)(objA(Avec, X, [])), Ainit(:), opts.ar_params);
82+
[A, obj, iter, msg] = opts.optimizer(@(Avec)(objA(Avec, X, [])), Ainit(:));
8183
model.A = reshape(A, sizeA);
82-
model.predict = @(Xstart, Phistart, horizon, opts)(RarmaFcns.iterate_predict_ar(Xstart, model, horizon, opts));
84+
model.predict = @(Xstart, horizon, opts)(RarmaFcns.iterate_predict_ar(Xstart, model, horizon, opts));
8385
end
8486

8587
function [model,obj] = solve_ma()
@@ -88,22 +90,22 @@
8890
% Note: the code is currently not well-designed to do long-horizon prediction
8991
% with only a moving average models, since future moving average
9092
% components are not imputed; should work, however, for 1-step prediction
91-
[Z, obj, iter, msg] = RarmaSolvers.lbfgs(@(Zvec)(objZ(Zvec, zeros(sizeA))), zeros(sizeZ), opts.ar_params);
93+
[Z, obj, iter, msg] = opts.optimizer(@(Zvec)(objZ(Zvec, zeros(sizeA))), zeros(sizeZ));
9294
model.Z = reshape(Z, sizeZ);
9395
model.A = zeros(sizeA);
9496
if opts.recover == 1
9597
[model.B, model.Epsilon] = recoverModels(Z);
9698
end
97-
model.predict = @(Xstart, Phistart, horizon, opts)(RarmaFcns.iterate_predict(Xstart, model, horizon, opts));
99+
model.predict = @(Xstart, horizon, ...
100+
opts)(RarmaFcns.iterate_predict(Xstart, [], model, horizon, opts));
98101
end
99102

100103

101104
function [model,obj] = solve_rarma()
102105
%% SOLVE_RARMA
103106
% Solve for A first (with Z = 0), then iterate between Z and A
104107
Z = zeros(sizeZ);
105-
[A, obj, iter, msg] =...
106-
RarmaSolvers.fmin_LBFGS(@(Avec)(objA(Avec, X, Z)), Ainit(:));
108+
[A, obj, iter, msg] =opts.optimizer(@(Avec)(objA(Avec, X, Z)), Ainit(:));
107109
A = reshape(A, sizeA);
108110
[Z, prev_obj] = iterateZ(Z,A);
109111

@@ -170,7 +172,7 @@
170172
f = f + opts.reg_wgt_ar*f2;
171173
end
172174

173-
% Need to linearize for LBFGS
175+
% Need to linearize for LBFGS or fminunc
174176
function [f,g] = objZ(Zin, A)
175177
%% OBJZ Zin can either be a vector or matrix
176178
% the gradient is returned to be of the same size

0 commit comments

Comments
 (0)