6. Time Series¶
Dynare provides a Matlab/Octave class for handling time series data, which is based on a class for handling dates. Dynare also provides a new type for dates, so that the basic user does not have to worry about class and methods for dates. Below, you will first find the class and methods used for creating and dealing with dates and then the class used for using time series.
6.1. Dates¶
6.1.1. Dates in a mod file¶
Dynare understands dates in a mod file. Users can declare annual, quarterly, monthly or weekly dates using the following syntax:
1990Y
1990Q3
1990M11
1990W49
Behind the scene, Dynare’s preprocessor translates these expressions
into instantiations of the Matlab/Octave’s class dates
described
below. Basic operations can be performed on dates:
plus binary operator (+)
An integer scalar, interpreted as a number of periods, can be added to a date. For instance, ifa = 1950Q1
thenb = 1951Q2
andb = a + 5
are identical.
plus unary operator (+)
Increments a date by one period.+1950Q1
is identical to1950Q2
,++++1950Q1
is identical to1951Q1
.
minus binary operator ()
Has two functions: difference and subtraction. If the second argument is a date, calculates the difference between the first date and the secmond date (e.g.1951Q21950Q1
is equal to5
). If the second argument is an integerX
, subtractsX
periods from the date (e.g.1951Q22
is equal to1950Q4
).
minus unary operator ()
Subtracts one period to a date.1950Q1
is identical to1949Q4
. The unary minus operator is the reciprocal of the unary plus operator,+1950Q1
is identical to1950Q1
.
colon operator (:)
Can be used to create a range of dates. For instance,r = 1950Q1:1951Q1
creates adates
object with five elements:1950Q1, 1950Q2, 1950Q3, 1950Q4
and1951Q1
. By default the increment between each element is one period. This default can be changed using, for instance, the following instruction:1950Q1:2:1951Q1
which will instantiate adates
object with three elements:1950Q1
,1950Q3
and1951Q1
.
horzcat operator ([,])
Concatenates dates objects without removing repetitions. For instance[1950Q1, 1950Q2]
is a adates
object with two elements (1950Q1
and1950Q2
).
vertcat operator ([;])
Same ashorzcat
operator.
eq operator (equal, ==)
Tests if twodates
objects are equal.+1950Q1==1950Q2
returns1
,1950Q1==1950Q2
returns0
. If the compared objects have bothn>1
elements, theeq
operator returns a column vector,n
by1
, of zeros and ones.
ne operator (not equal, ~=)
Tests if twodates
objects are not equal.+1950Q1~=
returns0
while1950Q1~=1950Q2
returns1
. If the compared objects both haven>1
elements, thene
operator returns ann
by1
column vector of zeros and ones.
lt operator (less than, <)
Tests if adates
object preceeds anotherdates
object. For instance,1950Q1<1950Q3
returns1
. If the compared objects have bothn>1
elements, thelt
operator returns a column vector,n
by1
, of zeros and ones.
gt operator (greater than, >)
Tests if adates
object follows anotherdates
object. For instance,1950Q1>1950Q3
returns0
. If the compared objects have bothn>1
elements, thegt
operator returns a column vector,n
by1
, of zeros and ones.
le operator (less or equal, <=)
Tests if adates
object preceeds anotherdates
object or is equal to this object. For instance,1950Q1<=1950Q3
returns1
. If the compared objects have bothn>1
elements, thele
operator returns a column vector,n
by1
, of zeros and ones.
ge operator (greater or equal, >=)
Tests if adates
object follows anotherdates
object or is equal to this object. For instance,1950Q1>=1950Q3
returns0
. If the compared objects have bothn>1
elements, thege
operator returns a column vector,n
by1
, of zeros and ones.
One can select an element, or some elements, in a dates
object as
he would extract some elements from a vector in Matlab/Octave. Let a
= 1950Q1:1951Q1
be a dates
object, then a(1)==1950Q1
returns
1
, a(end)==1951Q1
returns 1
and a(end1:end)
selects
the two last elements of a
(by instantiating the dates
object
[1950Q4, 1951Q1]
).
Remark Dynare substitutes any occurrence of dates in the .mod
file
into an instantiation of the dates
class regardless of the
context. For instance, d = 1950Q1
will be translated as d =
dates('1950Q1');
. This automatic substitution can lead to a crash if
a date is defined in a string. Typically, if the user wants to display
a date:
disp('Initial period is 1950Q1');
Dynare will translate this as:
disp('Initial period is dates('1950Q1')');
which will lead to a crash because this expression is illegal in
Matlab. For this situation, Dynare provides the $
escape
parameter. The following expression:
disp('Initial period is $1950Q1');
will be translated as:
disp('Initial period is 1950Q1');
in the generated MATLAB script.
6.1.2. The dates class¶

Dynare class:
dates
Members:  freq (int) – equal to 1, 4, 12 or 52 (resp. for annual, quarterly, monthly or weekly dates).
 ndat (int) – the number of declared dates in the object.
 time (int) – a
ndat*2
array, the years are stored in the first column, the subperiods (1 for annual dates, 14 for quarterly dates, 112 for monthly dates and 152 for weekly dates) are stored in the second column.
Each member is private, one can display the content of a member but cannot change its value directly. Note that it is not possible to mix frequencies in a
dates
object: all the elements must have common frequency.The
dates
class has the following constructors:
Constructor:
dates
()

Constructor:
dates
(FREQ)
Returns an emptydates
object with a given frequency (if the constructor is called with one input argument).FREQ
is a character equal to ’Y’ or ’A’ for annual dates, ’Q’ for quarterly dates, ’M’ for monthly dates or ’W’ for weekly dates. Note thatFREQ
is not case sensitive, so that, for instance, ’q’ is also allowed for quarterly dates. The frequency can also be set with an integer scalar equal to 1 (annual), 4 (quarterly), 12 (monthly) or 52 (weekly). The instantiation of empty objects can be used to rename thedates
class. For instance, if one only works with quarterly dates, objectqq
can be created as:qq = dates('Q')
and a
dates
object holding the date2009Q2
:d0 = qq(2009,2);
which is much simpler if
dates
objects have to be defined programmatically.

Constructor:
dates
(STRING)

Constructor:
dates
(STRING, STRING, ...)
Returns adates
object that represents a date as given by the stringSTRING
. This string has to be interpretable as a date (only strings of the following forms are admitted:'1990Y'
,'1990A'
,'1990Q1'
,'1990M2'
,'1990W5'
), the routineisdate
can be used to test if a string is interpretable as a date. If more than one argument is provided, they should all be dates represented as strings, the resultingdates
object contains as many elements as arguments to the constructor.

Constructor:
dates
(DATES)

Constructor:
dates
(DATES, DATES, ...)
Returns a copy of thedates
objectDATES
passed as input arguments. If more than one argument is provided, they should all bedates
objects. The number of elements in the instantiateddates
object is equal to the sum of the elements in thedates
passed as arguments to the constructor.

Constructor:
dates
(FREQ, YEAR, SUBPERIOD)
whereFREQ
is a single character (’Y’, ’A’, ’Q’, ’M’, ’W’) or integer (1, 4, 12 or 52) specifying the frequency,YEAR
andSUBPERIOD
aren*1
vectors of integers. Returns adates
object withn
elements. IfFREQ
is equal to'Y'
,'A'
or1
, the third argument is not needed (becauseSUBPERIOD
is necessarily a vector of ones in this case).
Example
do1 = dates('1950Q1'); do2 = dates('1950Q2','1950Q3'); do3 = dates(do1,do2); do4 = dates('Q',1950, 1);
A list of the available methods, by alphabetical order, is given below. Note that the Matlab/Octave classes do not allow in place modifications: when a method is applied to an object a new object is instantiated. For instance, to apply the method
multiplybytwo
to an objectX
we write:Y = X.multiplybytwo()
or equivalently:
Y = multiplybytwo(X)
the object
X
is left unchanged, and the objectY
is a modified copy ofX
.
Method:
C = append
(A, B)
¶
Appendsdates
objectB
, or a string that can be interpreted as a date, to thedates
objectA
. IfB
is adates
object it is assumed that it has no more than one element.Example
>> D = dates('1950Q1','1950Q2'); >> d = dates('1950Q3'); >> E = D.append(d); >> F = D.append('1950Q3') >> isequal(E,F) ans = 1 >> F F = <dates: 1950Q1, 1950Q2, 1950Q3>

Method:
C = colon
(A, B)
¶ 
Method:
C = colon
(A, i, B)
Overloads the Matlab/Octave colon (:
) operator. A and B aredates
objects. The optional incrementi
is a scalar integer (default value isi=1
). This method returns adates
object and can be used to create ranges of dates.Example
>> A = dates('1950Q1'); >> B = dates('1951Q2'); >> C = A:B C = <dates: 1950Q1, 1950Q2, 1950Q3, 1950Q4, 1951Q1> >> D = A:2:B D = <dates: 1950Q1, 1950Q3, 1951Q1>

Method:
B = double
(A)
¶
Overloads the Matlab/Octavedouble
function.A
is adates
object. The method returns a floating point representation of adates
object, the integer and fractional parts respectively corresponding to the year and the subperiod. The fractional part is the subperiod number minus one divided by the frequency (1
,4
,12
or52
).Example:
>> a = dates('1950Q1'):dates('1950Q4'); >> a.double() ans = 1950.00 1950.25 1950.50 1950.75

Method:
C = eq
(A, B)
¶
Overloads the Matlab/Octaveeq
(equal,==
) operator.dates
objectsA
andB
must have the same number of elements (say,n
). The returned argument is an
by1
vector of zeros and ones. The ith element ofC
is equal to1
if and only if the datesA(i)
andB(i)
are the same.Example
>> A = dates('1950Q1','1951Q2'); >> B = dates('1950Q1','1950Q2'); >> A==B ans = 1 0

Method:
C = ge
(A, B)
¶
Overloads the Matlab/Octavege
(greater or equal,>=
) operator.dates
objectsA
andB
must have the same number of elements (say,n
). The returned argument is an
by1
vector of zeros and ones. The ith element ofC
is equal to1
if and only if the dateA(i)
is posterior or equal to the dateB(i)
.Example
>> A = dates('1950Q1','1951Q2'); >> B = dates('1950Q1','1950Q2'); >> A>=B ans = 1 1

Method:
C = gt
(A, B)
¶
Overloads the Matlab/Octavegt
(greater than,>
) operator.dates
objectsA
andB
must have the same number of elements (say,n
). The returned argument is an
by1
vector of zeros and ones. The ith element ofC
is equal to1
if and only if the dateA(i)
is posterior to the dateB(i)
.Example
>> A = dates('1950Q1','1951Q2'); >> B = dates('1950Q1','1950Q2'); >> A>B ans = 0 1

Method:
D = horzcat
(A, B, C, ...)
¶
Overloads the Matlab/Octavehorzcat
operator. All the input arguments must bedates
objects. The returned argument is adates
object gathering all the dates given in the input arguments (repetitions are not removed).Example
>> A = dates('1950Q1'); >> B = dates('1950Q2'); >> C = [A, B]; >> C C = <dates: 1950Q1, 1950Q2>

Method:
C = intersect
(A, B)
¶
Overloads the Matlab/Octaveintersect
function. All the input arguments must bedates
objects. The returned argument is adates
object gathering all the common dates given in the input arguments. IfA
andB
are disjointdates
objects, the function returns an emptydates
object. Returned dates indates
objectC
are sorted by increasing order.Example
>> A = dates('1950Q1'):dates('1951Q4'); >> B = dates('1951Q1'):dates('1951Q4'); >> C = intersect(A, B); >> C C = <dates: 1951Q1, 1951Q2, 1951Q3, 1951Q4>

Method:
C = setdiff
(A, B)
¶
Overloads the Matlab/Octavesetdiff
function. All the input arguments must bedates
objects. The returned argument is adates
object all dates present inA
but not inB
. IfA
andB
are disjointdates
objects, the function returnsA
. Returned dates indates
objectC
are sorted by increasing order.Example
>> A = dates('1950Q1'):dates('1969Q4') ; >> B = dates('1960Q1'):dates('1969Q4') ; >> C = dates('1970Q1'):dates('1979Q4') ; >> d1 = setdiff(d1,d2); >> d2 = setdiff(d1,d3); d1 = <dates: 1950Q1, 1950Q2, ..., 1959Q3, 1959Q4> d2 = <dates: 1950Q1, 1950Q2, ..., 1969Q3, 1969Q4>

Method:
B = isempty
(A)
¶
Overloads the Matlab/Octaveisempty
function fordates
objects``.Example
>> A = dates('1950Q1'):dates('1951Q4'); >> A.isempty() ans = 0

Method:
C = isequal
(A, B)
¶
Overloads the Matlab/Octaveisequal
function fordates
objects.Example
>> A = dates('1950Q1'):dates('1951Q4'); >> isequal(A,A) ans = 1

Method:
C = le
(A, B)
¶
Overloads the Matlab/Octavele
(less or equal,<=
) operator.dates
objectsA
andB
must have the same number of elements (say,n
). The returned argument is an
by1
vector of zeros and ones. The ith element ofC
is equal to1
if and only if the dateA(i)
is not posterior to the dateB(i)
.Example
>> A = dates('1950Q1','1951Q2'); >> B = dates('1950Q1','1950Q2'); >> A<=B ans = 1 0

Method:
B = length
(A)
¶
Overloads the Matlab/Octavelength
function. Returns the number of dates indates
objectA
(B
is a scalar integer).Example
>> A = dates('1950Q1','1951Q2'); >> A.length() ans = 2

Method:
C = lt
(A, B)
¶
Overloads the Matlab/Octavelt
(less than,<
) operator.dates
objectsA
andB
must have the same number of elements (say,n
). The returned argument is an
by1
vector of zeros and ones. The ith element ofC
is equal to1
if and only if the dateA(i)
preceeds the dateB(i)
.Example
>> A = dates('1950Q1','1951Q2'); >> B = dates('1950Q1','1950Q2'); >> A<B ans = 0 0

Method:
D = max
(A, B, C, ...)
¶
Overloads the Matlab/Octavemax
function. All input arguments must bedates
objects. The function returns a single elementdates
object containing the greatest date.Example
>> A = {dates('1950Q2'), dates('1953Q4','1876Q2'), dates('1794Q3')}; >> max(A{:}) ans = <dates: 1953Q4>

Method:
D = min
(A, B, C, ...)
¶
Overloads the Matlab/Octavemin
function. All input arguments must bedates
objects. The function returns a single elementdates
object containing the smallest date.Example
>> A = {dates('1950Q2'), dates('1953Q4','1876Q2'), dates('1794Q3')}; >> min(A{:}) ans = <dates: 1794Q3>

Method:
C = minus
(A, B)
¶
Overloads the Matlab/Octaveminus
operator (
). If both input arguments aredates
objects, then number of periods betweenA
andB
is returned (so thatA+C=B
). IfB
is a vector of integers, the minus operator shifts thedates
object byB
periods backward.Example
>> d1 = dates('1950Q1','1950Q2','1960Q1'); >> d2 = dates('1950Q3','1950Q4','1960Q1'); >> ee = d2d1 ee = 2 2 0 >> d1(ee) ans = <dates: 1950Q3, 1950Q4, 1960Q1>

Method:
C = ne
(A, B)
¶
Overloads the Matlab/Octavene
(not equal,~=
) operator.dates
objectsA
andB
must have the same number of elements (say,n
) or one of the inputs must be a single elementdates
object. The returned argument is an
by1
vector of zeros and ones. The ith element ofC
is equal to1
if and only if the datesA(i)
andB(i)
are different.Example
>> A = dates('1950Q1','1951Q2'); >> B = dates('1950Q1','1950Q2'); >> A~=B ans = 0 1

Method:
C = plus
(A, B)
¶
Overloads the Matlab/Octaveplus
operator (+
). If both input arguments aredates
objects, then the method combinesA
andB
without removing repetitions. IfB
is a vector of integers, theplus
operator shifts thedates
object byB
periods forward.Example: >> d1 = dates('1950Q1','1950Q2')+dates('1960Q1'); >> d2 = (dates('1950Q1','1950Q2')+2)+dates('1960Q1'); >> ee = d2d1; ee = 2 2 0 >> d1+ee ans = <dates: 1950Q3, 1950Q4, 1960Q1>

Method:
C = pop
(A)
¶ 
Method:
C = pop
(A,B)
Pop method fordates
class. If only one input is provided, the method removes the last element of adates
object. If a second input argument is provided, a scalar integer between1
andA.length()
, the method removes element numberB
fromdates
objectA
.Example
>> d1 = dates('1950Q1','1950Q2'); >> d1.pop() ans = <dates: 1950Q1> >> d1.pop(1) ans = <dates: 1950Q2>

Method:
B = sort
(A)
¶
Sort method fordates
objects. Returns adates
object with elements sorted by increasing order.Example
>> dd = dates('1945Q3','1938Q4','1789Q3'); >> dd.sort() ans = <dates: 1789Q3, 1938Q4, 1945Q3>

Method:
B = uminus
(A)
¶
Overloads the Matlab/Octave unary minus operator. Returns adates
object with elements shifted one period backward.Example
>> dd = dates('1945Q3','1938Q4','1973Q1'); >> dd ans = <dates: 1945Q2, 1938Q3, 1972Q4>

Method:
D = union
(A, B, C, ...)
¶
Overloads the Matlab/Octaveunion
function. Returns adates
object with elements sorted by increasing order (repetitions are removed, to keep the repetitions use thehorzcat
orplus
operators).Example
>> d1 = dates('1945Q3','1973Q1','1938Q4'); >> d2 = dates('1973Q1','1976Q1'); >> union(d1,d2) ans = <dates: 1938Q4, 1945Q3, 1973Q1, 1976Q1>

Method:
B = unique
(A)
¶
Overloads the Matlab/Octaveunique
function. Returns adates
object with repetitions removed (only the last occurence of a date is kept).Example
>> d1 = dates('1945Q3','1973Q1','1945Q3'); >> d1.unique() ans = <dates: 1973Q1, 1945Q3>

Method:
B = uplus
(A)
¶
Overloads the Matlab/Octave unary plus operator. Returns adates
object with elements shifted one period ahead.Example
>> dd = dates('1945Q3','1938Q4','1973Q1'); >> +dd ans = <dates: 1945Q4, 1939Q1, 1973Q2>
6.2. The dseries class¶

Dynare class:
dseries
¶
The Matlab/Octavedseries
class handles time series data. As any Matlab/Octave statements, this class can be used in a Dynare’s mod file. Adseries
object has eight members:Members:  name – A
nobs*1
cell of strings or anobs*p
character array, the names of the variables.  tex – A
nobs*1
cell of strings or anobs*p
character array, the tex names of the variables.  dates (dates) – An object with
nobs
elements, the dates of the sample.  data (double) – A
nobs
byvobs
array, the data.
data
,name
,tex
are private members. The following constructors are available:
Constructor:
dseries
()

Constructor:
dseries
(INITIAL_DATE)
Instantiates an emptydseries
object, with, if defined, an initial date given by the single elementdates
object INITIAL_DATE.

Constructor:
dseries
(FILENAME[, INITIAL_DATE])
Instantiates and populates adseries
object with a data file specified by FILENAME, a string passed as input. Valid file types are.m
,.mat
,.csv
and.xls/.xlsx
(Octave only supports.xlsx
files and the io package from OctaveForge must be installed). A typical.m
file will have the following form:INIT__ = '1994Q3'; NAMES__ = {'azert';'yuiop'}; TEX__ = {'azert';'yuiop'}; azert = randn(100,1); yuiop = randn(100,1);
If a
.mat
file is used instead, it should provide the same informations. Note that theINIT__
variable can be either adates
object or a string which could be used to instantiate the samedates
object. IfINIT__
is not provided in the.mat
or.m
file, the initial is by default set equal todates('1Y')
. If a second input argument is passed to the constructor,dates
object INITIAL_DATE, the initial date defined in FILENAME is reset to INITIAL_DATE. This is typically usefull ifINIT__
is not provided in the data file.

Constructor:
dseries
(DATA_MATRIX[,INITIAL_DATE[,LIST_OF_NAMES[,TEX_NAMES]]])

Constructor:
dseries
(DATA_MATRIX[,RANGE_OF_DATES[,LIST_OF_NAMES[,TEX_NAMES]]])
If the data is not read from a file, it can be provided via a \(T \times N\) matrix as the first argument todseries
’ constructor, with \(T\) representing the number of observations on \(N\) variables. The optional second argument, INITIAL_DATE, can be either adates
object representing the period of the first observation or a string which would be used to instantiate adates
object. Its default value isdates('1Y')
. The optional third argument, LIST_OF_NAMES, is a \(N \times 1\) cell of strings with one entry for each variable name. The default name associated with columni
of DATA_MATRIX isVariable_i
. The final argument, TEX_NAMES, is a \(N \times 1\) cell of strings composed of the LaTeX names associated with the variables. The default LaTeX name associated with columni
of DATA_MATRIX isVariable\_i
. If the optional second input argument is a range of dates,dates
object RANGE_OF_DATES, the number of rows in the first argument must match the number of elements RANGE_OF_DATES or be equal to one (in which case the single observation is replicated).
Example
Various ways to create a
dseries
object:do1 = dseries(1999Q3); do2 = dseries('filename.csv'); do3 = dseries([1; 2; 3], 1999Q3, {'var123'}, {'var_{123}'}); >> do1 = dseries(dates('1999Q3')); >> do2 = dseries('filename.csv'); >> do3 = dseries([1; 2; 3], dates('1999Q3'), {'var123'}, {'var_{123}'});
One can easily create subsamples from a
dseries
object using the overloaded parenthesis operator. Ifds
is adseries
object with \(T\) observations andd
is adates
object with \(S<T\) elements, such that \(\min(d)\) is not smaller than the date associated to the first observation inds
and \(\max(d)\) is not greater than the date associated to the last observation, thends(d)
instantiates a newdseries
object containing the subsample defined byd
.A list of the available methods, by alphabetical order, is given below.

Method:
A = abs
(B)
¶
Overloads theabs()
function fordseries
objects. Returns the absolute value of the variables in dseriesobject
B
.Example
>> ts0 = dseries(randn(3,2),'1973Q1',{'A1'; 'A2'},{'A_1'; 'A_2'}); >> ts1 = ts0.abs(); >> ts0 ts0 is a dseries object:  A1  A2 1973Q1  0.67284  1.4367 1973Q2  0.51222  0.4948 1973Q3  0.99791  0.22677 >> ts1 ts1 is a dseries object:  abs(A1)  abs(A2) 1973Q1  0.67284  1.4367 1973Q2  0.51222  0.4948 1973Q3  0.99791  0.22677

Method:
[A, B] = align
(A, B)
¶ If
dseries
objectsA
andB
are defined on different time ranges, this function extendsA
and/orB
with NaNs so that they are defined on the same time range. Note that bothdseries
objects must have the same frequency.Example
>> ts0 = dseries(rand(5,1),dates('2000Q1')); % 2000Q1 > 2001Q1 >> ts1 = dseries(rand(3,1),dates('2000Q4')); % 2000Q4 > 2001Q2 >> [ts0, ts1] = align(ts0, ts1); % 2000Q1 > 2001Q2 >> ts0 ts0 is a dseries object:  Variable_1 2000Q1  0.81472 2000Q2  0.90579 2000Q3  0.12699 2000Q4  0.91338 2001Q1  0.63236 2001Q2  NaN >> ts1 ts1 is a dseries object:  Variable_1 2000Q1  NaN 2000Q2  NaN 2000Q3  NaN 2000Q4  0.66653 2001Q1  0.17813 2001Q2  0.12801

Method:
B = baxter_king_filter
(A, hf, lf, K)
¶
Implementation of the Baxter and King (1999) band pass filter fordseries
objects. This filter isolates business cycle fluctuations with a period of length ranging betweenhf
(high frequency) tolf
(low frequency) using a symmetric moving average smoother with \(2K+1\) points, so that \(K\) observations at the beginning and at the end of the sample are lost in the computation of the filter. The default value forhf
is6
, forlf
is32
, and forK
is12
.Example
% Simulate a component model (stochastic trend, deterministic % trend, and a stationary autoregressive process). e = 0.2*randn(200,1); u = randn(200,1); stochastic_trend = cumsum(e); deterministic_trend = .1*transpose(1:200); x = zeros(200,1); for i=2:200 x(i) = .75*x(i1) + e(i); end y = x + stochastic_trend + deterministic_trend; % Instantiates time series objects. ts0 = dseries(y,'1950Q1'); ts1 = dseries(x,'1950Q1'); % stationary component. % Apply the BaxterKing filter. ts2 = ts0.baxter_king_filter(); % Plot the filtered time series. plot(ts1(ts2.dates).data,'k'); % Plot of the stationary component. hold on plot(ts2.data,'r'); % Plot of the filtered y. hold off axis tight id = get(gca,'XTick'); set(gca,'XTickLabel',strings(ts1.dates(id)));

Method:
C = chain
(A, B)
¶
Merge twodseries
objects along the time dimension. The two objects must have the same number of observed variables, and the initial date inB
must not be posterior to the last date inA
. The returneddseries
object,C
, is built by extendingA
with the cumulated growth factors ofB
.Example
>> ts = dseries([1; 2; 3; 4],dates(`1950Q1')) ts is a dseries object:  Variable_1 1950Q1  1 1950Q2  2 1950Q3  3 1950Q4  4 >> us = dseries([3; 4; 5; 6],dates(`1950Q3')) us is a dseries object:  Variable_1 1950Q3  3 1950Q4  4 1951Q1  5 1951Q2  6 >> chain(ts, us) ans is a dseries object:  Variable_1 1950Q1  1 1950Q2  2 1950Q3  3 1950Q4  4 1951Q1  5 1951Q2  6

Method:
[error_flag, message ] = check
(A)
¶
Sanity check ofdseries
objectA
. Returns1
if there is an error,0
otherwise. The second output argument is a string giving brief informations about the error.

Method:
B = cumprod
(A[, d[, v]])
¶
Overloads the Matlab/Octavecumprod
function fordseries
objects. The cumulated product cannot be computed if the variables indseries
objectA
have NaNs. If adates
objectd
is provided as a second argument, then the method computes the cumulated product with the additional constraint that the variables in thedseries
objectB
are equal to one in periodd
. If a singleobservationdseries
objectv
is provided as a third argument, the cumulated product inB
is normalized such thatB(d)
matchesv
(dseries
objectsA
andv
must have the same number of variables).Example
>> ts1 = dseries(2*ones(7,1)); >> ts2 = ts1.cumprod(); >> ts2 ts2 is a dseries object:  cumprod(Variable_1) 1Y  2 2Y  4 3Y  8 4Y  16 5Y  32 6Y  64 7Y  128 >> ts3 = ts1.cumsum(dates('3Y')); >> ts3 ts3 is a dseries object:  cumprod(Variable_1) 1Y  0.25 2Y  0.5 3Y  1 4Y  2 5Y  4 6Y  8 7Y  16 >> ts4 = ts1.cumsum(dates('3Y'),dseries(pi)); >> ts4 ts4 is a dseries object:  cumprod(Variable_1) 1Y  0.7854 2Y  1.5708 3Y  3.1416 4Y  6.2832 5Y  12.5664 6Y  25.1327 7Y  50.2655

Method:
B = cumsum
(A[, d[, v]])
¶
Overloads the Matlab/Octavecumsum
function fordseries
objects. The cumulated sum cannot be computed if the variables indseries
objectA
have NaNs. If adates
objectd
is provided as a second argument, then the method computes the cumulated sum with the additional constraint that the variables in thedseries
objectB
are zero in periodd
. If a single observationdseries
objectv
is provided as a third argument, the cumulated sum inB
is such thatB(d)
matchesv
(dseries
objectsA
andv
must have the same number of variables).Example
>> ts1 = dseries(ones(10,1)); >> ts2 = ts1.cumsum(); >> ts2 ts2 is a dseries object:  cumsum(Variable_1) 1Y  1 2Y  2 3Y  3 4Y  4 5Y  5 6Y  6 7Y  7 8Y  8 9Y  9 10Y  10 >> ts3 = ts1.cumsum(dates('3Y')); >> ts3 ts3 is a dseries object:  cumsum(Variable_1) 1Y  2 2Y  1 3Y  0 4Y  1 5Y  2 6Y  3 7Y  4 8Y  5 9Y  6 10Y  7 >> ts4 = ts1.cumsum(dates('3Y'),dseries(pi)); >> ts4 ts4 is a dseries object:  cumsum(Variable_1) 1Y  1.1416 2Y  2.1416 3Y  3.1416 4Y  4.1416 5Y  5.1416 6Y  6.1416 7Y  7.1416 8Y  8.1416 9Y  9.1416 10Y  10.1416

Method:
C = eq
(A, B)
Overloads the Matlab/Octaveeq
(equal,==
) operator.dseries
objectsA
andB
must have the same number of observations (say, \(T\)) and variables (\(N\)). The returned argument is a \(T \times N\) matrix of zeros and ones. Element \((i,j)\) ofC
is equal to1
if and only if observation \(i\) for variable \(j\) inA
andB
are the same.Example
>> ts0 = dseries(2*ones(3,1)); >> ts1 = dseries([2; 0; 2]); >> ts0==ts1 ans = 1 0 1

Method:
B = exp
(A)
¶
Overloads the Matlab/Octaveexp
function fordseries
objects.Example
>> ts0 = dseries(rand(10,1)); >> ts1 = ts0.exp();

Method:
l = exist
(A, varname)
¶
Tests if variable exists indseries
objectA
. Returns1
(true) iff variable exists inA
.Example
>> ts = dseries(randn(100,1)); >> ts.exist('Variable_1') ans = 1 >> ts.exist('Variable_2') ans = 0

Method:
C = extract
(A, B[, ...])
¶
Extracts some variables from adseries
objectA
and returns adseries
objectC
. The input arguments followingA
are strings representing the variables to be selected in the newdseries
objectC
. To simplify the creation of subobjects, thedseries
class overloads the curly braces (D = extract (A, B, C)
is equivalent toD = A{B,C}
) and allows implicit loops (defined between a pair of@
symbol, see examples below) or Matlab/Octave’s regular expressions (introduced by square brackets).Example
The following selections are equivalent:
>> ts0 = dseries(ones(100,10)); >> ts1 = ts0{'Variable_1','Variable_2','Variable_3'}; >> ts2 = ts0{'Variable_@1,2,3@'} >> ts3 = ts0{'Variable_[13]$'} >> isequal(ts1,ts2) && isequal(ts1,ts3) ans = 1
It is possible to use up to two implicit loops to select variables:
names = {'GDP_1';'GDP_2';'GDP_3'; 'GDP_4'; 'GDP_5'; 'GDP_6'; 'GDP_7'; 'GDP_8'; ... 'GDP_9'; 'GDP_10'; 'GDP_11'; 'GDP_12'; ... 'HICP_1';'HICP_2';'HICP_3'; 'HICP_4'; 'HICP_5'; 'HICP_6'; 'HICP_7'; 'HICP_8'; ... 'HICP_9'; 'HICP_10'; 'HICP_11'; 'HICP_12'}; ts0 = dseries(randn(4,24),dates('1973Q1'),names); ts0{'@GDP,HICP@_@1,3,5@'} ans is a dseries object:  GDP_1  GDP_3  GDP_5  HICP_1  HICP_3  HICP_5 1973Q1  1.7906  1.6606  0.57716  0.60963  0.52335  0.26172 1973Q2  2.1624  3.0125  0.52563  0.70912  1.7158  1.7792 1973Q3  0.81928  1.5008  1.152  0.2798  0.88568  1.8927 1973Q4  0.03705  0.35899  0.85838  1.4675  2.1666  0.62032

Method:
f = freq
(B)
¶
Returns the frequency of the variables indseries
objectB
.Example
>> ts = dseries(randn(3,2),'1973Q1'); >> ts.freq ans = 4

Method:
D = horzcat
(A, B[, ...])
Overloads thehorzcat
Matlab/Octave’s method fordseries
objects. Returns adseries
objectD
containing the variables indseries
objects passed as inputs:A, B, ...
If the inputs are not defined on the same time ranges, the method adds NaNs to the variables so that the variables are redefined on the smallest common time range. Note that the names in thedseries
objects passed as inputs must be different and these objects must have common frequency.Example
>> ts0 = dseries(rand(5,2),'1950Q1',{'nifnif';'noufnouf'}); >> ts1 = dseries(rand(7,1),'1950Q3',{'nafnaf'}); >> ts2 = [ts0, ts1]; >> ts2 ts2 is a dseries object:  nifnif  noufnouf  nafnaf 1950Q1  0.17404  0.71431  NaN 1950Q2  0.62741  0.90704  NaN 1950Q3  0.84189  0.21854  0.83666 1950Q4  0.51008  0.87096  0.8593 1951Q1  0.16576  0.21184  0.52338 1951Q2  NaN  NaN  0.47736 1951Q3  NaN  NaN  0.88988 1951Q4  NaN  NaN  0.065076 1952Q1  NaN  NaN  0.50946

Method:
B = hpcycle
(A[, lambda])
¶
Extracts the cycle component from adseries
A
object using the Hodrick and Prescott (1997) filter and returns adseries
object,B
. The default value forlambda
, the smoothing parameter, is1600
.Example
% Simulate a component model (stochastic trend, deterministic % trend, and a stationary autoregressive process). e = 0.2*randn(200,1); u = randn(200,1); stochastic_trend = cumsum(e); deterministic_trend = .1*transpose(1:200); x = zeros(200,1); for i=2:200 x(i) = .75*x(i1) + e(i); end y = x + stochastic_trend + deterministic_trend; % Instantiates time series objects. ts0 = dseries(y,'1950Q1'); ts1 = dseries(x,'1950Q1'); % stationary component. % Apply the HP filter. ts2 = ts0.hpcycle(); % Plot the filtered time series. plot(ts1(ts2.dates).data,'k'); % Plot of the stationary component. hold on plot(ts2.data,'r'); % Plot of the filtered y. hold off axis tight id = get(gca,'XTick'); set(gca,'XTickLabel',strings(ts.dates(id)));

Method:
B = hptrend
(A[, lambda])
¶
Extracts the trend component from adseries
A object using the Hodrick and Prescott (1997) filter and returns adseries
object,B
. Default value forlambda
, the smoothing parameter, is1600
.Example
% Using the same generating data process % as in the previous example: ts1 = dseries(stochastic_trend + deterministic_trend,'1950Q1'); % Apply the HP filter. ts2 = ts0.hptrend(); % Plot the filtered time series. plot(ts1.data,'k'); % Plot of the nonstationary components. hold on plot(ts2.data,'r'); % Plot of the estimated trend. hold off axis tight id = get(gca,'XTick'); set(gca,'XTickLabel',strings(ts0.dates(id)));

Method:
f = init
(B)
¶
Returns the initial date indseries
objectB
.Example
>> ts = dseries(randn(3,2),'1973Q1'); >> ts.init ans = <dates: 1973Q1>

Method:
C = insert
(A, B, I)
¶
Inserts variables contained indseries
objectB
indseries
objectA
at positions specified by integer scalars in vectorI
, returns augmenteddseries
objectC
. The integer scalars inI
must take values between `` andA.length()+1
and refers toA
’s column numbers. Thedseries
objectsA
andB
need not be defined over the same time ranges, but it is assumed that they have common frequency.Example: >> ts0 = dseries(ones(2,4),'1950Q1',{'Sly'; 'Gobbo'; 'Sneaky'; 'Stealthy'}); >> ts1 = dseries(pi*ones(2,1),'1950Q1',{'Noddy'}); >> ts2 = ts0.insert(ts1,3) ts2 is a dseries object:  Sly  Gobbo  Noddy  Sneaky  Stealthy 1950Q1  1  1  3.1416  1  1 1950Q2  1  1  3.1416  1  1 >> ts3 = dseries([pi*ones(2,1) sqrt(pi)*ones(2,1)],'1950Q1',{'Noddy';'Tessie Bear'}); >> ts4 = ts0.insert(ts1,[3, 4]) ts4 is a dseries object:  Sly  Gobbo  Noddy  Sneaky  Tessie Bear  Stealthy 1950Q1  1  1  3.1416  1  1.7725  1 1950Q2  1  1  3.1416  1  1.7725  1

Method:
B = isempty
(A)
Overloads the Matlab/octave’sisempty
function. Returns1
ifdseries
objectA
is empty,0
otherwise.
Method:
C = isequal
(A,B)
Overloads the Matlab/octave’sisequal
function. Returns1
ifdseries
objectsA
andB
are identical,0
otherwise.

Method:
B = lag
(A[, p])
¶ Returns lagged time series. Default value of
p
, the number of lags, is1
.Example
>> ts0 = dseries(transpose(1:4),'1950Q1') ts0 is a dseries object:  Variable_1 1950Q1  1 1950Q2  2 1950Q3  3 1950Q4  4 >> ts1 = ts0.lag() ts1 is a dseries object:  lag(Variable_1,1) 1950Q1  NaN 1950Q2  1 1950Q3  2 1950Q4  3 >> ts2 = ts0.lag(2) ts2 is a dseries object:  lag(Variable_1,2) 1950Q1  NaN 1950Q2  NaN 1950Q3  1 1950Q4  2 % dseries class overloads the parenthesis % so that ts.lag(p) can be written more % compactly as ts(p). For instance: >> ts0.lag(1) ans is a dseries object:  lag(Variable_1,1) 1950Q1  NaN 1950Q2  1 1950Q3  2 1950Q4  3
or alternatively:
>> ts0(1) ans is a dseries object:  lag(Variable_1,1) 1950Q1  NaN 1950Q2  1 1950Q3  2 1950Q4  3

Method:
l = last
(B)
¶
Returns the last date indseries
objectB
.Example
>> ts = dseries(randn(3,2),'1973Q1'); >> ts.last ans = <dates: 1973Q3>

Method:
B = lead
(A[, p])
¶
Returns lead time series. Default value ofp
, the number of leads, is1
. As in thelag
method, thedseries
class overloads the parenthesis so thatts.lead(p)
is equivalent tots(p)
.Example
>> ts0 = dseries(transpose(1:4),'1950Q1'); >> ts1 = ts0.lead() ts1 is a dseries object:  lead(Variable_1,1) 1950Q1  2 1950Q2  3 1950Q3  4 1950Q4  NaN >> ts2 = ts0(2) ts2 is a dseries object:  lead(Variable_1,2) 1950Q1  3 1950Q2  4 1950Q3  NaN 1950Q4  NaN
Remark
The overloading of the parenthesis for
dseries
objects, allows to easily create newdseries
objects by copying/pasting equations declared in themodel
block. For instance, if an Euler equation is defined in themodel
block:model; ... 1/C  beta/C(1)*(exp(A(1))*K^(alpha1)+1delta) ; ... end;
and if variables
, ``A
andK
are defined asdseries
objects, then by writing:Residuals = 1/C  beta/C(1)*(exp(A(1))*K^(alpha1)+1delta) ;
outside of the
model
block, we create a newdseries
object, calledResiduals
, for the residuals of the Euler equation (the conditional expectation of the equation defined in themodel
block is zero, but the residuals are non zero).

Method:
B = log
(A)
¶
Overloads the Matlab/Octavelog
function fordseries
objects.Example
>> ts0 = dseries(rand(10,1)); >> ts1 = ts0.log();

Method:
C = merge
(A, B)
¶
Merges twodseries
objectsA
andB
indseries
objectC
. ObjectsA
andB
need to have common frequency but can be defined on different time ranges. If a variable, sayx
, is defined both indseries
objectsA
andB
, then themerge
will select the variablex
as defined in the second input argument,B
.Example
>> ts0 = dseries(rand(3,2),'1950Q1',{'A1';'A2'}) ts0 is a dseries object:  A1  A2 1950Q1  0.42448  0.92477 1950Q2  0.60726  0.64208 1950Q3  0.070764  0.1045 >> ts1 = dseries(rand(3,1),'1950Q2',{'A1'}) ts1 is a dseries object:  A1 1950Q2  0.70023 1950Q3  0.3958 1950Q4  0.084905 >> merge(ts0,ts1) ans is a dseries object:  A1  A2 1950Q1  NaN  0.92477 1950Q2  0.70023  0.64208 1950Q3  0.3958  0.1045 1950Q4  0.084905  NaN >> merge(ts1,ts0) ans is a dseries object:  A1  A2 1950Q1  0.42448  0.92477 1950Q2  0.60726  0.64208 1950Q3  0.070764  0.1045 1950Q4  NaN  NaN

Method:
C = minus
(A, B)
Overloads theminus
(
) operator fordseries
objects, element by element subtraction. If bothA
andB
aredseries
objects, they do not need to be defined over the same time ranges. IfA
andB
aredseries
objects with \(T_A\) and \(T_B\) observations and \(N_A\) and \(N_B\) variables, then \(N_A\) must be equal to \(N_B\) or \(1\) and \(N_B\) must be equal to \(N_A\) or \(1\). If \(T_A=T_B\),isequal(A.init,B.init)
returns1
and \(N_A=N_B\), then theminus
operator will compute for each couple \((t,n)\), with \(1\le t\le T_A\) and \(1\le n\le N_A\),C.data(t,n)=A.data(t,n)B.data(t,n)
. If \(N_B\) is equal to \(1\) and \(N_A>1\), the smallerdseries
object (B
) is “broadcast” across the largerdseries
(A
) so that they have compatible shapes, theminus
operator will subtract the variable defined inB
from each variable inA
. IfB
is a double scalar, then the methodminus
will subtractB
from all the observations/variables inA
. IfB
is a row vector of length \(N_A\), then theminus
method will subtractB(i)
from all the observations of variablei
, for \(i=1,...,N_A\). IfB
is a column vector of length \(T_A\), then theminus
method will subtractB
from all the variables.Example
>> ts0 = dseries(rand(3,2)); >> ts1 = ts0{'Variable_2'}; >> ts0ts1 ans is a dseries object:  minus(Variable_1,Variable_2)  minus(Variable_2,Variable_2) 1Y  0.48853  0 2Y  0.50535  0 3Y  0.32063  0 >> ts1 ts1 is a dseries object:  Variable_2 1Y  0.703 2Y  0.75415 3Y  0.54729 >> ts1ts1.data(1) ans is a dseries object:  minus(Variable_2,0.703) 1Y  0 2Y  0.051148 3Y  0.15572 >> ts1.data(1)ts1 ans is a dseries object:  minus(0.703,Variable_2) 1Y  0 2Y  0.051148 3Y  0.15572

Method:
C = mpower
(A, B)
¶
Overloads thempower
(^
) operator fordseries
objects and computes elementbyelement power.A
is adseries
object withN
variables andT
observations. IfB
is a real scalar, thenmpower(A,B)
returns adseries
objectC
withC.data(t,n)=A.data(t,n)^C
. IfB
is adseries
object withN
variables andT
observations thenmpower(A,B)
returns adseries
objectC
withC.data(t,n)=A.data(t,n)^C.data(t,n)
.Example
>> ts0 = dseries(transpose(1:3)); >> ts1 = ts0^2 ts1 is a dseries object:  power(Variable_1,2) 1Y  1 2Y  4 3Y  9 >> ts2 = ts0^ts0 ts2 is a dseries object:  power(Variable_1,Variable_1) 1Y  1 2Y  4 3Y  27

Method:
C = mrdivide
(A, B)
¶
Overloads themrdivide
(/
) operator fordseries
objects, element by element division (like the./
Matlab/Octave operator). If bothA
andB
aredseries
objects, they do not need to be defined over the same time ranges. IfA
andB
aredseries
objects with \(T_A\) and \(T_B\) observations and \(N_A\) and \(N_B\) variables, then \(N_A\) must be equal to \(N_B\) or \(1\) and \(N_B\) must be equal to \(N_A\) or \(1\). If \(T_A=T_B\),isequal(A.init,B.init)
returns1
and \(N_A=N_B\), then themrdivide
operator will compute for each couple \((t,n)\), with \(1\le t\le T_A\) and \(1\le n\le N_A\),C.data(t,n)=A.data(t,n)/B.data(t,n)
. If \(N_B\) is equal to \(1\) and \(N_A>1\), the smallerdseries
object (B
) is “broadcast” across the largerdseries
(A
) so that they have compatible shapes. In this case themrdivide
operator will divide each variable defined in A by the variable in B, observation per observation. If B is a double scalar, thenmrdivide
will divide all the observations/variables inA
byB
. IfB
is a row vector of length \(N_A\), thenmrdivide
will divide all the observations of variablei
byB(i)
, for \(i=1,...,N_A\). IfB
is a column vector of length \(T_A\), thenmrdivide
will perform a division of all the variables byB
, element by element.Example
>> ts0 = dseries(rand(3,2)) ts0 is a dseries object:  Variable_1  Variable_2 1Y  0.72918  0.90307 2Y  0.93756  0.21819 3Y  0.51725  0.87322 >> ts1 = ts0{'Variable_2'}; >> ts0/ts1 ans is a dseries object:  divide(Variable_1,Variable_2)  divide(Variable_2,Variable_2) 1Y  0.80745  1 2Y  4.2969  1 3Y  0.59235  1

Method:
C = mtimes
(A, B)
¶
Overloads themtimes
(*
) operator fordseries
objects and the Hadammard product (the .* Matlab/Octave operator). If bothA
andB
aredseries
objects, they do not need to be defined over the same time ranges. IfA
andB
aredseries
objects with \(T_A\) and \(_B\) observations and \(N_A\) and \(N_B\) variables, then \(N_A\) must be equal to \(N_B\) or \(1\) and \(N_B\) must be equal to \(N_A\) or \(1\). If \(T_A=T_B\),isequal(A.init,B.init)
returns1
and \(N_A=N_B\), then themtimes
operator will compute for each couple \((t,n)\), with \(1\le t\le T_A\) and \(1\le n\le N_A\),C.data(t,n)=A.data(t,n)*B.data(t,n)
. If \(N_B\) is equal to \(1\) and \(N_A>1\), the smallerdseries
object (B
) is “broadcast” across the largerdseries
(A
) so that they have compatible shapes,mtimes
operator will multiply each variable defined inA
by the variable inB
, observation per observation. IfB
is a double scalar, then the methodmtimes
will multiply all the observations/variables inA
byB
. IfB
is a row vector of length \(N_A\), then themtimes
method will multiply all the observations of variablei
byB(i)
, for \(i=1,...,N_A\). IfB
is a column vector of length \(T_A\), then themtimes
method will perform a multiplication of all the variables byB
, element by element.

Method:
C = ne
(A, B)
Overloads the Matlab/Octavene
(not equal,~=
) operator.dseries
objectsA
andB
must have the same number of observations (say, \(T\)) and variables (\(N\)). The returned argument is a \(T\) by \(N\) matrix of zeros and ones. Element \((i,j)\) ofC
is equal to1
if and only if observation \(i\) for variable \(j\) inA
andB
are not equal.Example
>> ts0 = dseries(2*ones(3,1)); >> ts1 = dseries([2; 0; 2]); >> ts0~=ts1 ans = 0 1 0

Method:
B = nobs
(A)
¶
Returns the number of observations indseries
objectA
.Example
>> ts0 = dseries(randn(10)); >> ts0.nobs ans = 10

Method:
h = plot
(A)
¶ 
Method:
h = plot
(A, B)

Method:
h = plot
(A[, ...])

Method:
h = plot
(A, B[, ...])
Overloads Matlab/Octave’splot
function fordseries
objects. Returns a Matlab/Octave plot handle, that can be used to modify the properties of the plotted time series. If only onedseries
object,A
, is passed as argument, then the plot function will put the associated dates on the xabscissa. If thisdseries
object contains only one variable, additional arguments can be passed to modify the properties of the plot (as one would do with the Matlab/Octave’s version of the plot function). Ifdseries
objectA
contains more than one variable, it is not possible to pass these additional arguments and the properties of the plotted time series must be modified using the returned plot handle and the Matlab/Octaveset
function (see example below). If twodseries
objects,A
andB
, are passed as input arguments, the plot function will plot the variables inA
against the variables inB
(the number of variables in each object must be the same otherwise an error is issued). Again, if each object contains only one variable, additional arguments can be passed to modify the properties of the plotted time series, otherwise the Matlab/Octaveset
command has to be used.Example
Define a
dseries
object with two variables (named by defaultVariable_1
andVariable_2
):>> ts = dseries(randn(100,2),'1950Q1');
The following command will plot the first variable in
ts
:>> plot(ts{'Variable_1'},'k','linewidth',2);
The next command will draw all the variables in
ts
on the same figure:>> h = plot(ts);
If one wants to modify the properties of the plotted time series (line style, colours, …), the set function can be used (see Matlab’s documentation):
>> set(h(1),'k','linewidth',2); >> set(h(2),'r');
The following command will plot
Variable_1
againstexp(Variable_1)
:>> plot(ts{'Variable_1'},ts{'Variable_1'}.exp(),'ok');
Again, the properties can also be modified using the returned plot handle and the
set
function:>> h = plot(ts, ts.exp()); >> set(h(1),'ok'); >> set(h(2),'+r');

Method:
C = plus
(A, B)
Overloads theplus
(+
) operator fordseries
objects, element by element addition. If bothA
andB
aredseries
objects, they do not need to be defined over the same time ranges. IfA
andB
aredseries
objects with \(T_A\) and \(T_B\) observations and \(N_A\) and \(N_B\) variables, then \(N_A\) must be equal to \(N_B\) or \(1\) and \(N_B\) must be equal to \(N_A\) or \(1\). If \(T_A=T_B\),isequal(A.init,B.init)
returns1
and \(N_A=N_B\), then theplus
operator will compute for each couple \((t,n)\), with \(1\le t\le T_A\) and \(1\le n\le N_A\),C.data(t,n)=A.data(t,n)+B.data(t,n)
. If \(N_B\) is equal to \(1\) and \(N_A>1\), the smallerdseries
object (B
) is “broadcast” across the largerdseries
(A
) so that they have compatible shapes, the plus operator will add the variable defined inB
to each variable inA
. IfB
is a double scalar, then the methodplus
will addB
to all the observations/variables inA
. IfB
is a row vector of length \(N_A\), then theplus
method will addB(i)
to all the observations of variablei
, for \(i=1,...,N_A\). IfB
is a column vector of length \(T_A\), then theplus
method will addB
to all the variables.

Method:
C = pop
(A[, B])
Removes variableB
fromdseries
objectA
. By default, if the second argument is not provided, the last variable is removed.Example
>> ts0 = dseries(ones(3,3)); >> ts1 = ts0.pop('Variable_2'); ts1 is a dseries object:  Variable_1  Variable_3 1Y  1  1 2Y  1  1 3Y  1  1

Method:
B = qdiff
(A)
¶ 
Method:
B = qgrowth
(A)
¶
Computes quarterly differences or growth rates.Example
>> ts0 = dseries(transpose(1:4),'1950Q1'); >> ts1 = ts0.qdiff() ts1 is a dseries object:  qdiff(Variable_1) 1950Q1  NaN 1950Q2  1 1950Q3  1 1950Q4  1 >> ts0 = dseries(transpose(1:6),'1950M1'); >> ts1 = ts0.qdiff() ts1 is a dseries object:  qdiff(Variable_1) 1950M1  NaN 1950M2  NaN 1950M3  NaN 1950M4  3 1950M5  3 1950M6  3

Method:
C = remove
(A, B)
¶
Alias for thepop
method with two arguments. Removes variableB
fromdseries
objectA
.Example
>> ts0 = dseries(ones(3,3)); >> ts1 = ts0.remove('Variable_2'); ts1 is a dseries object:  Variable_1  Variable_3 1Y  1  1 2Y  1  1 3Y  1  1
A shorter syntax is available:
remove(ts,'Variable_2')
is equivalent tots{'Variable_2'} = []
([]
can be replaced by any empty object). This alternative syntax is useful if more than one variable has to be removed. For instance:ts{'Variable_@2,3,4@'} = [];
will remove
Variable_2
,Variable_3
andVariable_4
fromdseries
objectts
(if these variables exist). Regular expressions cannot be used but implicit loops can.

Method:
B = rename
(A,oldname,newname)
¶
Rename variableoldname
tonewname
indseries
objectA
. Returns adseries
object.``Example
>> ts0 = dseries(ones(2,2)); >> ts1 = ts0.rename('Variable_1','Stinkly') ts1 is a dseries object:  Stinkly  Variable_2 1Y  1  1 2Y  1  1

Method:
C = rename
(A,newname)
¶
Replace the names inA
with those passed in the cell string arraynewname
.newname
must have the same number of cells asA
hasdseries
. Returns adseries
object.Example
>> ts0 = dseries(ones(2,3)); >> ts1 = ts0.rename({'Tree','Worst','President'}) ts1 is a dseries object:  Bush  Worst  President 1Y  1  1  1 2Y  1  1  1

Method:
save
(A, basename[, format])
¶
Overloads the Matlab/Octavesave
function and savesdseries
objectA
to disk. Possible formats arecsv
(this is the default),m
(Matlab/Octave script), andmat
(Matlab binary data file). The name of the file without extension is specified bybasename
.Example
>> ts0 = dseries(ones(2,2)); >> ts0.save('ts0');
The last command will create a file ts0.csv with the following content:
,Variable_1,Variable_2 1Y, 1, 1 2Y, 1, 1
To create a Matlab/Octave script, the following command:
>> ts0.save('ts0','m');
will produce a file ts0.m with the following content:
% File created on 14Nov2013 12:08:52. FREQ__ = 1; INIT__ = ' 1Y'; NAMES__ = {'Variable_1'; 'Variable_2'}; TEX__ = {'Variable_{1}'; 'Variable_{2}'}; Variable_1 = [ 1 1]; Variable_2 = [ 1 1];
The generated (
csv
,m
, ormat
) files can be loaded when instantiating adseries
object as explained above.

Method:
B = set_names
(A, s1, s2, ...)
¶
Renames variables indseries
objectA
and returns adseries
objectB
with new namess1
,s2
, … The number of input arguments after the first one (dseries
objectA
) must be equal toA.vobs
(the number of variables inA
).s1
will be the name of the first variable inB
,s2
the name of the second variable inB
, and so on.Example
>> ts0 = dseries(ones(1,3)); >> ts1 = ts0.set_names('Barbibul',[],'Barbouille') ts1 is a dseries object:  Barbibul  Variable_2  Barbouille 1Y  1  1  1

Method:
[T, N ] = size
(A[, dim])
¶ Overloads the Matlab/Octave’s
size
function. Returns the number of observations indseries
objectA
(i.e.A.nobs
) and the number of variables (i.e.A.vobs
). If a second input argument is passed, thesize
function returns the number of observations ifdim=1
or the number of variables ifdim=2
(for all other values ofdim
an error is issued).Example
>> ts0 = dseries(ones(1,3)); >> ts0.size() ans = 1 3

Method:
B = tex_rename
(A, name, newtexname)
¶ 
Method:
B = tex_rename
(A, newtexname)
Redefines the tex name of variablename
tonewtexname
indseries
objectA
. Returns adseries
object.With only two arguments
A
andnewtexname
, it redefines the tex names of theA
to those contained innewtexname
. Here,newtexname
is a cell string array with the same number of entries as variables inA
.

Method:
B = uminus
(A)
Overloadsuminus
(
, unary minus) fordseries
object.Example
>> ts0 = dseries(1) ts0 is a dseries object:  Variable_1 1Y  1 >> ts1 = ts0 ts1 is a dseries object:  Variable_1 1Y  1

Method:
D = vertcat
(A, B[, ...])
¶
Overloads thevertcat
Matlab/Octave method fordseries
objects. This method is used to append more observations to adseries
object. Returns adseries
objectD
containing the variables indseries
objects passed as inputs. All the input arguments must bedseries
objects with the same variables defined on different time ranges.Example
>> ts0 = dseries(rand(2,2),'1950Q1',{'nifnif';'noufnouf'}); >> ts1 = dseries(rand(2,2),'1950Q3',{'nifnif';'noufnouf'}); >> ts2 = [ts0; ts1] ts2 is a dseries object:  nifnif  noufnouf 1950Q1  0.82558  0.31852 1950Q2  0.78996  0.53406 1950Q3  0.089951  0.13629 1950Q4  0.11171  0.67865

Method:
B = vobs
(A)
¶
Returns the number of variables indseries
objectA
.Example
>> ts0 = dseries(randn(10,2)); >> ts0.vobs ans = 2
 name – A