dynDate -> dates in dynSeries.

time-shift
Stéphane Adjemian (Charybdis) 2013-10-16 16:16:26 +02:00
parent 529a94e329
commit 66143e4749
6 changed files with 49 additions and 61 deletions

View File

@ -113,7 +113,7 @@ a.time = a.init:a.init+(a.nobs-1);
%$
%$ if t(1)
%$ t(2) = dyn_assert(ts1.nobs,ts2.nobs);
%$ t(3) = dyn_assert(ts1.init==ts2.init,1);
%$ t(3) = dyn_assert(isequal(ts1.init,ts2.init),1);
%$ t(4) = dyn_assert(ts1.data,[NaN(3,3); A], 1e-15);
%$ t(5) = dyn_assert(ts2.data,[B; NaN(4,2)], 1e-15);
%$ end
@ -145,7 +145,7 @@ a.time = a.init:a.init+(a.nobs-1);
%$
%$ if t(1)
%$ t(2) = dyn_assert(ts1.nobs,ts2.nobs);
%$ t(3) = dyn_assert(ts1.init==ts2.init,1);
%$ t(3) = dyn_assert(isequal(ts1.init,ts2.init),1);
%$ t(4) = dyn_assert(ts1.data,A, 1e-15);
%$ t(5) = dyn_assert(ts2.data,[B; NaN(1,2)], 1e-15);
%$ end
@ -177,7 +177,7 @@ a.time = a.init:a.init+(a.nobs-1);
%$
%$ if t(1)
%$ t(2) = dyn_assert(ts1.nobs,ts2.nobs);
%$ t(3) = dyn_assert(ts1.init==ts2.init,1);
%$ t(3) = dyn_assert(isequal(ts1.init,ts2.init),1);
%$ t(4) = dyn_assert(ts1.data,A, 1e-15);
%$ t(5) = dyn_assert(ts2.data,[B; NaN(1,2)], 1e-15);
%$ end

View File

@ -77,7 +77,7 @@ if ~isequal(numel(unique(A.tex)),numel(A.tex));
return
end
if ~eq(A.time,A.init:A.init+A.nobs)
if ~isequal(A.time,A.init:A.init+A.nobs)
error_flag = 1;
if nargout>1
message = ['dynSeries: Wrong definition of the time member in dynSeries object ''' inputname(1) '''!']:

View File

@ -36,7 +36,7 @@ switch format
fprintf(fid,'%% File created on %s.\n',datestr(now));
fprintf(fid,'\n');
fprintf(fid,'FREQ__ = %s;\n',num2str(A.freq));
fprintf(fid,'INIT__ = '' %s'';\n',A.init.format);
fprintf(fid,'INIT__ = '' %s'';\n',date2string(A.init));
fprintf(fid,'\n');
fprintf(fid,'NAMES__ = {');
for i=1:A.vobs
@ -62,7 +62,7 @@ switch format
fclose(fid);
case 'mat'
FREQ__ = A.freq;
INIT__ = A.init.format;
INIT__ = date2string(A.init);
NAMES__ = A.name;
TEX__ = A.tex;
str = [];
@ -84,7 +84,7 @@ switch format
for t=1:A.nobs
date = A.init+(t-1);
str = sprintf(', %15.8g',A.data(t,:));
fprintf(fid, '%s%s\n',date.format,str);
fprintf(fid, '%s%s\n',date2string(date),str);
end
fclose(fid);
end

View File

@ -98,7 +98,7 @@ switch length(S)
end
end
case '.'
if isequal(S(1).subs,'init') && isa(B,'dynDate')
if isequal(S(1).subs,'init') && isa(B,'dates') && isequal(length(B),1)
% Overwrite the init member...
A.init = B;
% ... and update freq and time members.
@ -131,7 +131,7 @@ switch length(S)
end
end
case '()' % Date(s) selection
if isa(S(1).subs{1},'dates') || isa(S(1).subs{1},'dynDate')
if isa(S(1).subs{1},'dates')
[junk, tdx] = intersect(A.time.time,S(1).subs{1}.time,'rows');
if isa(B,'dynSeries')
[junk, tdy] = intersect(B.time.time,S(1).subs{1}.time,'rows');
@ -172,7 +172,7 @@ switch length(S)
sA = extract(A,S(1).subs);
end
if (isa(B,'dynSeries') && isequal(sA.vobs,B.vobs)) || (isnumeric(B) && isequal(sA.vobs,columns(B))) || (isnumeric(B) && isequal(columns(B),1))
if isa(S(2).subs{1},'dates') || isa(S(2).subs{1},'dynDate')
if isa(S(2).subs{1},'dates')
[junk, tdx] = intersect(sA.time.time,S(2).subs{1}.time,'rows');
if isa(B,'dynSeries')
[junk, tdy] = intersect(B.time.time,S(2).subs{1}.time,'rows');
@ -504,8 +504,8 @@ end
%$
%$ % modify first object.
%$ try
%$ d1 = dynDate('1950Q3');
%$ d2 = dynDate('1951Q3');
%$ d1 = dates('1950Q3');
%$ d2 = dates('1951Q3');
%$ rg = d1:d2;
%$ ts1{'A1'}(rg) = ts2{'B1'}(rg);
%$ t(1) = 1;
@ -535,8 +535,8 @@ end
%$
%$ % modify first object.
%$ try
%$ d1 = dynDate('1950Q3');
%$ d2 = dynDate('1951Q3');
%$ d1 = dates('1950Q3');
%$ d2 = dates('1951Q3');
%$ rg = d1:d2;
%$ ts1{'A1'}(rg) = B(3:7);
%$ t(1) = 1;
@ -566,8 +566,8 @@ end
%$
%$ % modify first object.
%$ try
%$ d1 = dynDate('1950Q3');
%$ d2 = dynDate('1951Q3');
%$ d1 = dates('1950Q3');
%$ d2 = dates('1951Q3');
%$ rg = d1:d2;
%$ ts1.A1(rg) = B(3:7);
%$ t(1) = 1;
@ -597,8 +597,8 @@ end
%$
%$ % modify first object.
%$ try
%$ d1 = dynDate('1950Q3');
%$ d2 = dynDate('1951Q3');
%$ d1 = dates('1950Q3');
%$ d2 = dates('1951Q3');
%$ rg = d1:d2;
%$ ts1.A1(rg) = sqrt(pi);
%$ t(1) = 1;
@ -628,8 +628,8 @@ end
%$
%$ % modify first object.
%$ try
%$ d1 = dynDate('1950Q3');
%$ d2 = dynDate('1951Q3');
%$ d1 = dates('1950Q3');
%$ d2 = dates('1951Q3');
%$ rg = d1:d2;
%$ ts1{'A1','A2'}(rg) = sqrt(pi);
%$ t(1) = 1;
@ -659,8 +659,8 @@ end
%$
%$ % modify first object.
%$ try
%$ d1 = dynDate('1950Q3');
%$ d2 = dynDate('1951Q3');
%$ d1 = dates('1950Q3');
%$ d2 = dates('1951Q3');
%$ rg = d1:d2;
%$ ts1{'A1','A2'}(rg) = [sqrt(pi), pi];
%$ t(1) = 1;
@ -690,8 +690,8 @@ end
%$
%$ % modify first object.
%$ try
%$ d1 = dynDate('1950Q3');
%$ d2 = dynDate('1951Q3');
%$ d1 = dates('1950Q3');
%$ d2 = dates('1951Q3');
%$ rg = d1:d2;
%$ ts1{'A1','A2'}(rg) = ones(5,1);
%$ t(1) = 1;
@ -718,8 +718,8 @@ end
%$ % Instantiate two dynSeries object.
%$ ts1 = dynSeries(A,'1950Q1',{'A1';'A2';'A3'},[]);
%$
%$ % Instantiate a dynDate object.
%$ dd = dynDate('1952Q1');
%$ % Instantiate a dates object.
%$ dd = dates('1952Q1');
%$
%$ % modify first object.
%$ try
@ -750,8 +750,8 @@ end
%$ % Instantiate two dynSeries object.
%$ ts1 = dynSeries(A,'1950Q1',{'A1';'A2';'A3'},[]);
%$
%$ % Instantiate a dynDate object.
%$ dd = dynDate('1952Q1');
%$ % Instantiate a dates object.
%$ dd = dates('1952Q1');
%$
%$ % modify first object.
%$ try

View File

@ -199,7 +199,7 @@ switch S(1).type
elseif isvector(S(1).subs{1}) && all(isint(S(1).subs{1}))
% Extract a subsample using a vector of integers (observation index).
% Note that this does not work if S(1).subs is an integer scalar... In which case S(1).subs is interpreted as a lead/lag operator (as in the Dynare syntax).
% To extract one observation, a dates with one element or a dynDate input must be used.
% To extract one observation, a dates with one element input must be used.
if all(S(1).subs{1}>0) && all(S(1).subs{1}<=A.nobs)
if size(A.data,2)>1
S(1).subs = [S(1).subs, ':'];
@ -215,18 +215,6 @@ switch S(1).type
else
error('dynSeries::subsref: Indices are out of bounds!')
end
elseif isa(S(1).subs{1},'dynDate')
% Extract a subsample using a dates object
[junk,tdx] = intersect(A.time.time,S(1).subs{1}.time,'rows');
B = dynSeries();
B.data = A.data(tdx,:);
B.name = A.name;
B.tex = A.tex;
B.nobs = 1;
B.vobs = A.vobs;
B.freq = A.freq;
B.init = A.time(tdx,:);
B.time = A.time(tdx,:);
else
error('dynSeries::subsref: I have no idea of what you are trying to do!')
end
@ -278,14 +266,14 @@ end
%$ e.vobs = 2;
%$ e.name = {'A1';'A2'};
%$ e.freq = 1;
%$ e.init = dynDate(2);
%$ e.init = dates(1,2);
%$
%$ % Check the results.
%$ t(1) = dyn_assert(a.data,e.data);
%$ t(2) = dyn_assert(a.nobs,e.nobs);
%$ t(3) = dyn_assert(a.vobs,e.vobs);
%$ t(4) = dyn_assert(a.freq,e.freq);
%$ t(5) = dyn_assert(a.init,e.init);
%$ t(5) = dyn_assert(isequal(a.init,e.init),1);
%$ T = all(t);
%@eof:1
@ -308,11 +296,11 @@ end
%$ e.vobs = 1;
%$ e.name = {'A1'};
%$ e.freq = 1;
%$ e.init = dynDate(1);
%$ e.init = dates(1,1);
%$
%$ % Check the results.
%$ t(1) = dyn_assert(a.data,e.data);
%$ t(2) = dyn_assert(a.init,e.init);
%$ t(2) = dyn_assert(isequal(a.init,e.init),1);
%$ t(3) = dyn_assert(a.nobs,e.nobs);
%$ t(4) = dyn_assert(a.vobs,e.vobs);
%$ t(5) = dyn_assert(a.freq,e.freq);
@ -338,14 +326,14 @@ end
%$ e.vobs = 2;
%$ e.name = {'A1';'A2'};
%$ e.freq = 1;
%$ e.init = dynDate(1);
%$ e.init = dates(1,1);
%$
%$ % Check the results.
%$ t(1) = dyn_assert(a.data,e.data);
%$ t(2) = dyn_assert(a.nobs,e.nobs);
%$ t(3) = dyn_assert(a.vobs,e.vobs);
%$ t(4) = dyn_assert(a.freq,e.freq);
%$ t(5) = dyn_assert(a.init,e.init);
%$ t(5) = dyn_assert(isequal(a.init,e.init),1);
%$ T = all(t);
%@eof:3
@ -367,7 +355,7 @@ end
%$ t(2) = dyn_assert(A.nobs,4);
%$ t(3) = dyn_assert(A.vobs,4);
%$ t(4) = dyn_assert(A.freq,4);
%$ t(5) = dyn_assert(A.init,dynDate('1990Q1'));
%$ t(5) = dyn_assert(isequal(A.init,dates('1990Q1')),1);
%$ end
%$ T = all(t);
%@eof:4
@ -391,13 +379,13 @@ end
%$ e.vobs = 2;
%$ e.name = {'A1';'B1'};
%$ e.freq = 1;
%$ e.init = dynDate(1);
%$ e.init = dates(1,1);
%$
%$ t(1) = dyn_assert(e.data,a.data);
%$ t(2) = dyn_assert(e.nobs,a.nobs);
%$ t(3) = dyn_assert(e.vobs,a.vobs);
%$ t(4) = dyn_assert(e.name,a.name);
%$ t(5) = dyn_assert(e.init,a.init);
%$ t(5) = dyn_assert(isequal(e.init,a.init),1);
%$ T = all(t);
%@eof:5
@ -421,25 +409,25 @@ end
%$ e1.vobs = 12;
%$ e1.name = {'GDP_1';'GDP_2';'GDP_3'; 'GDP_4'; 'GDP_5'; 'GDP_6'; 'GDP_7'; 'GDP_8'; 'GDP_9'; 'GDP_10'; 'GDP_11'; 'GDP_12'};
%$ e1.freq = 1;
%$ e1.init = dynDate(1);
%$ e1.init = dates(1,1);
%$ e2.data = A(:,[1, 13]);
%$ e2.nobs = 10;
%$ e2.vobs = 2;
%$ e2.name = {'GDP_1';'HICP_1'};
%$ e2.freq = 1;
%$ e2.init = dynDate(1);
%$ e2.init = dates(1,1);
%$
%$ % Check results.
%$ t(1) = dyn_assert(e1.data,a.data);
%$ t(2) = dyn_assert(e1.nobs,a.nobs);
%$ t(3) = dyn_assert(e1.vobs,a.vobs);
%$ t(4) = dyn_assert(e1.name,a.name);
%$ t(5) = dyn_assert(e1.init,a.init);
%$ t(5) = dyn_assert(isequal(e1.init,a.init),1);
%$ t(6) = dyn_assert(e2.data,b.data);
%$ t(7) = dyn_assert(e2.nobs,b.nobs);
%$ t(8) = dyn_assert(e2.vobs,b.vobs);
%$ t(9) = dyn_assert(e2.name,b.name);
%$ t(10) = dyn_assert(e2.init,b.init);
%$ t(10) = dyn_assert(isequal(e2.init,b.init),1);
%$ T = all(t);
%@eof:6
@ -492,7 +480,7 @@ end
%$ ts1 = dynSeries(A,'1971Q1',A_name,[]);
%$
%$ % Define the range of a subsample.
%$ range = dynDate('1971Q2'):dynDate('1971Q4');
%$ range = dates('1971Q2'):dates('1971Q4');
%$ % Call the tested method.
%$ a = ts1(range);
%$
@ -502,13 +490,13 @@ end
%$ e.vobs = 3;
%$ e.name = {'A1';'A2';'B1'};
%$ e.freq = 4;
%$ e.init = dynDate('1971Q2');
%$ e.init = dates('1971Q2');
%$
%$ t(1) = dyn_assert(e.data,a.data);
%$ t(2) = dyn_assert(e.nobs,a.nobs);
%$ t(3) = dyn_assert(e.vobs,a.vobs);
%$ t(4) = dyn_assert(e.name,a.name);
%$ t(5) = dyn_assert(e.init,a.init);
%$ t(5) = dyn_assert(isequal(e.init,a.init),1);
%$ T = all(t);
%@eof:9

View File

@ -86,7 +86,7 @@ end
%$ B_name = {'A1';'A2'};
%$
%$ % Define expected results.
%$ e.time = dynDate(1);
%$ e.time = dates(1,1);
%$ e.freq = 1;
%$ e.name = {'A1';'A2'};
%$ e.data = [A;B];
@ -100,7 +100,7 @@ end
%$
%$ % Check the results.
%$
%$ t(1) = dyn_assert(ts3.init,e.time);
%$ t(1) = dyn_assert(isequal(ts3.init,e.time),1);
%$ t(2) = dyn_assert(ts3.freq,e.freq);
%$ t(3) = dyn_assert(ts3.data,e.data);
%$ t(4) = dyn_assert(ts3.name,e.name);
@ -121,7 +121,7 @@ end
%$ C_name = {'A1';'A2'};
%$
%$ % Define expected results.
%$ e.time = dynDate(1);
%$ e.time = dates(1,1);
%$ e.freq = 1;
%$ e.name = {'A1';'A2'};
%$ e.data = [A;B;C];
@ -136,7 +136,7 @@ end
%$
%$ % Check the results.
%$
%$ t(1) = dyn_assert(ts4.init,e.time);
%$ t(1) = dyn_assert(isequal(ts4.init,e.time),1);
%$ t(2) = dyn_assert(ts4.freq,e.freq);
%$ t(3) = dyn_assert(ts4.data,e.data);
%$ t(4) = dyn_assert(ts4.name,e.name);