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 = 1950Q1thenb = 1951Q2andb = a + 5are identical.
plus unary operator (+)
Increments a date by one period.+1950Q1is identical to1950Q2,++++1950Q1is 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.1951Q2-1950Q1is equal to5). If the second argument is an integerX, subtractsXperiods from the date (e.g.1951Q2-2is equal to1950Q4).
minus unary operator (-)
Subtracts one period to a date.-1950Q1is identical to1949Q4. The unary minus operator is the reciprocal of the unary plus operator,+-1950Q1is identical to1950Q1.
colon operator (:)
Can be used to create a range of dates. For instance,r = 1950Q1:1951Q1creates adatesobject with five elements:1950Q1, 1950Q2, 1950Q3, 1950Q4and1951Q1. By default the increment between each element is one period. This default can be changed using, for instance, the following instruction:1950Q1:2:1951Q1which will instantiate adatesobject with three elements:1950Q1,1950Q3and1951Q1.
horzcat operator ([,])
Concatenates dates objects without removing repetitions. For instance[1950Q1, 1950Q2]is adatesobject with two elements (1950Q1and1950Q2).
vertcat operator ([;])
Same ashorzcatoperator.
eq operator (equal, ==)
Tests if twodatesobjects are equal.+1950Q1==1950Q2returnstrue,1950Q1==1950Q2returnsfalse. If the compared objects have bothn>1elements, theeqoperator returns a column vector,nby1, of zeros and ones.
ne operator (not equal, ~=)
Tests if twodatesobjects are not equal.+1950Q1~=returnsfalsewhile1950Q1~=1950Q2returnstrue. If the compared objects both haven>1elements, theneoperator returns annby1column vector of zeros and ones.
lt operator (less than, <)
Tests if adatesobject preceeds anotherdatesobject. For instance,1950Q1<1950Q3returnstrue. If the compared objects have bothn>1elements, theltoperator returns a column vector,nby1, of zeros and ones.
gt operator (greater than, >)
Tests if adatesobject follows anotherdatesobject. For instance,1950Q1>1950Q3returnsfalse. If the compared objects have bothn>1elements, thegtoperator returns a column vector,nby1, of zeros and ones.
le operator (less or equal, <=)
Tests if adatesobject preceeds anotherdatesobject or is equal to this object. For instance,1950Q1<=1950Q3returnstrue. If the compared objects have bothn>1elements, theleoperator returns a column vector,nby1, of zeros and ones.
ge operator (greater or equal, >=)
Tests if adatesobject follows anotherdatesobject or is equal to this object. For instance,1950Q1>=1950Q3returnsfalse. If the compared objects have bothn>1elements, thegeoperator returns a column vector,nby1, 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
true, a(end)==1951Q1 returns true and a(end-1: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*2array, the years are stored in the first column, the subperiods (1 for annual dates, 1-4 for quarterly dates, 1-12 for monthly dates and 1-52 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
datesobject: all the elements must have common frequency.The
datesclass has the following constructors:-
Constructor:
dates() -
Constructor:
dates(FREQ)
Returns an emptydatesobject with a given frequency (if the constructor is called with one input argument).FREQis a character equal to ’Y’ or ’A’ for annual dates, ’Q’ for quarterly dates, ’M’ for monthly dates or ’W’ for weekly dates. Note thatFREQis 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 thedatesclass. For instance, if one only works with quarterly dates, objectqqcan be created as:qq = dates('Q')
and a
datesobject holding the date2009Q2:d0 = qq(2009,2);
which is much simpler if
datesobjects have to be defined programmatically.
-
Constructor:
dates(STRING) -
Constructor:
dates(STRING, STRING, ...)
Returns adatesobject 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 routineisdatecan 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 resultingdatesobject contains as many elements as arguments to the constructor.
-
Constructor:
dates(DATES) -
Constructor:
dates(DATES, DATES, ...)
Returns a copy of thedatesobjectDATESpassed as input arguments. If more than one argument is provided, they should all bedatesobjects. The number of elements in the instantiateddatesobject is equal to the sum of the elements in thedatespassed as arguments to the constructor.
-
Constructor:
dates(FREQ, YEAR, SUBPERIOD)
whereFREQis a single character (’Y’, ’A’, ’Q’, ’M’, ’W’) or integer (1, 4, 12 or 52) specifying the frequency,YEARandSUBPERIODaren*1vectors of integers. Returns adatesobject withnelements. IfFREQis equal to'Y','A'or1, the third argument is not needed (becauseSUBPERIODis 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
multiplybytwoto an objectXwe write:Y = X.multiplybytwo()
or equivalently:
Y = multiplybytwo(X)
the object
Xis left unchanged, and the objectYis a modified copy ofX.-
Method:
C = append(A, B)¶
AppendsdatesobjectB, or a string that can be interpreted as a date, to thedatesobjectA. IfBis adatesobject 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 aredatesobjects. The optional incrementiis a scalar integer (default value isi=1). This method returns adatesobject 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/Octavedoublefunction.Ais adatesobject. The method returns a floating point representation of adatesobject, 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,12or52).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.datesobjectsAandBmust have the same number of elements (say,n). The returned argument is anby1vector of zeros and ones. The i-th element ofCis equal to1if 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.datesobjectsAandBmust have the same number of elements (say,n). The returned argument is anby1vector of zeros and ones. The i-th element ofCis equal to1if 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.datesobjectsAandBmust have the same number of elements (say,n). The returned argument is anby1vector of zeros and ones. The i-th element ofCis equal to1if 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/Octavehorzcatoperator. All the input arguments must bedatesobjects. The returned argument is adatesobject 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/Octaveintersectfunction. All the input arguments must bedatesobjects. The returned argument is adatesobject gathering all the common dates given in the input arguments. IfAandBare disjointdatesobjects, the function returns an emptydatesobject. Returned dates indatesobjectCare 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/Octavesetdifffunction. All the input arguments must bedatesobjects. The returned argument is adatesobject all dates present inAbut not inB. IfAandBare disjointdatesobjects, the function returnsA. Returned dates indatesobjectCare 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/Octaveisemptyfunction fordatesobjects``.Example
>> A = dates('1950Q1'):dates('1951Q4'); >> A.isempty() ans = 0
-
Method:
C = isequal(A, B)¶
Overloads the MATLAB/Octaveisequalfunction fordatesobjects.Example
>> A = dates('1950Q1'):dates('1951Q4'); >> isequal(A,A) ans = 1
-
Method:
C = le(A, B)¶
Overloads the MATLAB/Octavele(less or equal,<=) operator.datesobjectsAandBmust have the same number of elements (say,n). The returned argument is anby1vector of zeros and ones. The i-th element ofCis equal to1if 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/Octavelengthfunction. Returns the number of dates indatesobjectA(Bis a scalar integer).Example
>> A = dates('1950Q1','1951Q2'); >> A.length() ans = 2
-
Method:
C = lt(A, B)¶
Overloads the MATLAB/Octavelt(less than,<) operator.datesobjectsAandBmust have the same number of elements (say,n). The returned argument is anby1vector of zeros and ones. The i-th element ofCis equal to1if 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/Octavemaxfunction. All input arguments must bedatesobjects. The function returns a single elementdatesobject 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/Octaveminfunction. All input arguments must bedatesobjects. The function returns a single elementdatesobject 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/Octaveminusoperator (-). If both input arguments aredatesobjects, then number of periods betweenAandBis returned (so thatA+C=B). IfBis a vector of integers, the minus operator shifts thedatesobject byBperiods backward.Example
>> d1 = dates('1950Q1','1950Q2','1960Q1'); >> d2 = dates('1950Q3','1950Q4','1960Q1'); >> ee = d2-d1 ee = 2 2 0 >> d1-(-ee) ans = <dates: 1950Q3, 1950Q4, 1960Q1>
-
Method:
C = ne(A, B)¶
Overloads the MATLAB/Octavene(not equal,~=) operator.datesobjectsAandBmust have the same number of elements (say,n) or one of the inputs must be a single elementdatesobject. The returned argument is anby1vector of zeros and ones. The i-th element ofCis equal to1if 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/Octaveplusoperator (+). If both input arguments aredatesobjects, then the method combinesAandBwithout removing repetitions. IfBis a vector of integers, theplusoperator shifts thedatesobject byBperiods forward.Example: >> d1 = dates('1950Q1','1950Q2')+dates('1960Q1'); >> d2 = (dates('1950Q1','1950Q2')+2)+dates('1960Q1'); >> ee = d2-d1; ee = 2 2 0 >> d1+ee ans = <dates: 1950Q3, 1950Q4, 1960Q1>
-
Method:
C = pop(A)¶ -
Method:
C = pop(A,B)
Pop method fordatesclass. If only one input is provided, the method removes the last element of adatesobject. If a second input argument is provided, a scalar integer between1andA.length(), the method removes element numberBfromdatesobjectA.Example
>> d1 = dates('1950Q1','1950Q2'); >> d1.pop() ans = <dates: 1950Q1> >> d1.pop(1) ans = <dates: 1950Q2>
-
Method:
B = sort(A)¶
Sort method fordatesobjects. Returns adatesobject 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 adatesobject 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/Octaveunionfunction. Returns adatesobject with elements sorted by increasing order (repetitions are removed, to keep the repetitions use thehorzcatorplusoperators).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/Octaveuniquefunction. Returns adatesobject 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 adatesobject 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/Octavedseriesclass handles time series data. As any MATLAB/Octave statements, this class can be used in a Dynare’s mod file. Adseriesobject has six members:Members: - name – A
nobs*1cell of strings or anobs*pcharacter array, the names of the variables. - tex – A
nobs*1cell of strings or anobs*pcharacter array, the tex names of the variables. - dates (dates) – An object with
nobselements, the dates of the sample. - data (double) – A
nobsbyvobsarray, the data. - ops – The history of operations on the variables.
- tags – The user-defined tags on the variables.
data,name,texare private members. The following constructors are available:-
Constructor:
dseries() -
Constructor:
dseries(INITIAL_DATE)
Instantiates an emptydseriesobject with, if defined, an initial date given by the single elementdatesobject INITIAL_DATE.
-
Constructor:
dseries(FILENAME[, INITIAL_DATE])
Instantiates and populates adseriesobject with a data file specified by FILENAME, a string passed as input. Valid file types are.m,.mat,.csvand.xls/.xlsx(Octave only supports.xlsxfiles and the io package from Octave-Forge must be installed). A typical.mfile will have the following form:INIT__ = '1994Q3'; NAMES__ = {'azert';'yuiop'}; TEX__ = {'azert';'yuiop'}; azert = randn(100,1); yuiop = randn(100,1);
If a
.matfile is used instead, it should provide the same informations. Note that theINIT__variable can be either adatesobject or a string which could be used to instantiate the samedatesobject. IfINIT__is not provided in the.mator.mfile, the initial is by default set equal todates('1Y'). If a second input argument is passed to the constructor,datesobject 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 adatesobject representing the period of the first observation or a string which would be used to instantiate adatesobject. 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 columniof 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 columniof DATA_MATRIX isVariable\_i. If the optional second input argument is a range of dates,datesobject 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).
-
Constructor:
dseries(TABLE) Creates a
dseriesobject given the MATLAB Table provided as the sole argument. It is assumed that the first column of the table contains the dates of thedseriesand the first row contains the names. NB: This feature is not available under Octave or MATLAB R2013a or earlier.
Example
Various ways to create a
dseriesobject: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
dseriesobject using the overloaded parenthesis operator. Ifdsis adseriesobject with \(T\) observations anddis adatesobject with \(S<T\) elements, such that \(\min(d)\) is not smaller than the date associated to the first observation indsand \(\max(d)\) is not greater than the date associated to the last observation, thends(d)instantiates a newdseriesobject containing the subsample defined byd.A list of the available methods, by alphabetical order, is given below.
-
Method:
A = abs(B)¶
Overloads theabs()function fordseriesobjects. Returns the absolute value of the variables in dseriesobjectB.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
dseriesobjectsAandBare defined on different time ranges, this function extendsAand/orBwith NaNs so that they are defined on the same time range. Note that bothdseriesobjects 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 fordseriesobjects. 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 forhfis6, forlfis32, and forKis12.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(i-1) + u(i); end y = x + stochastic_trend + deterministic_trend; % Instantiates time series objects. ts0 = dseries(y,'1950Q1'); ts1 = dseries(x,'1950Q1'); % stationary component. % Apply the Baxter-King 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 twodseriesobjects along the time dimension. The two objects must have the same number of observed variables, and the initial date inBmust not be posterior to the last date inA. The returneddseriesobject,C, is built by extendingAwith 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 ofdseriesobjectA. Returns1if there is an error,0otherwise. The second output argument is a string giving brief informations about the error.
-
Method:
B = cumprod(A[, d[, v]])¶
Overloads the MATLAB/Octavecumprodfunction fordseriesobjects. The cumulated product cannot be computed if the variables indseriesobjectAhave NaNs. If adatesobjectdis provided as a second argument, then the method computes the cumulated product with the additional constraint that the variables in thedseriesobjectBare equal to one in periodd. If a single-observationdseriesobjectvis provided as a third argument, the cumulated product inBis normalized such thatB(d)matchesv(dseriesobjectsAandvmust 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.cumprod(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.cumprod(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/Octavecumsumfunction fordseriesobjects. The cumulated sum cannot be computed if the variables indseriesobjectAhave NaNs. If adatesobjectdis provided as a second argument, then the method computes the cumulated sum with the additional constraint that the variables in thedseriesobjectBare zero in periodd. If a single observationdseriesobjectvis provided as a third argument, the cumulated sum inBis such thatB(d)matchesv(dseriesobjectsAandvmust 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.dseriesobjectsAandBmust 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)\) ofCis equal to1if and only if observation \(i\) for variable \(j\) inAandBare 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/Octaveexpfunction fordseriesobjects.Example
>> ts0 = dseries(rand(10,1)); >> ts1 = ts0.exp();
-
Method:
l = exist(A, varname)¶
Tests if variable exists indseriesobjectA. 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 adseriesobjectAand returns adseriesobjectC. The input arguments followingAare strings representing the variables to be selected in the newdseriesobjectC. To simplify the creation of sub-objects, thedseriesclass 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_[1-3]$'} >> 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 indseriesobjectB.Example
>> ts = dseries(randn(3,2),'1973Q1'); >> ts.freq ans = 4
-
Method:
D = horzcat(A, B[, ...])
Overloads thehorzcatMATLAB/Octave’s method fordseriesobjects. Returns adseriesobjectDcontaining the variables indseriesobjects 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 thedseriesobjects 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 adseriesAobject using the Hodrick and Prescott (1997) filter and returns adseriesobject,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(i-1) + u(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 adseriesA object using the Hodrick and Prescott (1997) filter and returns adseriesobject,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 indseriesobjectB.Example
>> ts = dseries(randn(3,2),'1973Q1'); >> ts.init ans = <dates: 1973Q1>
-
Method:
C = insert(A, B, I)¶
Inserts variables contained indseriesobjectBindseriesobjectAat positions specified by integer scalars in vectorI, returns augmenteddseriesobjectC. The integer scalars inImust take values between `` andA.length()+1and refers toA’s column numbers. ThedseriesobjectsAandBneed 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’sisemptyfunction. Returns1ifdseriesobjectAis empty,0otherwise.-
Method:
C = isequal(A,B)
Overloads the MATLAB/octave’sisequalfunction. Returns1ifdseriesobjectsAandBare identical,0otherwise.
-
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 indseriesobjectB.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 thelagmethod, thedseriesclass 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
dseriesobjects, allows to easily create newdseriesobjects by copying/pasting equations declared in themodelblock. For instance, if an Euler equation is defined in themodelblock:model; ... 1/C - beta/C(1)*(exp(A(1))*K^(alpha-1)+1-delta) ; ... end;
and if variables
, ``AandKare defined asdseriesobjects, then by writing:Residuals = 1/C - beta/C(1)*(exp(A(1))*K^(alpha-1)+1-delta) ;
outside of the
modelblock, we create a newdseriesobject, calledResiduals, for the residuals of the Euler equation (the conditional expectation of the equation defined in themodelblock is zero, but the residuals are non zero).
-
Method:
B = log(A)¶
Overloads the MATLAB/Octavelogfunction fordseriesobjects.Example
>> ts0 = dseries(rand(10,1)); >> ts1 = ts0.log();
-
Method:
C = merge(A, B)¶
Merges twodseriesobjectsAandBindseriesobjectC. ObjectsAandBneed to have common frequency but can be defined on different time ranges. If a variable, sayx, is defined both indseriesobjectsAandB, then themergewill select the variablexas defined in the second input argument,B, except for the NaN elements inBif corresponding elements inA(ie same periods) are well defined numbers.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 fordseriesobjects, element by element subtraction. If bothAandBaredseriesobjects, they do not need to be defined over the same time ranges. IfAandBaredseriesobjects 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)returns1and \(N_A=N_B\), then theminusoperator 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 smallerdseriesobject (B) is “broadcast” across the largerdseries(A) so that they have compatible shapes, theminusoperator will subtract the variable defined inBfrom each variable inA. IfBis a double scalar, then the methodminuswill subtractBfrom all the observations/variables inA. IfBis a row vector of length \(N_A\), then theminusmethod will subtractB(i)from all the observations of variablei, for \(i=1,...,N_A\). IfBis a column vector of length \(T_A\), then theminusmethod will subtractBfrom all the variables.Example
>> ts0 = dseries(rand(3,2)); >> ts1 = ts0{'Variable_2'}; >> ts0-ts1 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 >> ts1-ts1.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 fordseriesobjects and computes element-by-element power.Ais adseriesobject withNvariables andTobservations. IfBis a real scalar, thenmpower(A,B)returns adseriesobjectCwithC.data(t,n)=A.data(t,n)^C. IfBis adseriesobject withNvariables andTobservations thenmpower(A,B)returns adseriesobjectCwithC.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 fordseriesobjects, element by element division (like the./MATLAB/Octave operator). If bothAandBaredseriesobjects, they do not need to be defined over the same time ranges. IfAandBaredseriesobjects 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)returns1and \(N_A=N_B\), then themrdivideoperator 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 smallerdseriesobject (B) is “broadcast” across the largerdseries(A) so that they have compatible shapes. In this case themrdivideoperator will divide each variable defined in A by the variable in B, observation per observation. If B is a double scalar, thenmrdividewill divide all the observations/variables inAbyB. IfBis a row vector of length \(N_A\), thenmrdividewill divide all the observations of variableibyB(i), for \(i=1,...,N_A\). IfBis a column vector of length \(T_A\), thenmrdividewill 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 fordseriesobjects and the Hadammard product (the .* MATLAB/Octave operator). If bothAandBaredseriesobjects, they do not need to be defined over the same time ranges. IfAandBaredseriesobjects 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)returns1and \(N_A=N_B\), then themtimesoperator 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 smallerdseriesobject (B) is “broadcast” across the largerdseries(A) so that they have compatible shapes,mtimesoperator will multiply each variable defined inAby the variable inB, observation per observation. IfBis a double scalar, then the methodmtimeswill multiply all the observations/variables inAbyB. IfBis a row vector of length \(N_A\), then themtimesmethod will multiply all the observations of variableibyB(i), for \(i=1,...,N_A\). IfBis a column vector of length \(T_A\), then themtimesmethod will perform a multiplication of all the variables byB, element by element.
-
Method:
C = ne(A, B)
Overloads the MATLAB/Octavene(not equal,~=) operator.dseriesobjectsAandBmust 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)\) ofCis equal to1if and only if observation \(i\) for variable \(j\) inAandBare 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 indseriesobjectA.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’splotfunction fordseriesobjects. Returns a MATLAB/Octave plot handle, that can be used to modify the properties of the plotted time series. If only onedseriesobject,A, is passed as argument, then the plot function will put the associated dates on the x-abscissa. If thisdseriesobject 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). IfdseriesobjectAcontains 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/Octavesetfunction (see example below). If twodseriesobjects,AandB, are passed as input arguments, the plot function will plot the variables inAagainst 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/Octavesetcommand has to be used.Example
Define a
dseriesobject with two variables (named by defaultVariable_1andVariable_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
tson 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_1againstexp(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
setfunction:>> h = plot(ts, ts.exp()); >> set(h(1),'ok'); >> set(h(2),'+r');
-
Method:
C = plus(A, B)
Overloads theplus(+) operator fordseriesobjects, element by element addition. If bothAandBaredseriesobjects, they do not need to be defined over the same time ranges. IfAandBaredseriesobjects 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)returns1and \(N_A=N_B\), then theplusoperator 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 smallerdseriesobject (B) is “broadcast” across the largerdseries(A) so that they have compatible shapes, the plus operator will add the variable defined inBto each variable inA. IfBis a double scalar, then the methodpluswill addBto all the observations/variables inA. IfBis a row vector of length \(N_A\), then theplusmethod will addB(i)to all the observations of variablei, for \(i=1,...,N_A\). IfBis a column vector of length \(T_A\), then theplusmethod will addBto all the variables.
-
Method:
C = pop(A[, B])
Removes variableBfromdseriesobjectA. 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 thepopmethod with two arguments. Removes variableBfromdseriesobjectA.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_3andVariable_4fromdseriesobjectts(if these variables exist). Regular expressions cannot be used but implicit loops can.
-
Method:
B = rename(A,oldname,newname)¶
Rename variableoldnametonewnameindseriesobjectA. Returns adseriesobject.``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 inAwith those passed in the cell string arraynewname.newnamemust have the same number of cells asAhasdseries. Returns adseriesobject.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/Octavesavefunction and savesdseriesobjectAto 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 14-Nov-2013 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 adseriesobject as explained above.
-
Method:
B = set_names(A, s1, s2, ...)¶
Renames variables indseriesobjectAand returns adseriesobjectBwith new namess1,s2, … The number of input arguments after the first one (dseriesobjectA) must be equal toA.vobs(the number of variables inA).s1will be the name of the first variable inB,s2the 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
sizefunction. Returns the number of observations indseriesobjectA(i.e.A.nobs) and the number of variables (i.e.A.vobs). If a second input argument is passed, thesizefunction returns the number of observations ifdim=1or the number of variables ifdim=2(for all other values ofdiman 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 variablenametonewtexnameindseriesobjectA. Returns adseriesobject.With only two arguments
Aandnewtexname, it redefines the tex names of theAto those contained innewtexname. Here,newtexnameis a cell string array with the same number of entries as variables inA.
-
Method:
B = uminus(A)
Overloadsuminus(-, unary minus) fordseriesobject.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 thevertcatMATLAB/Octave method fordseriesobjects. This method is used to append more observations to adseriesobject. Returns adseriesobjectDcontaining the variables indseriesobjects passed as inputs. All the input arguments must bedseriesobjects 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 indseriesobjectA.Example
>> ts0 = dseries(randn(10,2)); >> ts0.vobs ans = 2
- name – A